【发布时间】:2018-12-09 09:07:37
【问题描述】:
我有两个要使用线程运行的函数。
1) CPU 函数,我可以使用它加入线程:
thread t1(vector_add, p->iNum1, p->iNum2, p->iNumAns, p->flag);
t1.join();
2) 和一个 GPU 内核
vectorAdd_gpu <<<blocksPerGrid, threadsPerBlock >>>(s.a1, s.a2, s.a2, s.flag);
但我的问题是如何使用线程调用GPU内核调用并加入它,以便它可以与CPU功能同时运行。
vectorAdd_gpu <<<blocksPerGrid, threadsPerBlock >>>(s.a1, s.a2, s.a2, s.flag);
thread t2(vectorAdd_gpu);
t2.join();
还有其他方法可以使用线程同时运行 CPU 和 GPU 功能吗?
【问题讨论】:
-
写一个包装函数?
-
这是什么语言?
-
@AnttiHaapala:CUDA,即不是 C.
-
我不了解 Jack 的 GPU 编程,但是如果运行在 GPU 上的代码和运行在 CPU 上的代码不是都运行在同一个虚拟地址空间中,那么线程就不是模型你可以使用。
-
GPU 内核启动无论如何都是异步的。只要你在调用 CPU 函数之前启动内核,并且在你的 CPU 函数之后只有 cudaMemcpy() 将结果返回给 CPU,它们无论如何都会并发运行,而根本不需要使用线程。
标签: multithreading cuda gpgpu