具有计算能力 3.0 的 GPU 中的 CUDA 动态并行性
CUDA dynamic parallelism in a GPU with compute capability 3.0
是否可以在计算能力小于 3.5[=26= 的设备中使用 动态并行 功能]?
我知道 nvcc 如果在内核中遇到内核启动会 return 出错,但是是否可以声明一些 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编程指南书v6.5)
.
不幸的是,这不起作用。您必须拥有 Kepler GK110 或任何第一代或第二代 Maxwell 卡。
"Dynamic Parallelism is only supported by devices of compute capability 3.5 and higher."
资料来源:http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#ixzz3OB61zgmK
是否可以在计算能力小于 3.5[=26= 的设备中使用 动态并行 功能]?
我知道 nvcc 如果在内核中遇到内核启动会 return 出错,但是是否可以声明一些 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编程指南书v6.5) .
不幸的是,这不起作用。您必须拥有 Kepler GK110 或任何第一代或第二代 Maxwell 卡。
"Dynamic Parallelism is only supported by devices of compute capability 3.5 and higher." 资料来源:http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#ixzz3OB61zgmK