變數使用:

__device__ 變數就算看的到也吃不到,真是機車的關鍵字。
__global__ 函數要使用的值如果不是用參數方式傳入,就要是__constant__或是texture memory才行,
    也就是說__global__ 函數看的到__device__ 變數,但不能使用,一般cuda的__global__變數可以用參數的方式被使用。
重點就是__global__ 函數要傳很多參數進去...,不會變的參數最好用__constant__變數的方式傳入,可以省暫存器。

迴圈部份:
int idx = blockDim.x * blockIdx.x + threadIdx.x;
int inc = blockDim.x * gridDim.x;
for (int i = idx ; i < num ; i += inc)
{}
只有__global__函數才行這樣遍歷,__device__不行,
原理同雙迴圈。

計算部份:
cuda有蠻嚴重的浮點數誤差(vs cpu),所以浮點數的計算上常與cpu的結果差蠻多的。

讓地獄深紅的天亮 發表在 痞客邦 PIXNET 留言(0) 人氣()