driver_v2#
See also
See the migration guide for the differences between this module and the legacy driver module.
Data types used by CUDA driver#
Empty-initialize an instance of CUuuid. |
|
Empty-initialize an instance of CUmemFabricHandle_v1. |
|
Empty-initialize an instance of CUipcEventHandle_v1. |
|
Empty-initialize an instance of CUipcMemHandle_v1. |
|
Empty-initialize an array of CUstreamBatchMemOpParams_v1. |
|
Empty-initialize an instance of CUDA_BATCH_MEM_OP_NODE_PARAMS_v1. |
|
Empty-initialize an instance of CUDA_BATCH_MEM_OP_NODE_PARAMS_v2. |
|
Empty-initialize an instance of CUasyncNotificationInfo. |
|
Empty-initialize an instance of CUaccessPolicyWindow_v1. |
|
Empty-initialize an instance of CUDA_KERNEL_NODE_PARAMS_v2. |
|
Empty-initialize an instance of CUDA_KERNEL_NODE_PARAMS_v3. |
|
Empty-initialize an instance of CUDA_MEMSET_NODE_PARAMS_v1. |
|
Empty-initialize an instance of CUDA_MEMSET_NODE_PARAMS_v2. |
|
Empty-initialize an instance of CUDA_HOST_NODE_PARAMS_v1. |
|
Empty-initialize an instance of CUDA_HOST_NODE_PARAMS_v2. |
|
Empty-initialize an instance of CUDA_CONDITIONAL_NODE_PARAMS. |
|
Empty-initialize an array of CUgraphEdgeData. |
|
Empty-initialize an instance of CUDA_GRAPH_INSTANTIATE_PARAMS. |
|
Empty-initialize an instance of CUlaunchMemSyncDomainMap. |
|
Empty-initialize an instance of CUlaunchAttributeValue. |
|
Empty-initialize an instance of CUlaunchAttribute. |
|
Empty-initialize an instance of CUlaunchConfig. |
|
Empty-initialize an instance of CUexecAffinitySmCount_v1. |
|
Empty-initialize an array of CUexecAffinityParam_v1. |
|
Empty-initialize an instance of CUctxCigParam. |
|
Empty-initialize an instance of CUctxCreateParams. |
|
Empty-initialize an instance of CUstreamCigParam. |
|
Empty-initialize an instance of CUstreamCigCaptureParams. |
|
Empty-initialize an instance of CUlibraryHostUniversalFunctionAndDataTable. |
|
Empty-initialize an instance of CUDA_MEMCPY2D_v2. |
|
Empty-initialize an instance of CUDA_MEMCPY3D_v2. |
|
Empty-initialize an instance of CUDA_MEMCPY3D_PEER_v1. |
|
Empty-initialize an instance of CUDA_MEMCPY_NODE_PARAMS. |
|
Empty-initialize an instance of CUDA_ARRAY_DESCRIPTOR_v2. |
|
Empty-initialize an instance of CUDA_ARRAY3D_DESCRIPTOR_v2. |
|
Empty-initialize an instance of CUDA_ARRAY_SPARSE_PROPERTIES_v1. |
|
Empty-initialize an instance of CUDA_ARRAY_MEMORY_REQUIREMENTS_v1. |
|
Empty-initialize an instance of CUDA_RESOURCE_DESC_v1. |
|
Empty-initialize an instance of CUDA_TEXTURE_DESC_v1. |
|
Empty-initialize an instance of CUDA_RESOURCE_VIEW_DESC_v1. |
|
Empty-initialize an instance of CUtensorMap. |
|
Empty-initialize an instance of CUDA_POINTER_ATTRIBUTE_P2P_TOKENS_v1. |
|
Empty-initialize an instance of CUDA_EXTERNAL_MEMORY_HANDLE_DESC_v1. |
|
Empty-initialize an instance of CUDA_EXTERNAL_MEMORY_BUFFER_DESC_v1. |
|
Empty-initialize an instance of CUDA_EXTERNAL_MEMORY_MIPMAPPED_ARRAY_DESC_v1. |
|
Empty-initialize an instance of CUDA_EXTERNAL_SEMAPHORE_HANDLE_DESC_v1. |
|
Empty-initialize an instance of CUDA_EXTERNAL_SEMAPHORE_SIGNAL_PARAMS_v1. |
|
Empty-initialize an instance of CUDA_EXTERNAL_SEMAPHORE_WAIT_PARAMS_v1. |
|
Empty-initialize an instance of CUDA_EXT_SEM_SIGNAL_NODE_PARAMS_v1. |
|
Empty-initialize an instance of CUDA_EXT_SEM_SIGNAL_NODE_PARAMS_v2. |
|
Empty-initialize an instance of CUDA_EXT_SEM_WAIT_NODE_PARAMS_v1. |
|
Empty-initialize an instance of CUDA_EXT_SEM_WAIT_NODE_PARAMS_v2. |
|
Empty-initialize an array of CUarrayMapInfo_v1. |
|
Empty-initialize an instance of CUmemLocation_v1. |
|
Empty-initialize an instance of CUmemAllocationProp_v1. |
|
Empty-initialize an instance of CUmulticastObjectProp_v1. |
|
Empty-initialize an array of CUmemAccessDesc_v1. |
|
Empty-initialize an instance of CUgraphExecUpdateResultInfo_v1. |
|
Empty-initialize an instance of CUmemPoolProps_v1. |
|
Empty-initialize an instance of CUmemPoolPtrExportData_v1. |
|
Empty-initialize an instance of CUmemcpyAttributes_v1. |
|
Empty-initialize an instance of CUoffset3D_v1. |
|
Empty-initialize an instance of CUextent3D_v1. |
|
Empty-initialize an instance of CUmemcpy3DOperand_v1. |
|
Empty-initialize an instance of CUDA_MEMCPY3D_BATCH_OP_v1. |
|
Empty-initialize an instance of CUDA_MEM_ALLOC_NODE_PARAMS_v1. |
|
Empty-initialize an instance of CUDA_MEM_ALLOC_NODE_PARAMS_v2. |
|
Empty-initialize an instance of CUDA_MEM_FREE_NODE_PARAMS. |
|
Empty-initialize an instance of CUDA_CHILD_GRAPH_NODE_PARAMS. |
|
Empty-initialize an instance of CUDA_EVENT_RECORD_NODE_PARAMS. |
|
Empty-initialize an instance of CUDA_EVENT_WAIT_NODE_PARAMS. |
|
Empty-initialize an instance of CUgraphNodeParams. |
|
Empty-initialize an instance of CUcheckpointLockArgs. |
|
Empty-initialize an instance of CUcheckpointCheckpointArgs. |
|
Empty-initialize an instance of CUcheckpointGpuPair. |
|
Empty-initialize an instance of CUcheckpointRestoreArgs. |
|
Empty-initialize an instance of CUcheckpointUnlockArgs. |
|
CUDA Ipc Mem Flags |
|
CUDA Mem Attach Flags |
|
Context creation flags |
|
Event sched flags |
|
NVCL context scheduling flags |
|
See CUhostTaskSyncMode. |
|
Stream creation flags |
|
Event creation flags |
|
Event record flags |
|
Event wait flags |
|
CUDA-valid Atomic Operations |
|
CUDA-valid Atomic Operation capabilities |
|
Flags for cuStreamWaitValue32 and cuStreamWaitValue64 |
|
Flags for cuStreamWriteValue32 |
|
Operations for cuStreamBatchMemOp |
|
Flags for CUstreamBatchMemOpParams.memoryBarrier |
|
Atomic reduction operation types for CUstreamBatchMemOpParams::atomicReduction::reductionOp |
|
Atomic reduction data types for CUstreamBatchMemOpParams::atomicReduction::dataType |
|
Occupancy calculator flag |
|
Flags for cuStreamUpdateCaptureDependencies |
|
Types of async notification that can be sent |
|
Array formats |
|
Texture reference addressing modes |
|
Texture reference filtering modes |
|
Device properties |
|
Pointer information |
|
Function properties |
|
Function cache configurations |
|
Shared memory carveout configurations. |
|
Memory types |
|
Compute Modes |
|
Memory advise values |
|
See CUmem_range_attribute. |
|
Online compiler and linker options |
|
Online compilation targets |
|
Cubin matching fallback strategies |
|
Caching modes for dlcm |
|
Device code formats |
|
Flags to register a graphics resource |
|
Flags for mapping and unmapping interop resources |
|
Array indices for cube faces |
|
Limits |
|
Resource types |
|
Specifies performance hint with CUaccessPolicyWindow for hitProp and missProp members. |
|
Conditional node types |
|
Graph node types |
|
Type annotations that can be applied to graph edges as part of CUgraphEdgeData. |
|
Graph instantiation results |
|
See CUsynchronizationPolicy. |
|
Cluster scheduling policies. |
|
Memory Synchronization Domain A kernel can be launched in a specified memory synchronization domain that affects all memory operations issued by that kernel. |
|
Enum for defining applicability of portable cluster size, used with cuLaunchKernelEx |
|
Shared memory related attributes for use with cuLaunchKernelEx |
|
Launch attributes enum; used as id field of CUlaunchAttribute |
|
Possible stream capture statuses returned by cuStreamIsCapturing |
|
Possible modes for stream capture thread interactions. |
|
Flags to specify search options. |
|
Flags to indicate search status. |
|
Execution Affinity Types |
|
See CUcigDataType. |
|
See CUstreamCigDataType. |
|
Library options to be specified with cuLibraryLoadData() or cuLibraryLoadFromFile() |
|
Error codes |
|
P2P Attributes |
|
Resource view format |
|
Tensor map data type |
|
Tensor map interleave layout type |
|
Tensor map swizzling mode of shared memory banks |
|
Tensor map L2 promotion type |
|
Tensor map out-of-bounds fill type |
|
Tensor map Im2Col wide mode |
|
Access flags that specify the level of access the current context's device has on the memory referenced. |
|
External memory handle types |
|
External semaphore handle types |
|
Flags for specifying particular handle types |
|
Specifies the memory protection flags for mapping. |
|
Specifies the type of location |
|
Defines the allocation types available |
|
Flag for requesting different optimal and required granularities for an allocation. |
|
Specifies the handle type for address range |
|
Flag for requesting handle type for address range. |
|
Sparse subresource types |
|
Memory operation types |
|
Memory handle types |
|
Specifies compression attribute for an allocation. |
|
Flags for querying different granularities for a multicast object |
|
CUDA Graph Update error types |
|
CUDA memory pool attributes |
|
Flags to specify for copies within a batch. |
|
These flags allow applications to convey the source access ordering CUDA must maintain. |
|
These flags allow applications to convey the operand type for individual copies specified in cuMemcpy3DBatchAsync. |
|
See CUgraphMem_attribute. |
|
Child graph node ownership |
|
Bitmasks for CU_DEVICE_ATTRIBUTE_GPU_DIRECT_RDMA_FLUSH_WRITES_OPTIONS |
|
Platform native ordering for GPUDirect RDMA writes |
|
The scopes for cuFlushGPUDirectRDMAWrites |
|
The targets for cuFlushGPUDirectRDMAWrites |
|
The additional write options for cuGraphDebugDotPrint |
|
Flags for user objects for graphs |
|
Flags for retaining user object references for graphs |
|
Flags for instantiating a graph |
|
CUDA device NUMA configuration |
|
CUDA Process States |
|
CUDA EglFrame type - array or pointer |
|
Resource location flags- sysmem or vidmem For CUDA context on iGPU, since video and system memory are equivalent - these flags will not have an effect on the execution. |
|
CUDA EGL Color Format - The different planar and multiplanar formats currently supported for CUDA_EGL interops. |
|
Flags for Array3dDescriptor_v2.flags_ (CUDA_ARRAY3D_*). |
|
Flags in ArraySparseProperties_v1.flags_ (CU_ARRAY_SPARSE_PROPERTIES_*). |
|
Offsets added to a compute capability to form a JitTarget with accelerated or family features (CU_COMPUTE_*_TARGET_BASE). |
|
Flags for ExternalMemoryHandleDesc_v1.flags_ (CUDA_EXTERNAL_MEMORY_*). |
|
Flags for ExternalSemaphoreSignalParams_v1.flags_ (CUDA_EXTERNAL_SEMAPHORE_SIGNAL_*). |
|
Flags for ExternalSemaphoreWaitParams_v1.flags_ (CUDA_EXTERNAL_SEMAPHORE_WAIT_*). |
|
Flags to map or unmap a resource |
|
Flags for graph_conditional_handle_create (CU_GRAPH_COND_*). |
|
Outgoing ports of a kernel node, for GraphEdgeData.from_port (CU_GRAPH_KERNEL_NODE_PORT_*). |
|
Usage hints for MemAllocationProp_v1.alloc_flags (CU_MEM_CREATE_USAGE_*). |
|
Flags for mem_host_alloc (CU_MEMHOSTALLOC_*). |
|
Flags for mem_host_register_v2 (CU_MEMHOSTREGISTER_*). |
|
Usage hints for MemPoolProps_v1.usage (CU_MEM_POOL_CREATE_USAGE_*). |
|
NvSciSync attribute directions (CUDA_NVSCISYNC_ATTR_*). |
|
Profiler Output Modes |
|
Special int device ordinals (CU_DEVICE_*). |
|
Special stream handles, as int (CU_STREAM_*). |
|
Empty-initialize an array of CU_DEV_SM_RESOURCE_GROUP_PARAMS. |
|
Empty-initialize an instance of CUstreamMemOpAtomicReductionParams_st. |
|
Empty-initialize an instance of CUstreamMemOpFlushRemoteWritesParams_st. |
|
Empty-initialize an instance of CUstreamMemOpMemoryBarrierParams_st. |
|
Empty-initialize an instance of CUstreamMemOpWaitValueParams_st. |
|
Empty-initialize an instance of CUstreamMemOpWriteValueParams_st. |
|
Empty-initialize an instance of CUdevprop_v1. |
|
Empty-initialize an instance of CUDA_LAUNCH_PARAMS_v1. |
|
Flags for launch_cooperative_kernel_multi_device (CUDA_COOPERATIVE_LAUNCH_MULTI_DEVICE_*). |
|
Markers in the extra array of launch_kernel (CU_LAUNCH_PARAM_*). |
|
NVCL event scheduling flags |
|
Special texture reference index for param_set_tex_ref (CU_PARAM_TR_*). |
|
[Deprecated] Shared memory configurations |
|
Flags for tex_ref_set_array (CU_TRSA_*). |
|
Flags for tex_ref_set_flags (CU_TRSF_*). |
Error Handling#
This section describes the error handling functions of the low-level CUDA driver application programming interface.
Gets the string description of an error code. |
|
Gets the string representation of an error code enum name. |
Initialization#
This section describes the initialization functions of the low-level CUDA driver application programming interface.
Initialize the CUDA driver API Initializes the driver API and must be called before any other function from the driver API in the current process. |
Version Management#
This section describes the version management functions of the low-level CUDA driver application programming interface.
Returns the latest CUDA version supported by driver. |
Device Management#
This section describes the device management functions of the low-level CUDA driver application programming interface.
Returns a handle to a compute device. |
|
Returns the number of compute-capable devices. |
|
Returns an identifier string for the device. |
|
Return an UUID for the device. |
|
Return an LUID and device node mask for the device. |
|
Returns the total amount of memory on the device. |
|
Returns the maximum number of elements allocatable in a 1D linear texture for a given texture element size. |
|
Returns information about the device. |
|
Returns properties for a selected device. |
|
Returns the compute capability of the device. |
|
Query atomic operation capabilities between host and device. |
|
Fill in NvSciSync attributes for the given CUDA device. |
|
Sets the current memory pool of a device. |
|
Gets the current mempool for a device. |
|
Returns the default mempool of a device. |
|
Returns information about the execution affinity support of the device. |
|
Blocks until remote writes are visible to the specified scope. |
Primary Context Management#
This section describes the primary context management functions of the low-level CUDA driver application programming interface.
The primary context is unique per device and shared with the CUDA runtime API. These functions allow integration with other libraries using CUDA.
Retain the primary context on the GPU. |
|
Release the primary context on the GPU. |
|
Set flags for the primary context. |
|
Get the state of the primary context. |
|
Destroy all allocations and reset all state on the primary context. |
Context Management#
This section describes the context management functions of the low-level CUDA driver application programming interface.
Please note that some functions are described in Primary Context Management section.
Create a CUDA context. |
|
Destroy a CUDA context. |
|
Pushes a context on the current CPU thread. |
|
Pops the current CUDA context from the current CPU thread. |
|
Binds the specified CUDA context to the calling CPU thread. |
|
Returns the CUDA context bound to the calling CPU thread. |
|
Returns the device handle for the current context. |
|
Returns the device handle for the specified context. |
|
Returns the flags for the current context. |
|
Sets the flags for the current context. |
|
Returns the unique Id associated with the context supplied. |
|
Block for the current context's tasks to complete. |
|
Block for the specified context's tasks to complete. |
|
Set resource limits. |
|
Returns resource limits. |
|
Returns the preferred cache configuration for the current context. |
|
Sets the preferred cache configuration for the current context. |
|
Gets the context's API version. |
|
Returns numerical values that correspond to the least and greatest stream priorities. |
|
Resets all persisting lines in cache to normal status. |
|
Returns the execution affinity setting for the current context. |
|
Records an event. |
|
Make a context wait on an event. |
Module Management#
This section describes the module management functions of the low-level CUDA driver application programming interface.
CUDA Lazy Loading status |
Loads a compute module. |
|
Load a module's data. |
|
Load a module's data with options. |
|
Load a module's data. |
|
Unloads a module. |
|
Query lazy loading mode. |
|
Returns a function handle. |
|
Returns the number of functions within a module. |
|
Returns the function handles within a module. |
|
Returns a global pointer from a module. |
|
Creates a pending JIT linker invocation. |
|
Add an input to a pending linker invocation. |
|
Add a file input to a pending linker invocation. |
|
Complete a pending linker invocation. |
|
Destroys state for a JIT linker invocation. |
Library Management#
This section describes the library management functions of the low-level CUDA driver application programming interface.
Load a library with specified code and options. |
|
Load a library with specified file and options. |
|
Unloads a library. |
|
Returns a kernel handle. |
|
Returns the number of kernels within a library. |
|
Retrieve the kernel handles within a library. |
|
Returns a module handle. |
|
Returns a function handle. |
|
Returns a library handle. |
|
Returns a global device pointer. |
|
Returns a pointer to managed memory. |
|
Returns a pointer to a unified function. |
|
Returns information about a kernel. |
|
Sets information about a kernel. |
|
Sets the preferred cache configuration for a device kernel. |
|
Returns the function name for a |
|
Returns the offset and size of a kernel parameter in the device-side parameter layout. |
|
Returns the number of parameters used by the kernel. |
Memory Management#
This section describes the memory management functions of the low-level CUDA driver application programming interface.
Empty-initialize an instance of CUmemDecompressParams. |
|
Bitmasks for CU_DEVICE_ATTRIBUTE_MEM_DECOMPRESS_ALGORITHM_MASK. |
Gets free and total memory. |
|
Allocates device memory. |
|
Allocates pitched device memory. |
|
Frees device memory. |
|
Get information on memory allocations. |
|
Allocates page-locked host memory. |
|
Frees page-locked host memory. |
|
Allocates page-locked host memory. |
|
Passes back device pointer of mapped pinned memory. |
|
Passes back flags that were used for a pinned allocation. |
|
Allocates memory that will be automatically managed by the Unified Memory system. |
|
Registers a callback function to receive async notifications. |
|
Unregisters an async notification callback. |
|
Returns a handle to a compute device. |
|
Returns a PCI Bus Id string for the device. |
|
Gets an interprocess handle for a previously allocated event. |
|
Opens an interprocess event handle for use in the current process. |
|
Gets an interprocess memory handle for an existing device memory allocation. |
|
Opens an interprocess memory handle exported from another process and returns a device pointer usable in the local process. |
|
Attempts to close memory mapped with |
|
Registers an existing host memory range for use by CUDA. |
|
Unregisters a memory range that was registered with cuMemHostRegister. |
|
Copies memory. |
|
Copies device memory between two contexts. |
|
Copies memory from Host to Device. |
|
Copies memory from Device to Host. |
|
Copies memory from Device to Device. |
|
Copies memory from Device to Array. |
|
Copies memory from Array to Device. |
|
Copies memory from Host to Array. |
|
Copies memory from Array to Host. |
|
Copies memory from Array to Array. |
|
Copies memory for 2D arrays. |
|
Copies memory for 2D arrays. |
|
Copies memory for 3D arrays. |
|
Copies memory between contexts. |
|
Copies memory asynchronously. |
|
Copies device memory between two contexts asynchronously. |
|
Copies memory from Host to Device. |
|
Copies memory from Device to Host. |
|
Copies memory from Device to Device. |
|
Copies memory from Host to Array. |
|
Copies memory from Array to Host. |
|
Copies memory for 2D arrays. |
|
Copies memory for 3D arrays. |
|
Copies memory between contexts asynchronously. |
|
Perform a batch of memory copies asynchronously. |
|
Performs a batch of memory copies asynchronously. |
|
Performs a batch of 3D memory copies asynchronously. |
|
Performs asynchronous memory copy operation with the specified attributes. |
|
Performs 3D memory copy with attributes asynchronously. |
|
Initializes device memory. |
|
Initializes device memory. |
|
Initializes device memory. |
|
Initializes device memory. |
|
Initializes device memory. |
|
Initializes device memory. |
|
Sets device memory. |
|
Sets device memory. |
|
Sets device memory. |
|
Sets device memory. |
|
Sets device memory. |
|
Sets device memory. |
|
Creates a 1D or 2D CUDA array. |
|
Get a 1D or 2D CUDA array descriptor. |
|
Returns the layout properties of a sparse CUDA array. |
|
Returns the layout properties of a sparse CUDA mipmapped array. |
|
Returns the memory requirements of a CUDA array. |
|
Returns the memory requirements of a CUDA mipmapped array. |
|
Gets a CUDA array plane from a CUDA array. |
|
Destroys a CUDA array. |
|
Creates a 3D CUDA array. |
|
Get a 3D CUDA array descriptor. |
|
Creates a CUDA mipmapped array. |
|
Gets a mipmap level of a CUDA mipmapped array. |
|
Destroys a CUDA mipmapped array. |
|
Return a handle (a dma-buf file descriptor) for an address range. |
|
Submit a batch of |
Virtual Memory Management#
This section describes the virtual memory management functions of the low-level CUDA driver application programming interface.
Allocate an address range reservation. |
|
Free an address range reservation. |
|
Create a CUDA memory handle representing a memory allocation of a given size described by the given properties. |
|
Release a memory handle representing a memory allocation which was previously allocated through cuMemCreate. |
|
Maps an allocation handle to a reserved virtual address range. |
|
Maps or unmaps subregions of sparse CUDA arrays and sparse CUDA mipmapped arrays. |
|
Unmap the backing memory of a given address range. |
|
Set the access flags for each location specified in |
|
Get the access |
|
Export an allocation to an OS-specific shareable handle. |
|
Imports an allocation from a requested shareable handle type. |
|
Calculates either the minimal or recommended granularity. |
|
Retrieve the contents of the property structure defining properties for this handle. |
|
Given an address |
Stream Ordered Memory Allocator#
This section describes the stream ordered memory allocator exposed by the low-level CUDA driver application programming interface.
overview
The asynchronous allocator allows the user to allocate and free in stream order. All asynchronous accesses of the allocation must happen between the stream executions of the allocation and the free. If the memory is accessed outside of the promised stream order, a use before allocation / use after free error will cause undefined behavior.
The allocator is free to reallocate the memory as long as it can guarantee that compliant memory accesses will not overlap temporally. The allocator may refer to internal stream ordering as well as inter-stream dependencies (such as CUDA events and null stream dependencies) when establishing the temporal guarantee. The allocator may also insert inter-stream dependencies to establish the temporal guarantee.
Supported Platforms
Whether or not a device supports the integrated stream ordered memory allocator may be queried by calling cuDeviceGetAttribute() with the device attribute CU_DEVICE_ATTRIBUTE_MEMORY_POOLS_SUPPORTED
Frees memory with stream ordered semantics. |
|
Allocates memory with stream ordered semantics. |
|
Tries to release memory back to the OS. |
|
Sets attributes of a memory pool. |
|
Return an attribute of a memory pool (an |
|
Controls visibility of pools between devices. |
|
Returns the accessibility of a pool from a device. |
|
Creates a memory pool. |
|
Destroys the specified memory pool. |
|
Returns the default memory pool for a given location and allocation type. |
|
Gets the current memory pool for a memory location and of a particular allocation type. |
|
Sets the current memory pool for a memory location and allocation type. |
|
Allocates memory from a specified pool with stream ordered semantics. |
|
Export a memory pool to an OS-specific shareable handle. |
|
imports a memory pool from a shared handle. |
|
Export data to share a memory pool allocation between processes. |
|
Import a memory pool allocation from another process. |
Multicast Object Management#
This section describes the CUDA multicast object operations exposed by the low-level CUDA driver application programming interface.
overview
A multicast object created via cuMulticastCreate enables certain memory operations to be broadcast to a team of devices. Devices can be added to a multicast object via cuMulticastAddDevice. Memory can be bound on each participating device via cuMulticastBindMem, cuMulticastBindMem_v2, cuMulticastBindAddr, or cuMulticastBindAddr_v2. Multicast objects can be mapped into a device’s virtual address space using the virtual memmory management APIs (see cuMemMap and cuMemSetAccess).
Supported Platforms
Support for multicast on a specific device can be queried using the device attribute CU_DEVICE_ATTRIBUTE_MULTICAST_SUPPORTED
Create a generic allocation handle representing a multicast object described by the given properties. |
|
Associate a device to a multicast object. |
|
Bind a memory allocation represented by a handle to a multicast object. |
|
Bind a memory allocation represented by a handle to a multicast object. |
|
Bind a memory allocation represented by a virtual address to a multicast object. |
|
Bind a memory allocation represented by a virtual address to a multicast object. |
|
Unbind any memory allocations bound to a multicast object at a given offset and upto a given size. |
|
Calculates either the minimal or recommended granularity for multicast object. |
Fabric Clique Information#
This section describes functions and data structures to retrieve fabric clique information.
Empty-initialize an array of CUcliqueInfo. |
|
Fabric clique types |
Retrieves the fabric cluster UUID. |
|
Retrieves the number of fabric cliques. |
|
Retrieves fabric clique information. |
Logical Endpoint#
This section describes the logical endpoint functions of the low-level CUDA driver application programming interface.
Empty-initialize an instance of CUlogicalEndpointFabricHandle. |
|
Empty-initialize an instance of CUlogicalEndpointProp. |
|
IPC handle types that can be requested/queried for a given logical endpoint |
|
Logical endpoint type |
|
Flags for CUlogicalEndpointProp |
Reserves a range of logical endpoint ids. |
|
Releases a range of logical endpoint ids. |
|
Creates a logical endpoint with the requested properties and associates it with the logical endpoint id. |
|
Associates a device to a multicast logical endpoint. |
|
Removes the association of the logical endpoint from the logical endpoint id. |
|
Bind a memory allocation represented by a virtual address to a logical endpoint. |
|
Binds memory object represented by a handle to the logical endpoint. |
|
Unbinds any binding at offset from the logical endpoint. |
|
Export a logical endpoint to an IPC handle. |
|
Imports a logical endpoint from the given IPC handle and associates it with a logical endpoint id. |
|
Calculates the minimum alignment and the maximum size for the given logical endpoint properties. |
|
Determines if all logical endpoints in the range have been successfully constructed. |
Unified Addressing#
This section describes the unified addressing functions of the low-level CUDA driver application programming interface.
Overview
CUDA devices can share a unified address space with the host. For these devices there is no distinction between a device pointer and a host pointer – the same pointer value may be used to access memory from the host program and from a kernel running on the device (with exceptions enumerated below).
Supported Platforms
Whether or not a device supports unified addressing may be queried by calling cuDeviceGetAttribute() with the device attribute CU_DEVICE_ATTRIBUTE_UNIFIED_ADDRESSING.
Unified addressing is automatically enabled in 64-bit processes
Looking Up Information from Pointer Values
It is possible to look up information about the memory which backs a pointer value. For instance, one may want to know if a pointer points to host or device memory. As another example, in the case of device memory, one may want to know on which CUDA device the memory resides. These properties may be queried using the function cuPointerGetAttribute()
Since pointers are unique, it is not necessary to specify information about the pointers specified to the various copy functions in the CUDA API. The function cuMemcpy() may be used to perform a copy between two pointers, ignoring whether they point to host or device memory (making cuMemcpyHtoD(), cuMemcpyDtoD(), and cuMemcpyDtoH() unnecessary for devices supporting unified addressing). For multidimensional copies, the memory type CU_MEMORYTYPE_UNIFIED may be used to specify that the CUDA driver should infer the location of the pointer from its value.
Automatic Mapping of Host Allocated Host Memory
All host memory allocated in all contexts using cuMemAllocHost() and cuMemHostAlloc() is always directly accessible from all contexts on all devices that support unified addressing. This is the case regardless of whether or not the flags CU_MEMHOSTALLOC_PORTABLE and CU_MEMHOSTALLOC_DEVICEMAP are specified.
The pointer value through which allocated host memory may be accessed in kernels on all devices that support unified addressing is the same as the pointer value through which that memory is accessed on the host, so it is not necessary to call cuMemHostGetDevicePointer() to get the device pointer for these allocations.
Note that this is not the case for memory allocated using the flag CU_MEMHOSTALLOC_WRITECOMBINED, as discussed below.
Automatic Registration of Peer Memory
Upon enabling direct access from a context that supports unified addressing to another peer context that supports unified addressing using cuCtxEnablePeerAccess() all memory allocated in the peer context using cuMemAlloc() and cuMemAllocPitch() will immediately be accessible by the current context. The device pointer value through which any peer memory may be accessed in the current context is the same pointer value through which that memory may be accessed in the peer context.
Exceptions, Disjoint Addressing
Not all memory may be accessed on devices through the same pointer value through which they are accessed on the host. These exceptions are host memory registered using cuMemHostRegister() and host memory allocated using the flag CU_MEMHOSTALLOC_WRITECOMBINED. For these exceptions, there exists a distinct host and device address for the memory. The device address is guaranteed to not overlap any valid host pointer range and is guaranteed to have the same value across all contexts that support unified addressing.
This device address may be queried using cuMemHostGetDevicePointer() when a context using unified addressing is current. Either the host or the unified device pointer value may be used to refer to this memory through cuMemcpy() and similar functions using the CU_MEMORYTYPE_UNIFIED memory type.
Return an attribute of a pointer. |
|
Prefetches memory to the specified destination location. |
|
Advise about the usage of a given memory range. |
|
Performs a batch of memory prefetches asynchronously. |
|
Performs a batch of memory discards asynchronously. |
|
Performs a batch of memory discards and prefetches asynchronously. |
|
Gets residency information for a memory address range. |
|
Return an attribute of a memory range. |
|
Return several attributes of a memory range, in one call. |
|
Set attributes on a previously allocated memory region. |
|
Return several attributes of a pointer, in one call. |
Stream Management#
This section describes the stream management functions of the low-level CUDA driver application programming interface.
See CUgraphRecaptureStatus. |
Create a stream. |
|
Create a stream with the given priority. |
|
Begins capture to CIG on a stream. |
|
Ends CIG capture on a stream. |
|
Query the priority of a given stream. |
|
Returns the device handle of the stream. |
|
Query the flags of a given stream. |
|
Returns the unique Id associated with the stream handle supplied. |
|
Query the context associated with a stream. |
|
Query the contexts associated with a stream. |
|
Make a compute stream wait on an event. |
|
Add a callback to a compute stream. |
|
Begins graph capture on a stream. |
|
Begin graph capture on a stream to an existing graph. |
|
Begins graph capture on a stream to an existing graph. |
|
Swap the stream capture interaction mode of the calling thread. |
|
Ends capture on a stream, returning the captured graph. |
|
Returns a stream's capture status. |
|
Query a stream's capture state. |
|
Query a stream's capture state. |
|
Update the set of dependencies in a capturing stream. |
|
Attach memory to a stream asynchronously. |
|
Determine status of a compute stream. |
|
Wait until a stream's tasks are completed. |
|
Destroys a stream. |
|
Copies attributes from source stream to destination stream. |
|
Queries stream attribute. |
|
Sets stream attribute. |
Event Management#
This section describes the event management functions of the low-level CUDA driver application programming interface.
Creates an event. |
|
Records an event. |
|
Records an event. |
|
Queries an event's status. |
|
Waits for an event to complete. |
|
Destroys an event. |
|
Computes the elapsed time between two events. |
External Resource Interoperability#
This section describes the external resource interoperability functions of the low-level CUDA driver application programming interface.
Imports an external memory object. |
|
Maps a buffer onto an imported memory object. |
|
Maps a CUDA mipmapped array onto an external memory object. |
|
Destroys an external memory object. |
|
Imports an external semaphore. |
|
Signals a set of external semaphore objects. |
|
Waits on a set of external semaphore objects. |
|
Destroys an external semaphore. |
Stream Memory Operations#
This section describes the stream memory operations of the low-level CUDA driver application programming interface.
Support for the CU_STREAM_WAIT_VALUE_NOR flag can be queried with ::CU_DEVICE_ATTRIBUTE_CAN_USE_STREAM_WAIT_VALUE_NOR_V2.
Support for the cuStreamWriteValue64() and cuStreamWaitValue64() functions, as well as for the CU_STREAM_MEM_OP_WAIT_VALUE_64 and CU_STREAM_MEM_OP_WRITE_VALUE_64 flags, can be queried with CU_DEVICE_ATTRIBUTE_CAN_USE_64_BIT_STREAM_MEM_OPS.
Support for both CU_STREAM_WAIT_VALUE_FLUSH and CU_STREAM_MEM_OP_FLUSH_REMOTE_WRITES requires dedicated platform hardware features and can be queried with cuDeviceGetAttribute() and CU_DEVICE_ATTRIBUTE_CAN_FLUSH_REMOTE_WRITES.
Note that all memory pointers passed as parameters to these operations are device pointers. Where necessary a device pointer should be obtained, for example with cuMemHostGetDevicePointer().
None of the operations accepts pointers to managed memory buffers (cuMemAllocManaged).
Warning: Improper use of these APIs may deadlock the application. Synchronization ordering established through these APIs is not visible to CUDA. CUDA tasks that are (even indirectly) ordered by these APIs should also have that order expressed with CUDA-visible dependencies such as events. This ensures that the scheduler does not serialize them in an improper order.
Wait on a memory location. |
|
Wait on a memory location. |
|
Write a value to memory. |
|
Write a value to memory. |
|
Batch operations to synchronize the stream via memory operations. |
Execution Control#
This section describes the execution control functions of the low-level CUDA driver application programming interface.
See CUfunctionLoadingState. |
Returns information about a function. |
|
Sets information about a function. |
|
Sets the preferred cache configuration for a device function. |
|
Returns a module handle. |
|
Returns the function name for a |
|
Returns the offset and size of a kernel parameter in the device-side parameter layout. |
|
Returns the number of parameters used by the function. |
|
Returns if the function is loaded. |
|
Loads a function. |
|
Launches a CUDA function |
|
Launches a CUDA function |
|
Launches a CUDA function |
|
Launches CUDA functions on multiple devices where thread blocks can cooperate and synchronize as they execute. |
|
Enqueues a host function call in a stream. |
|
Enqueues a host function call in a stream. |
Graph Management#
This section describes the graph management functions of the low-level CUDA driver application programming interface.
Creates a graph. |
|
Creates a kernel execution node and adds it to a graph. |
|
Returns a kernel node's parameters. |
|
Sets a kernel node's parameters. |
|
Creates a memcpy node and adds it to a graph. |
|
Returns a memcpy node's parameters. |
|
Sets a memcpy node's parameters. |
|
Creates a memset node and adds it to a graph. |
|
Returns a memset node's parameters. |
|
Sets a memset node's parameters. |
|
Creates a host execution node and adds it to a graph. |
|
Returns a host node's parameters. |
|
Sets a host node's parameters. |
|
Creates a child graph node and adds it to a graph. |
|
Gets a handle to the embedded graph of a child graph node. |
|
Creates an empty node and adds it to a graph. |
|
Creates an event record node and adds it to a graph. |
|
Returns the event associated with an event record node. |
|
Sets an event record node's event. |
|
Creates an event wait node and adds it to a graph. |
|
Returns the event associated with an event wait node. |
|
Sets an event wait node's event. |
|
Creates an external semaphore signal node and adds it to a graph. |
|
Returns an external semaphore signal node's parameters. |
|
Sets an external semaphore signal node's parameters. |
|
Creates an external semaphore wait node and adds it to a graph. |
|
Returns an external semaphore wait node's parameters. |
|
Sets an external semaphore wait node's parameters. |
|
Creates a batch memory operation node and adds it to a graph. |
|
Returns a batch mem op node's parameters. |
|
Sets a batch mem op node's parameters. |
|
Sets the parameters for a batch mem op node in the given graphExec. |
|
Creates an allocation node and adds it to a graph. |
|
Returns a memory alloc node's parameters. |
|
Creates a memory free node and adds it to a graph. |
|
Returns a memory free node's parameters. |
|
Free unused memory that was cached on the specified device for use with graphs back to the OS. |
|
Return a graph memory attribute of a device, in bytes. |
|
Set asynchronous allocation attributes related to graphs. |
|
Clones a graph. |
|
Finds a cloned version of a node. |
|
Returns a node's type. |
|
Returns the graph that contains a given graph node. |
|
Returns the local node id of a given graph node. |
|
Returns an id used by tools to identify a given node. |
|
Returns the id of a given graph. |
|
Returns the id of a given graph exec. |
|
Returns a graph's nodes. |
|
Returns a graph's root nodes. |
|
graph_get_edges_v2(intptr_t h_graph) -> tuple |
|
Returns a graph's dependency edges. |
|
graph_node_get_dependencies_v2(intptr_t h_node) -> tuple |
|
Returns a node's dependencies. |
|
graph_node_get_dependent_nodes_v2(intptr_t h_node) -> tuple |
|
Returns a node's dependent nodes. |
|
Adds dependency edges to a graph. |
|
Removes dependency edges from a graph. |
|
Remove a node from the graph. |
|
graph_instantiate_with_flags(intptr_t h_graph, unsigned long long flags) -> intptr_t |
|
Creates an executable graph from a graph. |
|
Creates an executable graph from a graph. |
|
Query the instantiation flags of an executable graph. |
|
Sets the parameters for a kernel node in the given graphExec. |
|
Sets the parameters for a memcpy node in the given graphExec. |
|
Sets the parameters for a memset node in the given graphExec. |
|
Sets the parameters for a host node in the given graphExec. |
|
Updates node parameters in the child graph node in the given graphExec. |
|
Sets the event for an event record node in the given graphExec. |
|
Sets the event for an event wait node in the given graphExec. |
|
Sets the parameters for an external semaphore signal node in the given graphExec. |
|
Sets the parameters for an external semaphore wait node in the given graphExec. |
|
Enables or disables the specified node in the given graphExec. |
|
Query whether a node in the given graphExec is enabled. |
|
Uploads an executable graph in a stream. |
|
Launches an executable graph in a stream. |
|
Destroys an executable graph. |
|
Destroys a graph. |
|
Check whether an executable graph can be updated with a graph and perform the update if possible. |
|
Copies attributes from source node to destination node. |
|
Queries node attribute. |
|
Sets node attribute. |
|
Write a DOT file describing graph structure. |
|
Create a user object. |
|
Retain a reference to a user object. |
|
Release a reference to a user object. |
|
Retain a reference to a user object from a graph. |
|
Release a user object reference from a graph. |
|
Adds a node of arbitrary type to a graph. |
|
Adds a node of arbitrary type to a graph. |
|
Update a graph node's parameters. |
|
Update a graph node's parameters. |
|
Return a graph node's parameters. |
|
Update a graph node's parameters in an instantiated graph. |
|
Create a conditional handle. |
Occupancy#
This section describes the occupancy calculation functions of the low-level CUDA driver application programming interface.
Returns occupancy of a function. |
|
Returns occupancy of a function. |
|
Suggest a launch configuration with reasonable occupancy. |
|
Suggest a launch configuration with reasonable occupancy. |
|
Returns dynamic shared memory available per block when launching |
|
Given the kernel function ( |
|
Given the kernel function ( |
Texture Object Management#
This section describes the texture object management functions of the low-level CUDA driver application programming interface. The texture object API is only supported on devices of compute capability 3.0 or higher.
Creates a texture object. |
|
Destroys a texture object. |
|
Returns a texture object's resource descriptor. |
|
Returns a texture object's texture descriptor. |
|
Returns a texture object's resource view descriptor. |
Surface Object Management#
This section describes the surface object management functions of the low-level CUDA driver application programming interface. The surface object API is only supported on devices of compute capability 3.0 or higher.
Creates a surface object. |
|
Destroys a surface object. |
|
Returns a surface object's resource descriptor. |
Tensor Map Object Managment#
This section describes the tensor map object management functions of the low-level CUDA driver application programming interface. The tensor core API is only supported on devices of compute capability 9.0 or higher.
Create a tensor map descriptor object representing tiled memory region. |
|
Create a tensor map descriptor object representing im2col memory region. |
|
Create a tensor map descriptor object representing im2col memory region, but where the elements are exclusively loaded along the W dimension. |
|
Modify an existing tensor map descriptor with an updated global address. |
Peer Context Memory Access#
This section describes the direct peer context memory access functions of the low-level CUDA driver application programming interface.
Queries if a device may directly access a peer device's memory. |
|
Enables direct access to memory allocations in a peer context. |
|
Disables direct access to memory allocations in a peer context and unregisters any registered allocations. |
|
Queries attributes of the link between two devices. |
|
Queries details about atomic operations supported between two devices. |
Graphics Interoperability#
This section describes the graphics interoperability functions of the low-level CUDA driver application programming interface.
Unregisters a graphics resource for access by CUDA. |
|
Get an array through which to access a subresource of a mapped graphics resource. |
|
Get a mipmapped array through which to access a mapped graphics resource. |
|
Get a device pointer through which to access a mapped graphics resource. |
|
Set usage flags for mapping a graphics resource. |
|
Map graphics resources for access by CUDA. |
|
Unmap graphics resources. |
Driver Entry Point Access#
This section describes the driver entry point access functions of the low-level CUDA driver application programming interface.
Returns the requested driver API function pointer. |
|
Coredump Attributes Control API#
This section describes the coredump attribute control functions of the low-level CUDA driver application programming interface.
Flags for choosing a coredump attribute to get/set |
|
Flags for controlling coredump contents |
Fetch a coredump attribute value for the current context. |
|
Fetch a coredump attribute value for the entire application. |
|
Set a coredump attribute value for the current context. |
|
Set a coredump attribute value globally. |
|
Register a callback to be invoked when a GPU coredump begins. |
|
Register a callback to be invoked when a GPU coredump completes. |
|
Deregister a previously registered coredump start callback. |
|
Deregister a previously registered coredump complete callback. |
Green Contexts#
This section describes the APIs for creation and manipulation of green contexts in the CUDA driver. Green contexts are a lightweight alternative to traditional contexts, that can be used to select a subset of device resources. This allows the developer to, for example, select SMs from distinct spatial partitions of the GPU and target them via CUDA stream operations, kernel launches, etc.
Here are the broad initial steps to follow to get started:
Start with an initial set of resources. For SM resources, they can be fetched via cuDeviceGetDevResource. In case of workqueues, a new configuration can be used or an existing one queried via the cuDeviceGetDevResource API.
Modify these resources by either partitioning them (in case of SMs) or changing the configuration (in case of workqueues). To partition SMs, we recommend cuDevSmResourceSplit. Changing the workqueue configuration can be done directly in place.
Finalize the specification of resources by creating a descriptor via cuDevResourceGenerateDesc.
Create a green context via cuGreenCtxCreate. This provisions the resource, such as workqueues (until this step it was only a configuration specification).
Create a stream via cuGreenCtxStreamCreate, and use it throughout your application.
SMs
There are two possible partition operations - with cuDevSmResourceSplitByCount the partitions created have to follow default SM count granularity requirements, so it will often be rounded up and aligned to a default value. On the other hand, cuDevSmResourceSplit is explicit and allows for creation of non-equal groups. It will not round up automatically - instead it is the developer’s responsibility to query and set the correct values. These requirements can be queried with cuDeviceGetDevResource to determine the alignment granularity (sm.smCoscheduledAlignment). A general guideline on the default values for each compute architecture:
On all architectures,
Portable code should set smCount to a multiple of the device’s alignment granularity (sm.smCoscheduledAlignment).
On Compute Architecture 7.X, 8.X, and all Tegra SoC:
The smCount must be a multiple of 2.
The alignment (and default value of coscheduledSmCount) is 2.
On Compute Architecture 9.0+:
The smCount must be a multiple of coscheduledSmCount if provided.
The alignment is 8.
While the maximum value for coscheduled SM count is 32 on all Compute Architecture 9.0+, it’s recommended to follow cluster size requirements. The portable cluster size and the max cluster size should be used in order to benefit from this co-scheduling.
Workqueues
For CU_DEV_RESOURCE_TYPE_WORKQUEUE_CONFIG, the resource specifies the expected maximum number of concurrent stream-ordered workloads via the wqConcurrencyLimit field. The sharingScope field determines how workqueue resources are shared:
CU_WORKQUEUE_SCOPE_DEVICE_CTX:Use all shared workqueue resources across all contexts (default driver behavior).CU_WORKQUEUE_SCOPE_GREEN_CTX_BALANCED:When possible, use non-overlapping workqueue resources with other balanced green contexts.
The maximum concurrency limit depends on ::CUDA_DEVICE_MAX_CONNECTIONS and can be queried from the primary context via cuCtxGetDevResource. Configurations may exceed this concurrency limit, but the driver will not guarantee that work submission remains non-overlapping.
For CU_DEV_RESOURCE_TYPE_WORKQUEUE, the resource represents a pre-existing workqueue that can be retrieved from existing contexts or green contexts. This allows reusing workqueue resources across different green contexts.
On Concurrency
Even if the green contexts have disjoint SM partitions, it is not guaranteed that the kernels launched in them will run concurrently or have forward progress guarantees. This is due to other resources that could cause a dependency. Using a combination of disjoint SMs and CU_WORKQUEUE_SCOPE_GREEN_CTX_BALANCED workqueue configurations can provide the best chance of avoiding interference. More resources will be added in the future to provide stronger guarantees.
Additionally, there are two known scenarios, where its possible for the workload to run on more SMs than was provisioned (but never less).
On Volta+ MPS: When
CUDA_MPS_ACTIVE_THREAD_PERCENTAGEis used, the set of SMs that are used for running kernels can be scaled up to the value of SMs used for the MPS client.On Compute Architecture 9.x: When a module with dynamic parallelism (CDP) is loaded, all future kernels running under green contexts may use and share an additional set of 2 SMs.
Memory Copy Operations
Green context restrictions apply to memory copy operations only when the copy is performed using a green context. For cross-device copies, green context restrictions may not be applied.
Empty-initialize an instance of CUdevSmResource. |
|
Empty-initialize an instance of CUdevWorkqueueConfigResource. |
|
Empty-initialize an instance of CUdevWorkqueueResource. |
|
Empty-initialize an array of CUdevResource_v1. |
|
Flags for green context creation |
|
Flags for a CUdevSmResource group |
|
See CUdevSmResourceSplitByCount_flags. |
|
Type of resource |
|
Sharing scope for workqueues |
Creates a green context with a specified set of resources. |
|
Destroys a green context. |
|
Returns a |
|
Get device resources. |
|
Get context resources. |
|
Get green context resources. |
|
Splits |
|
Splits a |
|
Generate a resource descriptor. |
|
Records an event. |
|
Make a green context wait on an event. |
|
Query the green context associated with a stream. |
|
Create a stream for use in the green context. |
|
Returns the unique Id associated with the green context supplied. |
|
Get stream resources. |
Error Log Management Functions#
This section describes the error log management functions of the low-level CUDA driver application programming interface.
See CUlogLevel. |
Register a callback function to receive error log messages. |
|
Unregister a log message callback. |
|
Sets log iterator to point to the end of log buffer, where the next message would be written. |
|
Dump the driver's error log buffer to a file. |
|
Dump accumulated driver logs into a buffer. |
CUDA Checkpointing#
CUDA API versioning support
This sections describes the checkpoint and restore functions of the low-level CUDA driver application programming interface.
The CUDA checkpoint and restore API’s provide a way to save and restore GPU state for full process checkpoints when used with CPU side process checkpointing solutions. They can also be used to pause GPU work and suspend a CUDA process to allow other applications to make use of GPU resources.
Checkpoint and restore capabilities are currently restricted to Linux.
Returns the restore thread ID for a CUDA process. |
|
Returns the process state of a CUDA process. |
|
Lock a running CUDA process. |
|
Checkpoint a CUDA process's GPU memory contents. |
|
Restore a CUDA process's GPU memory contents from its last checkpoint. |
|
Complete a custom-storage checkpoint or restore operation. |
|
Unlock a CUDA process to allow CUDA API calls. |
Profiler Control#
This section describes the profiler control functions of the low-level CUDA driver application programming interface.
Enable profiling. |
|
Disable profiling. |
EGL Interoperability#
This section describes the EGL interoperability functions of the low-level CUDA driver application programming interface.
Registers an EGL image. |
|
Connect CUDA to EGLStream as a consumer. |
|
Connect CUDA to EGLStream as a consumer with given flags. |
|
Disconnect CUDA as a consumer to EGLStream . |
|
Acquire an image frame from the EGLStream with CUDA as a consumer. |
|
Releases the last frame acquired from the EGLStream. |
|
Connect CUDA to EGLStream as a producer. |
|
Disconnect CUDA as a producer to EGLStream . |
|
Present a CUDA eglFrame to the EGL stream. |
|
Return a CUDA eglFrame to the EGL stream released by the consumer. |
|
Get an EGL frame through which to access a registered EGL resource. |
|
Creates an event from EGLSync object. |
OpenGL Interoperability#
This section describes the OpenGL interoperability functions of the low-level CUDA driver application programming interface. Note that mapping of OpenGL resources is performed with the graphics API agnostic, resource mapping interface described in Graphics Interoperability.
Registers an OpenGL buffer object. |
|
Register an OpenGL texture or renderbuffer object. |
|
Gets the CUDA devices associated with the current OpenGL context. |
VDPAU Interoperability#
This section describes the VDPAU interoperability functions of the low-level CUDA driver application programming interface.
Gets the CUDA device associated with a VDPAU device. |
|
Create a CUDA context for interoperability with VDPAU. |
|
Registers a VDPAU |
|
Registers a VDPAU |
Deprecated Context Management#
This section describes the deprecated context management functions of the low-level CUDA driver application programming interface.
Increment a context's usage-count. |
|
Decrement a context's usage-count. |
|
Returns the current shared memory configuration for the current context. |
|
Sets the shared memory configuration for the current context. |
Deprecated Module Management#
This section describes the deprecated module management functions of the low-level CUDA driver application programming interface.
Returns a handle to a texture reference. |
|
Returns a handle to a surface reference. |
Deprecated Execution Control#
This section describes the deprecated execution control functions of the low-level CUDA driver application programming interface.
Sets the block-dimensions for the function. |
|
Sets the dynamic shared-memory size for the function. |
|
Sets the shared memory configuration for a device function. |
|
Sets the parameter size for the function. |
|
Adds an integer parameter to the function's argument list. |
|
Adds a floating-point parameter to the function's argument list. |
|
Adds arbitrary data to the function's argument list. |
|
Adds a texture-reference to the function's argument list. |
|
Launches a CUDA function. |
|
Launches a CUDA function. |
|
Launches a CUDA function. |
Deprecated Texture Reference Management#
This section describes the deprecated texture reference management functions of the low-level CUDA driver application programming interface.
Creates a texture reference. |
|
Destroys a texture reference. |
|
Binds an array as a texture reference. |
|
Binds a mipmapped array to a texture reference. |
|
Binds an address as a texture reference. |
|
Binds an address as a 2D texture reference. |
|
Sets the format for a texture reference. |
|
Sets the addressing mode for a texture reference. |
|
Sets the filtering mode for a texture reference. |
|
Sets the mipmap filtering mode for a texture reference. |
|
Sets the mipmap level bias for a texture reference. |
|
Sets the mipmap min/max mipmap level clamps for a texture reference. |
|
Sets the maximum anisotropy for a texture reference. |
|
Sets the border color for a texture reference. |
|
Sets the flags for a texture reference. |
|
Gets the address associated with a texture reference. |
|
Gets the array bound to a texture reference. |
|
Gets the mipmapped array bound to a texture reference. |
|
Gets the addressing mode used by a texture reference. |
|
Gets the filter-mode used by a texture reference. |
|
Gets the format used by a texture reference. |
|
Gets the mipmap filtering mode for a texture reference. |
|
Gets the mipmap level bias for a texture reference. |
|
Gets the min/max mipmap level clamps for a texture reference. |
|
Gets the maximum anisotropy for a texture reference. |
|
Return the border color of a texture reference. |
|
Gets the flags used by a texture reference. |
Deprecated Surface Reference Management#
This section describes the deprecated surface reference management functions of the low-level CUDA driver application programming interface.
Sets the CUDA array for a surface reference. |
|
Passes back the CUDA array bound to a surface reference. |