CUDA 运行时 API 允许我们使用 variable-number-of-arguments 三人字形语法启动内核:
my_kernel<<<grid_dims, block_dims, shared_mem_size>>>(
first_arg, second_arg, and_as_many, as_we, want_to, etc, etc);
但关于“协作”内核,CUDA Programming Guide 说(第 C.3 节):
要启用网格同步,在启动内核时需要使用CUDA 运行时启动 API ,而不是
<<<...>>>
执行配置语法:cuLaunchCooperativeKernel
cudaLaunchCooperativeKernel( const T *func, dim3 gridDim, dim3 blockDim, void **args, size_t sharedMem = 0, cudaStream_t stream = 0 )
(或等效的 CUDA 驱动程序)。
我宁愿不必编写自己的包装器代码来构建指针数组……运行时 API 中真的没有设施可以避免这种情况吗?