在计算能力低于 3.5 的设备中,是否可以使用动态并行功能?
我知道如果在内核中遇到内核启动, nvcc 将返回错误,但是是否可以声明某些PTX级功能来支持此功能?
例如,我已声明cudaLaunchDevice()
:
.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_device_runtime_api.h
中此函数的CUDA级声明将映射到先前的PTX级声明。 (程序是否必须与某些内容相关联?)
//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);
(代码来自 CUDA C编程指南 book v6.5 )
答案 0 :(得分:1)
不幸的是,这不起作用。您必须拥有Kepler GK110或任何第一代或第二代Maxwell卡。
“动态并行性仅受3.5及更高计算能力的设备支持。” 资料来源:http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#ixzz3OB61zgmK