2010-12-08 8 views
1

CUDAでfloat2データ型を使用しているときに読み込みを合併できません。CUDA float2 coalescing

私はビジュアルプロファイラで実行する簡単な例を作成しようとしましたが、常に非一貫性のある読み込みを返します。もし誰かがこれにいくつかの光を当てることができれば、本当に感謝します、ありがとう。

#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

+0

8800 GTXおよびCompute 1.0 – Ljdawson

答えて

1

私はNVIDIAフォーラムでこの質問をしました。デバッグモードではローディングベクタが最適化されていません。 Forums