CUDA學習之六(裝置執行時元件)

2021-05-22 12:48:52 字數 2032 閱讀 6413

裝置執行時元件僅可用於裝置函式。

1.數學函式

裝置執行時元件中存在準確性略低而速度更快的版本;其名稱相同,但帶有乙個

_字首(如

_sinf(x)

)。編譯器有乙個

(-use_fast_math)

選項,用於強制要求所有函式編譯其準確性略低的版本(如果存在)。

2.同步函式

void __syncthreads();

同步塊中的所有執行緒。一旦所有執行緒均達到此同步點,執行將正常恢復。

_syncthreads()

用於調整同乙個塊的執行緒之間的通訊。在乙個塊內的某些執行緒訪問共享或全域性儲存器中的相同位址時,部分訪問操作可能存在寫入後讀取、讀取後寫入或寫入後寫入之類的風險。可通過在這些訪問操作間同步執行緒來避免這些資料風險。

_syncthreads()

允許在條件**中使用,但僅當條件估值在整個執行緒塊中都相同時才允許使用,否則**執行將有可能掛起,或者出現意料之外的***。

3.紋理函式

來自線性儲存器的紋理

:對於來自線性儲存器的紋理,通過

tex1dfetch()

系列函式訪問紋理,示例如下:

template

type tex1dfetch(

texturetexref,

int x);

float tex1dfetch(

texturetexref,

int x);

float tex1dfetch(

texturetexref,

int x);

float tex1dfetch(

texturetexref,

int x);

float tex1dfetch(

texturetexref,

int x);

這些函式會使用紋理座標

x 獲取繫結到紋理參考

texref

的線性儲存器區域。不支援紋理過濾和定址模式。對於整型來說,這些函式可選擇將整型轉變為單精度浮點型別。

除了上述函式以外,還支援

2 元組和

4 元組,示例如下:

float4 tex1dfetch(

texturetexref,

int x);

以上示例將使用紋理座標

x 獲取繫結到紋理參考

texref

的線性儲存器。

來自cuda

陣列的紋理:

對於來自

cuda

陣列的紋理,可通過

tex1d()

、tex2d()

、tex3d()

訪問紋理:

template

type tex1d(texturetexref,

float x);

template

type tex2d(texturetexref,

float x, float y);

template

type tex3d(texturetexref,

float x, float y, float z);

這些函式將使用紋理座標x、

y 和z 獲取繫結到紋理參考

texref

的cuda

陣列。紋理參考的不變(編譯時)和可變(執行時)屬性相互結合,共同確定座標的解釋方式、在紋理獲取過程中發生的處理以及紋理獲取所提供的返回值。

4.原子函式

原子函式對位於全域性或共享儲存器內的乙個

32 位或

64 位字執行讀取-修改

-寫入原子操作。例如,

atomicadd()

將在全域性或共享儲存器內的某個位址讀取

32 位字,將其與乙個整型相加,並將結果寫回同一位址。之所以說這樣的操作是原子的,是因為它可在不干擾其他執行緒的前提下執行。換句話說,在操作完成中,其他任何執行緒都無法訪問此位址。

原子操作僅適用於有符號和無符號整型(但

atomicexch()

是乙個例外情況,它支援單精度浮點數字)。

CUDA學習之五(通用執行時元件)

主機和裝置函式均可使用通用執行時元件。內建向量型別 char1 uchar1 char2 uchar2 char3 uchar3 char4 uchar4 short1 ushort1 short2 ushort2 short3 ushort3 short4 ushort4 int1 uint1 i...

研磨Flink之執行時元件

一 作業管理器 jobmanager 1 控制乙個應用程式執行的主程序,每個應用程式都會被乙個不同的jobmanager所控制。2 jobmanager會先接收到應用程式,應用程式包括 作業圖 jobgraph 邏輯資料流圖和打包的所有類庫和其他資源的jar包。3 jobmanager會把jobgr...

CUDA中記錄執行時間 GPU端

事件event cudaevent t start,stop cudaeventcreate start cudaeventcreate stop cudaeventrecord start,0 cudaeventrecord stop,0 float costtime cudaeventelaps...