0

そこで、threadfence の使い方を知りたい、threadfence に関するサンプルコードを読みたい。

threadfence() のサンプルコードを見せてください

CUDA5.5ではメモリにアクセスしたい場合はデバイス側のカーネル機能で、排他制御を行いたいと考えています。
「() __threadfence」というものを使えば排他制御ができることを知りましたが、どうやって使えばいいのかわかりません。

· 何を含めることができますか?
(今、"__threadfence()" は定義されていないエラーが発生します 識別 )
· ソース コードのどこにコードを記述しますか。以下のコードで Log_d にアクセスしたい場所を排他的に制御したいと思ったからです。

他のスレッドが「ロック開始」~「ロック停止」の間の Log_d のメモリに対してアクセスできないようにしたいのは、例えば以下のコード。

CPU 側のコードでブロックとスレッドを定義しました。ブロック: 1,1,1 およびスレッド: 256,1,1

__global__ void matrix_vector_multi_gpu_1_256(float *A_d, float *B_d, float *C_d, float *Log_d){
    int i;

    A_d[threadIdx.x]=0.0F;

    for(i=0;i<N;i++){
        A_d[threadIdx.x]=A_d[threadIdx.x]+B_d[threadIdx.x*N+i]*C_d[i];
    }
    //lock Start about Log_d
    //__threadfence();
    for(int j=0;j<N;j++){
        if(Log_d[j]==0){
            Log_d[j]=threadIdx.x + 1;
            break;
        }
    }
    //Stop the lock


}
4

1 に答える 1