Structures

VkCudaLaunchInfoNV

Structure specifying the parameters to launch a CUDA kernel

The VkCudaLaunchInfoNV structure is very close to the parameters of the CUDA-Driver function cuLaunchKernel documented in section 6.19 Execution Control of CUDA Driver API.

The structure is defined as:

typedef struct VkCudaLaunchInfoNV {
    VkStructureType sType;
    const void* pNext;
    VkCudaFunctionNV function;
    uint32_t gridDimX;
    uint32_t gridDimY;
    uint32_t gridDimZ;
    uint32_t blockDimX;
    uint32_t blockDimY;
    uint32_t blockDimZ;
    uint32_t sharedMemBytes;
    size_t paramCount;
    const void* const * pParams;
    size_t extraCount;
    const void* const * pExtras;
} VkCudaLaunchInfoNV;
  • sType is a VkStructureType value identifying this structure.
  • pNext is NULL or a pointer to a structure extending this structure.
  • function is the CUDA-Driver handle to the function being launched.
  • gridDimX is the number of local workgroups to dispatch in the X dimension. It must be less than or equal to VkPhysicalDeviceLimits::maxComputeWorkGroupCount[0]
  • gridDimY is the number of local workgroups to dispatch in the Y dimension. It must be less than or equal to VkPhysicalDeviceLimits::maxComputeWorkGroupCount[1]
  • gridDimZ is the number of local workgroups to dispatch in the Z dimension. It must be less than or equal to VkPhysicalDeviceLimits::maxComputeWorkGroupCount[2]
  • blockDimX is block size in the X dimension.
  • blockDimY is block size in the Y dimension.
  • blockDimZ is block size in the Z dimension.
  • sharedMemBytes is the dynamic shared-memory size per thread block in bytes.
  • paramCount is the length of the pParams table.
  • pParams is a pointer to an array of paramCount pointers, corresponding to the arguments of function.
  • extraCount is reserved for future use.
  • pExtras is reserved for future use.

Kernel parameters of function are specified via pParams, very much the same way as described in cuLaunchKernel

If function has N parameters, then pParams must be an array of N pointers and paramCount must be N. Each of kernelParams[0] through kernelParams[N-1] must point to a region of memory from which the actual kernel parameter will be copied. The number of kernel parameters and their offsets and sizes are not specified here as that information is stored in the VkCudaFunctionNV object.

The application-owned memory pointed to by pParams and kernelParams[0] through kernelParams[N-1] are consumed immediately, and may be altered or freed after vkCmdCudaLaunchKernelNV has returned.

Valid Usage

VUID-VkCudaLaunchInfoNV-gridDimX-09406

gridDimX must be less than or equal to VkPhysicalDeviceLimits::maxComputeWorkGroupCount[0]

VUID-VkCudaLaunchInfoNV-gridDimY-09407

gridDimY must be less than or equal to VkPhysicalDeviceLimits::maxComputeWorkGroupCount[1]

VUID-VkCudaLaunchInfoNV-gridDimZ-09408

gridDimZ must be less than or equal to VkPhysicalDeviceLimits::maxComputeWorkGroupCount[2]

VUID-VkCudaLaunchInfoNV-paramCount-09409

paramCount must be the total amount of parameters listed in the pParams table

VUID-VkCudaLaunchInfoNV-pParams-09410

pParams must be a pointer to a table of paramCount parameters, corresponding to the arguments of function

Valid Usage (Implicit)

VUID-VkCudaLaunchInfoNV-sType-sType

sType must be VK_STRUCTURE_TYPE_CUDA_LAUNCH_INFO_NV