[英]About Open MP and cudaSetDevice()
有誰知道cudaSetDevice
的以下用法是否正確? 我想在任何主機線程中隨時重復調用在不同設備上創建的資源; 有沒有辦法在CUDA中做到這一點?
cudaSetDevice(0);
/...create cuda streams and do some memory allocation on gpu.../
cudaSetDevice(1);
/...create cuda streams and do some memory allocation on gpu.../
#pragma omp parallel num_threads(2)
{
int omp_threadID=omp_get_thread_num();
....
if (omp_threadID==0)
{
cudaSetDevice(0);
/...calling streams/memory created on device 0.../
}
else
{
cudaSetDevice(1);
/...calling streams/memory created on device 1.../
};
};
是的,這樣的事情應該有效。 確保您在設備0上創建的所有內容,僅在OpenMP線程0中使用,同樣在設備1和線程1中使用。
您可能還想查看CUDA OpenMP示例代碼 ,該代碼演示了如何使用OpenMP線程來管理單個設備。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.