簡體   English   中英

關於Open MP和cudaSetDevice()

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM