计算能力为3.0的GPU中的CUDA动态并行
在计算能力低于3.5的设备中,是否可能具有动态并行性功能? 我知道,如果nvcc在内核中遇到内核启动,它将返回一个错误,但是是否可以声明一些PTX级别的函数来支持此功能? 例如,这里我声明了计算能力为3.0的GPU中的CUDA动态并行,cuda,Cuda,在计算能力低于3.5的设备中,是否可能具有动态并行性功能? 我知道,如果nvcc在内核中遇到内核启动,它将返回一个错误,但是是否可以声明一些PTX级别的函数来支持此功能? 例如,这里我声明了cudaLaunchDevice(): 希望CUDA\u device\u runtime\u api.h中此函数的CUDA级别声明将映射到以前的PTX级别声明。(该计划是否必须与某些内容相关联?) (代码来自《CUDA C编程指南》第6.5版) .不幸的是,这不起作用。您必须拥有开普勒GK110或任何第一代
cudaLaunchDevice()
:
希望CUDA\u device\u runtime\u api.h
中此函数的CUDA级别声明将映射到以前的PTX级别声明。(该计划是否必须与某些内容相关联?)
(代码来自《CUDA C编程指南》第6.5版)
.不幸的是,这不起作用。您必须拥有开普勒GK110或任何第一代或第二代麦克斯韦卡 “只有计算能力为3.5及更高版本的设备才支持动态并行。” 资料来源:
.extern .func(.param .b32 func_retval0) cudaLaunchDevice
{
.param .b32 fun,
.param .b32 parameterBuffer,
.param .align 4 .b8 gridDimension[12],
.param .align 4 .b8 blockDimension[12],
.param .b32 sharedMemSize,
.param .b32 stream
}
//CUDA-level declaration of cudaLaunchDevice()
extern "C" __device__
cudaError_t cudaLaunchDevice(void *func, void *parameterBuffer,
dim3 gridDimension, dim3 blockDimension,
unsigned int sharedMemSize,
cudaStream_t stream);