0

テキストファイルを読み込んで配列に保存したい。次に、配列をホストからデバイスに転送し、共有メモリに格納します。以下のコードを書きましたが、グローバルメモリを使用した場合に比べて実行時間が長くなりました。理由がわかりませんか?また、誰かが定数メモリを使用してこのコードを書くのを手伝ってくれると助かります。

__global__ void deviceFunction(char *pBuffer,int pSize){
    extern __shared__ char p[];
    int i;
    for(i=0;i<pSize;i++)}
        p[i] = pBuffer[i];
    }
}
int main(void){

    cudaMalloc((void**)&pBuffer_device,sizeof(char)*pSize);
    cudaMemcpy(pBuffer_device,pBuffer,sizeof(char)*pSize,cudaMemcpyHostTo Device);
    kernel<<<BLOCK,THREAD>>>(pBuffer_device,pSize);

}
4

1 に答える 1

1
  1. おそらく、ブロック内のすべてのスレッドが、0 から pSize までの範囲の同じ共有メモリ アドレスを同時に書き込もうとするためです。
    グローバル メモリ データの共有メモリへのスレッド共同読み込みを使用
    ます。
于 2012-03-17T16:33:05.960 に答える