[英]SYCL DPC++ auto detect device
這個問題可能是微不足道的,不幸的是我還沒有找到我正在尋找的答案。
我使用dpct
遷移工具將一些 cuda 代碼移植到英特爾 DPC++,然后我進一步優化了我需要的一切,最終擺脫了與dpct
相關的一切,期待超級方便
dpct::get_current_device();
這基本上解決了我之前必須放置編譯選項來選擇合適的設備並使用 Makefile 等控制它們的所有痛苦。
有沒有辦法在不使用 dpct 的情況下做到這一點? 我查看了 dpct 是如何做到這一點的( 在這里),但它看起來非常不簡單,它依賴於其他內部函數。
有什么辦法可以避免這種情況嗎?
從您的問題中,我並不完全清楚您是要 1) 抓住設備的手柄還是 2) 選擇要在其上運行東西的設備,所以我會嘗試回答這兩個問題。 請注意, dpct::get_current_device()
實際上並沒有選擇設備,它只是返回您在程序之前已經選擇的設備。
sycl::queue
開始,我們使用它來提交內核、內存復制操作等。從sycl::queue
可以訪問您的設備:sycl::device d = q.get_device();
sycl::queue q{sycl::gpu_selector()};
sycl::queue q{sycl::cpu_selector()};
sycl::queue q{sycl::default_selector()};
請注意,最后一個選項( sycl::default_selector()
)可能是dpct
當前正在為您做的事情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.