gpt4 book ai didi

c++ - 关于 Open MP 和 cudaSetDevice()

转载 作者:太空狗 更新时间:2023-10-29 23:05:52 25 4
gpt4 key购买 nike

有谁知道 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 Sample Code ,它演示了如何使用 OpenMP 线程分别管理单个设备。

关于c++ - 关于 Open MP 和 cudaSetDevice(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17602855/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com