ピン留めされたメモリの作成について質問があります。
現在、CUDAを使用して大量のデータを処理しています。
実行時間を短縮するには、メモリコピーとカーネル起動をオーバーラップさせる必要があることがわかりました。
いくつかのテキストと Web ページを検索した後、メモリ コピーとカーネル起動が重複するため、ホスト メモリを固定メモリに割り当てる cudaMallocHost を使用してホスト メモリを割り当てる必要があることに気付きました。
ホストで整数型や配列型を使う場合、固定メモリを作るのは簡単でした。
ちょうどこのような...
cudaStream_t* streams = (cudaStream_t*)malloc(MAX_num_stream * sizeof(cudaStream_t));
for(i=0; i<MAX_num_stream; i++)
cudaStreamCreate(&(streams[i]));
cudaMallocHost(&departure, its_size);
for(n=1; ... ; n++){
cudaMemcpyAsync( ... streams[n]);
kernel <<< ... , ... , ... , streams[n] >>> (...);
}
しかし、私の場合、私のホストの出発メモリはバーターの種類によって設定されています。
また、cudaMallocHost を使用して vector-type-host-memory を固定メモリに変換する方法がどこにも見つかりません。
この問題を解決するために私を助けたり、アドバイスをしたりしてください。私の拙い英語を読んでくれてありがとう。ありがとう。