vkGetCudaModuleCacheNV - Get CUDA module cache
Description
If pCacheData is NULL, then the size of the binary cache, in bytes,
is returned in pCacheSize. Otherwise, pCacheSize must point to a
variable set by the application to the size of the buffer, in bytes,
pointed to by pCacheData, and on return the variable is overwritten
with the amount of data actually written to pCacheData. If
pCacheSize is less than the size of the binary shader code, nothing is
written to pCacheData, and INCOMPLETE
will be returned instead of SUCCESS.
The returned cache may then be used later for further initialization
of the CUDA module, by sending this cache instead of the PTX code when
using createCudaModuleNV.
Using the binary cache instead of the original PTX code should
significantly speed up initialization of the CUDA module, given that the
whole compilation and validation will not be necessary.
As with PipelineCache, the binary cache depends
on the specific implementation. The application must assume the cache
upload might fail in many circumstances and thus may have to get ready
for falling back to the original PTX code if necessary. Most often, the
cache may succeed if the same device driver and architecture is used
between the cache generation from PTX and the use of this cache. In the
event of a new driver version or if using a different device
architecture, this cache may become invalid.
This query does not behave consistently with the behavior described in
Opaque Binary Data Results,
for historical reasons.
If the amount of data available is larger than the passed pDataSize,
the query returns a INCOMPLETE success
status instead of a
ERROR_NOT_ENOUGH_SPACE_KHR error status.
Valid Usage (Implicit)
module must be a
valid CudaModuleNV handle
pCacheSize
must be a valid pointer to a size_t value
If the value
referenced by pCacheSize is not 0, and pCacheData is not
NULL, pCacheData must be a valid pointer to an array of
pCacheSize bytes
module must have
been created, allocated, or retrieved from device
Return Codes
- Success
- Failure
See Also
VK_NV_cuda_kernel_launch,
CudaModuleNV, Device