这个问题可能是微不足道的,不幸的是我还没有找到我想要的答案。
我使用dpct迁移工具将一些cuda代码移植到Intel DPC++,然后我进一步优化了所需的一切,并最终摆脱了与dpct相关的所有东西,期待超级方便。
dpct::get_current_device();这基本上解决了之前的所有痛苦,我不得不在编译选项中选择合适的设备,并使用Makefiles等进行控制。
在不使用dpct的情况下,有办法做到这一点吗?我看过dpct是如何做到这一点的(这里),但它看起来非常不简单,并且依赖于其他内部函数。
有什么办法可以避免这种情况吗?
发布于 2022-06-20 10:21:12
从你的问题中我不太清楚你是想抓住你的设备的一个句柄,还是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当前为您所做的。
https://stackoverflow.com/questions/72632297
复制相似问题