- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
有谁知道 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/
我想在父进程中调用 cudaGetDeviceCount(&N),然后创建 N 子进程,每个 GPU 找到一个,并传递给每个进程(通过命令-行)一个唯一的 GPU 编号,因此实际上会有一个(且只有一个
假设我有一个与设备 i 关联的事件 CUDA 上下文,我现在调用cudaSetDevice(i) .发生什么了? : 没有? 主上下文替换栈顶? 主要上下文被压入堆栈? 它实际上似乎是不一致的。我已经
运行时 API 函数 cudaSetDevice 的 CUDA 驱动程序 API 等价物是什么? 我正在研究驱动程序 API,但找不到等效的函数。我能做的是 cuDeviceGet(&cuDevice
我有一个复杂的基于 CUDA 的 Linux 应用程序。它在配备一张 NVIDIA GTX 560 Ti 卡(1 GB 内存)的 i7 机器上运行,使用 Ubuntu 12.04 (x86_64) 和
在我的系统中,我同时对多个 GPU 进行编程。我需要调用cudaSetDevice()在调用 cudaStreamSynchronize() 之前? 创建 cudaStream_t 时对象,我在调用
有谁知道 cudaSetDevice 的以下用法是否正确?我想随时在任何主机线程中重复调用在不同设备上创建的资源;有没有办法在 CUDA 中做到这一点? cudaSetDevice(0); /..
我知道 CUDA 会在第一次 API 调用时进行初始化,但花费的时间太多了。即使在单独的 cudaSetDevice 之后 测试程序: 使用以下工具构建的相同程序:CUDA 7.0 (compute_
我是一名优秀的程序员,十分优秀!