C++ 从CUDA设备函数/内核内部并行化方法
我有一个已经并行化的CUDA内核,它执行一些需要频繁插值的任务 所以有一个内核C++ 从CUDA设备函数/内核内部并行化方法,c++,multithreading,parallel-processing,cuda,dynamic-parallelism,C++,Multithreading,Parallel Processing,Cuda,Dynamic Parallelism,我有一个已经并行化的CUDA内核,它执行一些需要频繁插值的任务 所以有一个内核 __global__ void complexStuff(...) 调用此插值设备函数的一次或多次: __device__ void interpolate(...) 插值算法在三维上连续进行WENO插值。这是一个高度并行化的任务,我迫切希望并行化 很明显,内核complexStuff()可以通过使用语法从主机代码调用来轻松实现并行化。同样重要的是,complexStuff()已经并行化了 但我不清楚如何从CUD
__global__ void complexStuff(...)
调用此插值设备函数的一次或多次:
__device__ void interpolate(...)
插值算法在三维上连续进行WENO插值。这是一个高度并行化的任务,我迫切希望并行化
很明显,内核complexStuff()
可以通过使用
语法从主机代码调用来轻松实现并行化。同样重要的是,complexStuff()
已经并行化了
但我不清楚如何从CUDA设备函数内部并行化某些东西/创建新线程。。。这可能吗?有人知道吗?
你可能想考虑动态并行性(一些资源,和),以便从另一个CUDA内核调用CUDA内核。它要求您的设备计算能力为3.5或更高。它附带了许多可能会降低性能的限制和限制(在第三个链接中提到)。
我的建议是,首先考虑调用CUDA内核,使用<代码>复杂(…)>代码>工作量乘以<代码>内插(…)<代码>金额工作。换句话说,静态地猜测您需要执行的最大并行细粒度作业是什么。然后将内核配置为使用块线程执行这些细粒度作业。请注意,这只是一个猜测,而不知道您的程序代码