2010-12-08 100 views
1

我在CUDA中使用float2數據類型時遇到了合併讀取問題。CUDA float2合併

我試圖做一個簡單的例子來運行在視覺分析器,但它總是返回非合併讀取。如果有人能夠對此有所瞭解,我會非常感激,謝謝。

#include <stdio.h> 
#include <cuda_runtime_api.h> 

__global__ void kernel(float2 *in, float2 *out) { 
     int idx=blockIdx.x*blockDim.x+threadIdx.x; 
     float2 d=in[idx]; 
     d.x = 100.f; 

     out[idx] = d; 
} 

int main() { 
    const int dataSize=32; 
    float2 *in; 
    cudaMalloc((void**)&in,dataSize*sizeof(float2)); 

    float2 *out; 
    cudaMalloc((void**)&out,dataSize*sizeof(float2)); 
    kernel<<<1,32>>>(in,out); 
    return 0; 
} 
+0

哪個卡,sm架構? – fabrizioM 2010-12-08 19:23:29

回答

1

我在NVIDIA論壇上問過這個問題。在調試模式下,加載矢量未被優化。 Forums