我對固定內存有疑問。如何使矢量類型值固定在cuda中的內存
現在我正在使用CUDA來處理大量的數據。
爲了減少運行時間,我發現有必要使內存複製和內核啓動重疊。
搜索一些文本和網頁後,重疊內存複製和內核啓動,我注意到有必要通過使用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] >>> (...);
}
但在我而言,我的主人離去內存由vertor類型設置。
而我無法找到任何方式通過使用cudaMallocHost將矢量類型主機內存轉換爲固定內存。
幫我解答一下這個問題或者給點建議。 感謝您閱讀我可憐的英語。謝謝。
「矢量類型」是什麼意思?你的意思是C++'std :: vector',還是別的? – talonmies
是的。我的意思是std :: vector。 – Umbrella