6.1. CUDA 驱动程序使用的数据类型

struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
union 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
struct 
union 
struct 

宏定义

#define CUDA_ARRAY3D_2DARRAY 0x01
#define CUDA_ARRAY3D_COLOR_ATTACHMENT 0x20
#define CUDA_ARRAY3D_CUBEMAP 0x04
#define CUDA_ARRAY3D_DEFERRED_MAPPING 0x80
#define CUDA_ARRAY3D_DEPTH_TEXTURE 0x10
#define CUDA_ARRAY3D_LAYERED 0x01
#define CUDA_ARRAY3D_SPARSE 0x40
#define CUDA_ARRAY3D_SURFACE_LDST 0x02
#define CUDA_ARRAY3D_TEXTURE_GATHER 0x08
#define CUDA_ARRAY3D_VIDEO_ENCODE_DECODE 0x100
#define CUDA_COOPERATIVE_LAUNCH_MULTI_DEVICE_NO_POST_LAUNCH_SYNC 0x02
#define CUDA_COOPERATIVE_LAUNCH_MULTI_DEVICE_NO_PRE_LAUNCH_SYNC 0x01
#define CUDA_EGL_INFINITE_TIMEOUT 0xFFFFFFFF
#define CUDA_EXTERNAL_MEMORY_DEDICATED 0x1
#define CUDA_EXTERNAL_SEMAPHORE_SIGNAL_SKIP_NVSCIBUF_MEMSYNC 0x01
#define CUDA_EXTERNAL_SEMAPHORE_WAIT_SKIP_NVSCIBUF_MEMSYNC 0x02
#define CUDA_NVSCISYNC_ATTR_SIGNAL 0x1
#define CUDA_NVSCISYNC_ATTR_WAIT 0x2
#define CUDA_VERSION 12080
#define CU_ARRAY_SPARSE_PROPERTIES_SINGLE_MIPTAIL 0x1
#define CU_DEVICE_CPU ((CUdevice)-1)
#define CU_DEVICE_INVALID ((CUdevice)-2)
#define CU_GRAPH_COND_ASSIGN_DEFAULT 0x1
#define CU_GRAPH_KERNEL_NODE_PORT_DEFAULT 0
#define CU_GRAPH_KERNEL_NODE_PORT_LAUNCH_ORDER 2
#define CU_GRAPH_KERNEL_NODE_PORT_PROGRAMMATIC 1
#define CU_IPC_HANDLE_SIZE 64
#define CU_LAUNCH_PARAM_BUFFER_POINTER
#define CU_LAUNCH_PARAM_BUFFER_POINTER_AS_INT 0x01
#define CU_LAUNCH_PARAM_BUFFER_SIZE
#define CU_LAUNCH_PARAM_BUFFER_SIZE_AS_INT 0x02
#define CU_LAUNCH_PARAM_END
#define CU_LAUNCH_PARAM_END_AS_INT 0x00
#define CU_MEMHOSTALLOC_DEVICEMAP 0x02
#define CU_MEMHOSTALLOC_PORTABLE 0x01
#define CU_MEMHOSTALLOC_WRITECOMBINED 0x04
#define CU_MEMHOSTREGISTER_DEVICEMAP 0x02
#define CU_MEMHOSTREGISTER_IOMEMORY 0x04
#define CU_MEMHOSTREGISTER_PORTABLE 0x01
#define CU_MEMHOSTREGISTER_READ_ONLY 0x08
#define CU_MEM_CREATE_USAGE_HW_DECOMPRESS 0x2
#define CU_MEM_CREATE_USAGE_TILE_POOL 0x1
#define CU_MEM_POOL_CREATE_USAGE_HW_DECOMPRESS 0x2
#define CU_PARAM_TR_DEFAULT -1
#define CU_STREAM_LEGACY ((CUstream)0x1)
#define CU_STREAM_PER_THREAD ((CUstream)0x2)
#define CU_TENSOR_MAP_NUM_QWORDS 16
#define CU_TRSA_OVERRIDE_FORMAT 0x01
#define CU_TRSF_DISABLE_TRILINEAR_OPTIMIZATION 0x20
#define CU_TRSF_NORMALIZED_COORDINATES 0x02
#define CU_TRSF_READ_AS_INTEGER 0x01
#define CU_TRSF_SEAMLESS_CUBEMAP 0x40
#define CU_TRSF_SRGB 0x10
#define MAX_PLANES 3

类型定义

typedef struct CUaccessPolicyWindow_v1 CUaccessPolicyWindow
typedef CUarray_st *  CUarray
typedef void  ( *CUasyncCallback )( CUasyncNotificationInfo*  info, void*  userData,  CUasyncCallbackHandle callback )
typedef CUasyncCallbackEntry_st *  CUasyncCallbackHandle
typedef CUctx_st *  CUcontext
typedef CUdevice_v1 CUdevice
typedef int  CUdevice_v1
typedef CUdeviceptr_v2 CUdeviceptr
typedef unsigned int  CUdeviceptr_v2
typedef CUeglStreamConnection_st *  CUeglStreamConnection
typedef CUevent_st *  CUevent
typedef struct CUexecAffinityParam_v1 CUexecAffinityParam
typedef CUextMemory_st *  CUexternalMemory
typedef CUextSemaphore_st *  CUexternalSemaphore
typedef CUfunc_st *  CUfunction
typedef CUgraph_st *  CUgraph
typedef cuuint64_t  CUgraphConditionalHandle
typedef CUgraphDeviceUpdatableNode_st *  CUgraphDeviceNode
typedef CUgraphExec_st *  CUgraphExec
typedef CUgraphNode_st *  CUgraphNode
typedef CUgraphicsResource_st *  CUgraphicsResource
typedef CUgreenCtx_st *  CUgreenCtx
typedef void(CUDA_CB*  CUhostFn )( void*  userData )
typedef CUkern_st *  CUkernel
typedef CUlib_st *  CUlibrary
typedef CUmemPoolHandle_st *  CUmemoryPool
typedef CUmipmappedArray_st *  CUmipmappedArray
typedef CUmod_st *  CUmodule
typedef size_t(CUDA_CB*  CUoccupancyB2DSize )( int  blockSize )
typedef CUstream_st *  CUstream
typedef void(CUDA_CB*  CUstreamCallback )( CUstream hStream,  CUresult status, void*  userData )
typedef CUsurfObject_v1 CUsurfObject
typedef unsigned long long  CUsurfObject_v1
typedef CUsurfref_st *  CUsurfref
typedef CUtexObject_v1 CUtexObject
typedef unsigned long long  CUtexObject_v1
typedef CUtexref_st *  CUtexref
typedef CUuserObject_st *  CUuserObject

枚举

enum CUDA_POINTER_ATTRIBUTE_ACCESS_FLAGS
enum CUGPUDirectRDMAWritesOrdering
enum CUaccessProperty
enum CUaddress_mode
enum CUarraySparseSubresourceType
enum CUarray_cubemap_face
enum CUarray_format
enum CUasyncNotificationType
enum CUclusterSchedulingPolicy
enum CUcomputemode
enum CUctx_flags
enum CUdeviceNumaConfig
enum CUdevice_P2PAttribute
enum CUdevice_attribute
enum CUdriverProcAddressQueryResult
enum CUdriverProcAddress_flags
enum CUeglColorFormat
enum CUeglFrameType
enum CUeglResourceLocationFlags
enum CUevent_flags
enum CUevent_record_flags
enum CUevent_sched_flags
enum CUevent_wait_flags
enum CUexecAffinityType
enum CUexternalMemoryHandleType
enum CUexternalSemaphoreHandleType
enum CUfilter_mode
enum CUflushGPUDirectRDMAWritesOptions
enum CUflushGPUDirectRDMAWritesScope
enum CUflushGPUDirectRDMAWritesTarget
enum CUfunc_cache
enum CUfunction_attribute
enum CUgraphConditionalNodeType
enum CUgraphDebugDot_flags
enum CUgraphDependencyType
enum CUgraphExecUpdateResult
enum CUgraphInstantiateResult
enum CUgraphInstantiate_flags
enum CUgraphNodeType
enum CUgraphicsMapResourceFlags
enum CUgraphicsRegisterFlags
enum CUipcMem_flags
enum CUjitInputType
enum CUjit_cacheMode
enum CUjit_fallback
enum CUjit_option
enum CUjit_target
enum CUlaunchAttributeID
enum CUlaunchMemSyncDomain
enum CUlibraryOption
enum CUlimit
enum CUmemAccess_flags
enum CUmemAllocationCompType
enum CUmemAllocationGranularity_flags
enum CUmemAllocationHandleType
enum CUmemAllocationType
enum CUmemAttach_flags
enum CUmemHandleType
enum CUmemLocationType
enum CUmemOperationType
enum CUmemPool_attribute
enum CUmemRangeFlags
enum CUmemRangeHandleType
enum CUmem_advise
enum CUmemcpy3DOperandType
enum CUmemcpyFlags
enum CUmemcpySrcAccessOrder
enum CUmemorytype
enum CUmulticastGranularity_flags
enum CUoccupancy_flags
enum CUpointer_attribute
enum CUprocessState
enum CUresourceViewFormat
enum CUresourcetype
enum CUresult
enum CUshared_carveout
enum CUsharedconfig
enum CUstreamBatchMemOpType
enum CUstreamCaptureMode
enum CUstreamCaptureStatus
enum CUstreamMemoryBarrier_flags
enum CUstreamUpdateCaptureDependencies_flags
enum CUstreamWaitValue_flags
enum CUstreamWriteValue_flags
enum CUstream_flags
enum CUtensorMapDataType
enum CUtensorMapFloatOOBfill
enum CUtensorMapIm2ColWideMode
enum CUtensorMapInterleave
enum CUtensorMapL2promotion
enum CUtensorMapSwizzle
enum CUuserObjectRetain_flags
enum CUuserObject_flags
enum cl_context_flags
enum cl_event_flags

宏定义

#define CUDA_ARRAY3D_2DARRAY 0x01

Deprecated, use CUDA_ARRAY3D_LAYERED

#define CUDA_ARRAY3D_COLOR_ATTACHMENT 0x20

This flag indicates that the CUDA array may be bound as a color target in an external graphics API

#define CUDA_ARRAY3D_CUBEMAP 0x04

If set, the CUDA array is a collection of six 2D arrays, representing faces of a cube. The width of such a CUDA array must be equal to its height, and Depth must be six. If CUDA_ARRAY3D_LAYERED flag is also set, then the CUDA array is a collection of cubemaps and Depth must be a multiple of six.

#define CUDA_ARRAY3D_DEFERRED_MAPPING 0x80

This flag if set indicates that the CUDA array or CUDA mipmapped array will allow deferred memory mapping

#define CUDA_ARRAY3D_DEPTH_TEXTURE 0x10

This flag if set indicates that the CUDA array is a DEPTH_TEXTURE.

#define CUDA_ARRAY3D_LAYERED 0x01

If set, the CUDA array is a collection of layers, where each layer is either a 1D or a 2D array and the Depth member of CUDA_ARRAY3D_DESCRIPTOR specifies the number of layers, not the depth of a 3D array.

#define CUDA_ARRAY3D_SPARSE 0x40

This flag if set indicates that the CUDA array or CUDA mipmapped array is a sparse CUDA array or CUDA mipmapped array respectively

#define CUDA_ARRAY3D_SURFACE_LDST 0x02

This flag must be set in order to bind a surface reference to the CUDA array

#define CUDA_ARRAY3D_TEXTURE_GATHER 0x08

This flag must be set in order to perform texture gather operations on a CUDA array.

#define CUDA_ARRAY3D_VIDEO_ENCODE_DECODE 0x100

This flag indicates that the CUDA array will be used for hardware accelerated video encode/decode operations.

#define CUDA_COOPERATIVE_LAUNCH_MULTI_DEVICE_NO_POST_LAUNCH_SYNC 0x02

If set, any subsequent work pushed in a stream that participated in a call to cuLaunchCooperativeKernelMultiDevice will only wait for the kernel launched on the GPU corresponding to that stream to complete before it begins execution.

#define CUDA_COOPERATIVE_LAUNCH_MULTI_DEVICE_NO_PRE_LAUNCH_SYNC 0x01

If set, each kernel launched as part of cuLaunchCooperativeKernelMultiDevice only waits for prior work in the stream corresponding to that GPU to complete before the kernel begins execution.

#define CUDA_EGL_INFINITE_TIMEOUT 0xFFFFFFFF

Indicates that timeout for cuEGLStreamConsumerAcquireFrame is infinite.

#define CUDA_EXTERNAL_MEMORY_DEDICATED 0x1

Indicates that the external memory object is a dedicated resource

#define CUDA_EXTERNAL_SEMAPHORE_SIGNAL_SKIP_NVSCIBUF_MEMSYNC 0x01

When theflagsparameter of CUDA_EXTERNAL_SEMAPHORE_SIGNAL_PARAMS contains this flag, it indicates that signaling an external semaphore object should skip performing appropriate memory synchronization operations over all the external memory objects that are imported as CU_EXTERNAL_MEMORY_HANDLE_TYPE_NVSCIBUF, which otherwise are performed by default to ensure data coherency with other importers of the same NvSciBuf memory objects.

#define CUDA_EXTERNAL_SEMAPHORE_WAIT_SKIP_NVSCIBUF_MEMSYNC 0x02

When theflagsparameter of CUDA_EXTERNAL_SEMAPHORE_WAIT_PARAMS contains this flag, it indicates that waiting on an external semaphore object should skip performing appropriate memory synchronization operations over all the external memory objects that are imported as CU_EXTERNAL_MEMORY_HANDLE_TYPE_NVSCIBUF, which otherwise are performed by default to ensure data coherency with other importers of the same NvSciBuf memory objects.

#define CUDA_NVSCISYNC_ATTR_SIGNAL 0x1

Whenflagsof cuDeviceGetNvSciSyncAttributes is set to this, it indicates that application needs signaler specific NvSciSyncAttr to be filled by cuDeviceGetNvSciSyncAttributes.

#define CUDA_NVSCISYNC_ATTR_WAIT 0x2

Whenflagsof cuDeviceGetNvSciSyncAttributes is set to this, it indicates that application needs waiter specific NvSciSyncAttr to be filled by cuDeviceGetNvSciSyncAttributes.

#define CUDA_VERSION 12080

CUDA API version number

#define CU_ARRAY_SPARSE_PROPERTIES_SINGLE_MIPTAIL 0x1

Indicates that the layered sparse CUDA array or CUDA mipmapped array has a single mip tail region for all layers

#define CU_DEVICE_CPU ((CUdevice)-1)

Device that represents the CPU

#define CU_DEVICE_INVALID ((CUdevice)-2)

Device that represents an invalid device

#define CU_GRAPH_COND_ASSIGN_DEFAULT 0x1

Conditional node handle flags Default value is applied when graph is launched.

#define CU_GRAPH_KERNEL_NODE_PORT_DEFAULT 0

This port activates when the kernel has finished executing.

#define CU_GRAPH_KERNEL_NODE_PORT_LAUNCH_ORDER 2

This port activates when all blocks of the kernel have begun execution. See also CU_LAUNCH_ATTRIBUTE_LAUNCH_COMPLETION_EVENT.

#define CU_GRAPH_KERNEL_NODE_PORT_PROGRAMMATIC 1

This port activates when all blocks of the kernel have performed cudaTriggerProgrammaticLaunchCompletion() or have terminated. It must be used with edge type CU_GRAPH_DEPENDENCY_TYPE_PROGRAMMATIC. See also CU_LAUNCH_ATTRIBUTE_PROGRAMMATIC_EVENT.

#define CU_IPC_HANDLE_SIZE 64

CUDA IPC handle size

#define CU_LAUNCH_PARAM_BUFFER_POINTER

Indicator that the next value in theextraparameter to cuLaunchKernel will be a pointer to a buffer containing all kernel parameters used for launching kernelf. This buffer needs to honor all alignment/padding requirements of the individual parameters. If CU_LAUNCH_PARAM_BUFFER_SIZE is not also specified in theextraarray, then CU_LAUNCH_PARAM_BUFFER_POINTER will have no effect.

Value

((void*)CU_LAUNCH_PARAM_BUFFER_POINTER_AS_INT)

#define CU_LAUNCH_PARAM_BUFFER_POINTER_AS_INT 0x01

C++ compile time constant for CU_LAUNCH_PARAM_BUFFER_POINTER

#define CU_LAUNCH_PARAM_BUFFER_SIZE

Indicator that the next value in theextraparameter to cuLaunchKernel will be a pointer to a size_t which contains the size of the buffer specified with CU_LAUNCH_PARAM_BUFFER_POINTER. It is required that CU_LAUNCH_PARAM_BUFFER_POINTER also be specified in theextraarray if the value associated with CU_LAUNCH_PARAM_BUFFER_SIZE is not zero.

Value

((void*)CU_LAUNCH_PARAM_BUFFER_SIZE_AS_INT)

#define CU_LAUNCH_PARAM_BUFFER_SIZE_AS_INT 0x02

C++ compile time constant for CU_LAUNCH_PARAM_BUFFER_SIZE

#define CU_LAUNCH_PARAM_END

End of array terminator for theextraparameter to cuLaunchKernel

Value

((void*)CU_LAUNCH_PARAM_END_AS_INT)

#define CU_LAUNCH_PARAM_END_AS_INT 0x00

C++ compile time constant for CU_LAUNCH_PARAM_END

#define CU_MEMHOSTALLOC_DEVICEMAP 0x02

If set, host memory is mapped into CUDA address space and cuMemHostGetDevicePointer() may be called on the host pointer. Flag for cuMemHostAlloc()

#define CU_MEMHOSTALLOC_PORTABLE 0x01

If set, host memory is portable between CUDA contexts. Flag for cuMemHostAlloc()

#define CU_MEMHOSTALLOC_WRITECOMBINED 0x04

If set, host memory is allocated as write-combined - fast to write, faster to DMA, slow to read except via SSE4 streaming load instruction (MOVNTDQA). Flag for cuMemHostAlloc()

#define CU_MEMHOSTREGISTER_DEVICEMAP 0x02

If set, host memory is mapped into CUDA address space and cuMemHostGetDevicePointer() may be called on the host pointer. Flag for cuMemHostRegister()

#define CU_MEMHOSTREGISTER_IOMEMORY 0x04

If set, the passed memory pointer is treated as pointing to some memory-mapped I/O space, e.g. belonging to a third-party PCIe device. On Windows the flag is a no-op. On Linux that memory is marked as non cache-coherent for the GPU and is expected to be physically contiguous. It may return CUDA_ERROR_NOT_PERMITTED if run as an unprivileged user, CUDA_ERROR_NOT_SUPPORTED on older Linux kernel versions. On all other platforms, it is not supported and CUDA_ERROR_NOT_SUPPORTED is returned. Flag for cuMemHostRegister()

#define CU_MEMHOSTREGISTER_PORTABLE 0x01

If set, host memory is portable between CUDA contexts. Flag for cuMemHostRegister()

#define CU_MEMHOSTREGISTER_READ_ONLY 0x08

If set, the passed memory pointer is treated as pointing to memory that is considered read-only by the device. On platforms without CU_DEVICE_ATTRIBUTE_PAGEABLE_MEMORY_ACCESS_USES_HOST_PAGE_TABLES, this flag is required in order to register memory mapped to the CPU as read-only. Support for the use of this flag can be queried from the device attribute CU_DEVICE_ATTRIBUTE_READ_ONLY_HOST_REGISTER_SUPPORTED. Using this flag with a current context associated with a device that does not have this attribute set will cause cuMemHostRegister to error with CUDA_ERROR_NOT_SUPPORTED.

#define CU_MEM_CREATE_USAGE_HW_DECOMPRESS 0x2

This flag, if set, indicates that the memory will be used as a buffer for hardware accelerated decompression.

#define CU_MEM_CREATE_USAGE_TILE_POOL 0x1

This flag if set indicates that the memory will be used as a tile pool.

#define CU_MEM_POOL_CREATE_USAGE_HW_DECOMPRESS 0x2

This flag, if set, indicates that the memory will be used as a buffer for hardware accelerated decompression.

#define CU_PARAM_TR_DEFAULT -1

For texture references loaded into the module, use default texunit from texture reference.

#define CU_STREAM_LEGACY ((CUstream)0x1)

Legacy stream handle

Stream handle that can be passed as a CUstream to use an implicit stream with legacy synchronization behavior.

See details of the synchronization behavior.

#define CU_STREAM_PER_THREAD ((CUstream)0x2)

Per-thread stream handle

Stream handle that can be passed as a CUstream to use an implicit stream with per-thread synchronization behavior.

See details of the synchronization behavior.

#define CU_TENSOR_MAP_NUM_QWORDS 16

Size of tensor map descriptor

#define CU_TRSA_OVERRIDE_FORMAT 0x01

Override the texref format with a format inferred from the array. Flag for cuTexRefSetArray()

#define CU_TRSF_DISABLE_TRILINEAR_OPTIMIZATION 0x20

Disable any trilinear filtering optimizations. Flag for cuTexRefSetFlags() and cuTexObjectCreate()

#define CU_TRSF_NORMALIZED_COORDINATES 0x02

Use normalized texture coordinates in the range [0,1) instead of [0,dim). Flag for cuTexRefSetFlags() and cuTexObjectCreate()

#define CU_TRSF_READ_AS_INTEGER 0x01

Read the texture as integers rather than promoting the values to floats in the range [0,1]. Flag for cuTexRefSetFlags() and cuTexObjectCreate()

#define CU_TRSF_SEAMLESS_CUBEMAP 0x40

Enable seamless cube map filtering. Flag for cuTexObjectCreate()

#define CU_TRSF_SRGB 0x10

Perform sRGB->linear conversion during texture read. Flag for cuTexRefSetFlags() and cuTexObjectCreate()

#define MAX_PLANES 3

Maximum number of planes per frame

类型定义

typedef struct CUaccessPolicyWindow_v1 CUaccessPolicyWindow

Access policy window

typedef CUarray_st * CUarray

CUDA array

void ( *CUasyncCallback )( CUasyncNotificationInfo*  info, void*  userData,  CUasyncCallbackHandle callback )

CUDA async notification callback

Parameters
info
Information describing what actions to take as a result of this trim notification.
userData
Pointer to user defined data provided at registration.
CUasyncCallbackHandle callback
typedef CUasyncCallbackEntry_st * CUasyncCallbackHandle

CUDA async notification callback handle

typedef CUctx_st * CUcontext

A regular context handle

typedef CUdevice_v1 CUdevice

CUDA device

typedef int CUdevice_v1

CUDA device

typedef CUdeviceptr_v2 CUdeviceptr

CUDA device pointer

typedef unsigned int CUdeviceptr_v2

CUDA device pointer CUdeviceptr is defined as an unsigned integer type whose size matches the size of a pointer on the target platform.

typedef CUeglStreamConnection_st * CUeglStreamConnection

CUDA EGLSream Connection

typedef CUevent_st * CUevent

CUDA event

typedef struct CUexecAffinityParam_v1 CUexecAffinityParam

Execution Affinity Parameters

typedef CUextMemory_st * CUexternalMemory

CUDA external memory

typedef CUextSemaphore_st * CUexternalSemaphore

CUDA external semaphore

typedef CUfunc_st * CUfunction

CUDA function

typedef CUgraph_st * CUgraph

CUDA graph

typedef cuuint64_t CUgraphConditionalHandle

CUDA graph conditional handle

typedef CUgraphDeviceUpdatableNode_st * CUgraphDeviceNode

CUDA graph device node handle

typedef CUgraphExec_st * CUgraphExec

CUDA executable graph

typedef CUgraphNode_st * CUgraphNode

CUDA graph node

typedef CUgraphicsResource_st * CUgraphicsResource

CUDA graphics interop resource

typedef CUgreenCtx_st * CUgreenCtx

绿色的上下文句柄。此句柄在同一时间只能由一个 CPU 线程安全地使用。通过 cuGreenCtxCreate 创建。

void(CUDA_CB* CUhostFn )( void*  userData )

CUDA 主机函数

Parameters
userData
传递给函数的参数值
typedef CUkern_st * CUkernel

CUDA 内核

typedef CUlib_st * CUlibrary

CUDA 库

typedef CUmemPoolHandle_st * CUmemoryPool

CUDA 内存池

typedef CUmipmappedArray_st * CUmipmappedArray

CUDA 多级渐远纹理数组

typedef CUmod_st * CUmodule

CUDA 模块

size_t(CUDA_CB* CUoccupancyB2DSize )( int  blockSize )

特定内核的块大小到每块动态共享内存的映射

Parameters
blockSize
内核的块大小。
返回值

一个块所需的动态共享内存。

typedef CUstream_st * CUstream

CUDA 流

void(CUDA_CB* CUstreamCallback )( CUstream hStream,  CUresult status, void*  userData )

CUDA 流回调

Parameters
hStream
回调添加到的流,如传递给 cuStreamAddCallback。可能为 NULL。
CUresult 状态
userData
注册时提供的用户参数。
typedef CUsurfObject_v1 CUsurfObject

表示 CUDA 表面对象的不透明值

typedef unsigned long long CUsurfObject_v1

表示 CUDA 表面对象的不透明值

typedef CUsurfref_st * CUsurfref

CUDA 表面引用

typedef CUtexObject_v1 CUtexObject

表示 CUDA 纹理对象的不透明值

typedef unsigned long long CUtexObject_v1

表示 CUDA 纹理对象的不透明值

typedef CUtexref_st * CUtexref

CUDA 纹理引用

typedef CUuserObject_st * CUuserObject

用于图的 CUDA 用户对象

枚举

enum CUDA_POINTER_ATTRIBUTE_ACCESS_FLAGS

访问标志,指定当前上下文的设备对所引用内存的访问级别。

CU_POINTER_ATTRIBUTE_ACCESS_FLAG_NONE = 0x0
无访问权限,意味着设备根本无法访问此内存,因此必须通过可访问的内存进行暂存,才能完成某些操作
CU_POINTER_ATTRIBUTE_ACCESS_FLAG_READ = 0x1
只读访问权限,意味着对此内存的写入被视为无效访问,因此在这种情况下会返回错误。
CU_POINTER_ATTRIBUTE_ACCESS_FLAG_READWRITE = 0x3
读写访问权限,设备对内存具有完全的读写访问权限
enum CUGPUDirectRDMAWritesOrdering

GPUDirect RDMA 写入的平台原生排序

CU_GPU_DIRECT_RDMA_WRITES_ORDERING_NONE = 0
设备本身不支持远程写入排序。如果支持,可以利用 cuFlushGPUDirectRDMAWrites()
CU_GPU_DIRECT_RDMA_WRITES_ORDERING_OWNER = 100
原生情况下,设备可以一致地消费远程写入,但其他 CUDA 设备可能无法。
CU_GPU_DIRECT_RDMA_WRITES_ORDERING_ALL_DEVICES = 200
系统中的任何 CUDA 设备都可以一致地消费对该设备的远程写入。
enum CUaccessProperty

使用 CUaccessPolicyWindow 为 hitProp 和 missProp 成员指定性能提示。

CU_ACCESS_PROPERTY_NORMAL = 0
正常缓存持久性。
CU_ACCESS_PROPERTY_STREAMING = 1
流式访问不太可能从缓存中持久存在。
CU_ACCESS_PROPERTY_PERSISTING = 2
持久访问更可能在缓存中持久存在。
enum CUaddress_mode

纹理引用寻址模式

CU_TR_ADDRESS_MODE_WRAP = 0
环绕寻址模式
CU_TR_ADDRESS_MODE_CLAMP = 1
钳制到边缘寻址模式
CU_TR_ADDRESS_MODE_MIRROR = 2
镜像寻址模式
CU_TR_ADDRESS_MODE_BORDER = 3
边界寻址模式
enum CUarraySparseSubresourceType

稀疏子资源类型

CU_ARRAY_SPARSE_SUBRESOURCE_TYPE_SPARSE_LEVEL = 0
CU_ARRAY_SPARSE_SUBRESOURCE_TYPE_MIPTAIL = 1
enum CUarray_cubemap_face

立方体面索引

CU_CUBEMAP_FACE_POSITIVE_X = 0x00
立方体贴图的正 X 面
CU_CUBEMAP_FACE_NEGATIVE_X = 0x01
立方体贴图的负 X 面
CU_CUBEMAP_FACE_POSITIVE_Y = 0x02
立方体贴图的正 Y 面
CU_CUBEMAP_FACE_NEGATIVE_Y = 0x03
立方体贴图的负 Y 面
CU_CUBEMAP_FACE_POSITIVE_Z = 0x04
立方体贴图的正 Z 面
CU_CUBEMAP_FACE_NEGATIVE_Z = 0x05
立方体贴图的负 Z 面
enum CUarray_format

数组格式

CU_AD_FORMAT_UNSIGNED_INT8 = 0x01
无符号 8 位整数
CU_AD_FORMAT_UNSIGNED_INT16 = 0x02
无符号 16 位整数
CU_AD_FORMAT_UNSIGNED_INT32 = 0x03
无符号 32 位整数
CU_AD_FORMAT_SIGNED_INT8 = 0x08
有符号 8 位整数
CU_AD_FORMAT_SIGNED_INT16 = 0x09
有符号 16 位整数
CU_AD_FORMAT_SIGNED_INT32 = 0x0a
有符号 32 位整数
CU_AD_FORMAT_HALF = 0x10
16 位浮点数
CU_AD_FORMAT_FLOAT = 0x20
32 位浮点数
CU_AD_FORMAT_NV12 = 0xb0
8 位 YUV 平面格式,采用 4:2:0 采样
CU_AD_FORMAT_UNORM_INT8X1 = 0xc0
1 通道无符号 8 位归一化整数
CU_AD_FORMAT_UNORM_INT8X2 = 0xc1
2 通道无符号 8 位归一化整数
CU_AD_FORMAT_UNORM_INT8X4 = 0xc2
4 通道无符号 8 位归一化整数
CU_AD_FORMAT_UNORM_INT16X1 = 0xc3
1 通道无符号 16 位归一化整数
CU_AD_FORMAT_UNORM_INT16X2 = 0xc4
2 通道无符号 16 位归一化整数
CU_AD_FORMAT_UNORM_INT16X4 = 0xc5
4 通道无符号 16 位归一化整数
CU_AD_FORMAT_SNORM_INT8X1 = 0xc6
1 通道有符号 8 位归一化整数
CU_AD_FORMAT_SNORM_INT8X2 = 0xc7
2 通道有符号 8 位归一化整数
CU_AD_FORMAT_SNORM_INT8X4 = 0xc8
4 通道有符号 8 位归一化整数
CU_AD_FORMAT_SNORM_INT16X1 = 0xc9
1 通道有符号 16 位归一化整数
CU_AD_FORMAT_SNORM_INT16X2 = 0xca
2 通道有符号 16 位归一化整数
CU_AD_FORMAT_SNORM_INT16X4 = 0xcb
4 通道有符号 16 位归一化整数
CU_AD_FORMAT_BC1_UNORM = 0x91
4 通道无符号归一化块压缩(BC1 压缩)格式
CU_AD_FORMAT_BC1_UNORM_SRGB = 0x92
4 通道无符号归一化块压缩(BC1 压缩)格式,带 sRGB 编码
CU_AD_FORMAT_BC2_UNORM = 0x93
4 通道无符号归一化块压缩(BC2 压缩)格式
CU_AD_FORMAT_BC2_UNORM_SRGB = 0x94
4 通道无符号归一化块压缩(BC2 压缩)格式,带 sRGB 编码
CU_AD_FORMAT_BC3_UNORM = 0x95
4 通道无符号归一化块压缩(BC3 压缩)格式
CU_AD_FORMAT_BC3_UNORM_SRGB = 0x96
4 通道无符号归一化块压缩(BC3 压缩)格式,带 sRGB 编码
CU_AD_FORMAT_BC4_UNORM = 0x97
1 通道无符号归一化块压缩(BC4 压缩)格式
CU_AD_FORMAT_BC4_SNORM = 0x98
1 通道有符号归一化块压缩(BC4 压缩)格式
CU_AD_FORMAT_BC5_UNORM = 0x99
2 通道无符号归一化块压缩(BC5 压缩)格式
CU_AD_FORMAT_BC5_SNORM = 0x9a
2 通道有符号归一化块压缩(BC5 压缩)格式
CU_AD_FORMAT_BC6H_UF16 = 0x9b
3 通道无符号半精度浮点块压缩(BC6H 压缩)格式
CU_AD_FORMAT_BC6H_SF16 = 0x9c
3 通道有符号半精度浮点块压缩(BC6H 压缩)格式
CU_AD_FORMAT_BC7_UNORM = 0x9d
4 通道无符号归一化块压缩(BC7 压缩)格式
CU_AD_FORMAT_BC7_UNORM_SRGB = 0x9e
4 通道无符号归一化块压缩(BC7 压缩)格式,带 sRGB 编码
CU_AD_FORMAT_P010 = 0x9f
10 位 YUV 平面格式,采用 4:2:0 采样
CU_AD_FORMAT_P016 = 0xa1
16 位 YUV 平面格式,采用 4:2:0 采样
CU_AD_FORMAT_NV16 = 0xa2
8 位 YUV 平面格式,采用 4:2:2 采样
CU_AD_FORMAT_P210 = 0xa3
10 位 YUV 平面格式,采用 4:2:2 采样
CU_AD_FORMAT_P216 = 0xa4
16 位 YUV 平面格式,采用 4:2:2 采样
CU_AD_FORMAT_YUY2 = 0xa5
2 通道,8 位 YUV 打包平面格式,采用 4:2:2 采样
CU_AD_FORMAT_Y210 = 0xa6
2 通道,10 位 YUV 打包平面格式,采用 4:2:2 采样
CU_AD_FORMAT_Y216 = 0xa7
2 通道,16 位 YUV 打包平面格式,采用 4:2:2 采样
CU_AD_FORMAT_AYUV = 0xa8
4 通道,8 位 YUV 打包平面格式,采用 4:4:4 采样
CU_AD_FORMAT_Y410 = 0xa9
10 位 YUV 打包平面格式,采用 4:4:4 采样
CU_AD_FORMAT_Y416 = 0xb1
4 通道,12 位 YUV 打包平面格式,采用 4:4:4 采样
CU_AD_FORMAT_Y444_PLANAR8 = 0xb2
3 通道 8 位 YUV 平面格式,采用 4:4:4 采样
CU_AD_FORMAT_Y444_PLANAR10 = 0xb3
3 通道 10 位 YUV 平面格式,采用 4:4:4 采样
CU_AD_FORMAT_YUV444_8bit_SemiPlanar = 0xb4
3 通道 8 位 YUV 半平面格式,采用 4:4:4 采样
CU_AD_FORMAT_YUV444_16bit_SemiPlanar = 0xb5
3 通道 16 位 YUV 半平面格式,采用 4:4:4 采样
CU_AD_FORMAT_UNORM_INT_101010_2 = 0x50
4 通道 unorm R10G10B10A2 RGB 格式
CU_AD_FORMAT_MAX = 0x7FFFFFFF
enum CUasyncNotificationType

可以发送的异步通知类型

CU_ASYNC_NOTIFICATION_TYPE_OVER_BUDGET = 0x1
enum CUclusterSchedulingPolicy

集群调度策略。这些策略可以传递给 cuFuncSetAttributecuKernelSetAttribute

CU_CLUSTER_SCHEDULING_POLICY_DEFAULT = 0
默认策略
CU_CLUSTER_SCHEDULING_POLICY_SPREAD = 1
将集群内的块分散到 SM
CU_CLUSTER_SCHEDULING_POLICY_LOAD_BALANCING = 2
允许硬件将集群中的块负载均衡到 SM
enum CUcomputemode

计算模式

CU_COMPUTEMODE_DEFAULT = 0
默认计算模式(每个设备允许多个上下文)
CU_COMPUTEMODE_PROHIBITED = 2
禁止计算模式(此时无法在此设备上创建任何上下文)
CU_COMPUTEMODE_EXCLUSIVE_PROCESS = 3
独占进程计算模式(一个进程一次只能在此设备上使用一个上下文)
enum CUctx_flags

上下文创建标志

CU_CTX_SCHED_AUTO = 0x00
自动调度
CU_CTX_SCHED_SPIN = 0x01
设置自旋作为默认调度
CU_CTX_SCHED_YIELD = 0x02
设置让步作为默认调度
CU_CTX_SCHED_BLOCKING_SYNC = 0x04
设置阻塞同步作为默认调度
CU_CTX_BLOCKING_SYNC = 0x04
已弃用

此标志已在 CUDA 4.0 中弃用,并被 CU_CTX_SCHED_BLOCKING_SYNC 替换。

设置阻塞同步作为默认调度

CU_CTX_SCHED_MASK = 0x07
CU_CTX_MAP_HOST = 0x08
已弃用

此标志已在 CUDA 11.0 中弃用,并且不再有任何效果。自 CUDA 3.2 起,所有上下文的行为都如同启用了该标志。

CU_CTX_LMEM_RESIZE_TO_MAX = 0x10
启动后保持本地内存分配
CU_CTX_COREDUMP_ENABLE = 0x20
从此上下文中的异常触发核心转储
CU_CTX_USER_COREDUMP_ENABLE = 0x40
启用用户管道以在此上下文中触发核心转储
CU_CTX_SYNC_MEMOPS = 0x80
确保此上下文上的同步内存操作将同步
CU_CTX_FLAGS_MASK = 0xFF
enum CUdeviceNumaConfig

CUDA 设备 NUMA 配置

CU_DEVICE_NUMA_CONFIG_NONE = 0
GPU 不是 NUMA 节点
CU_DEVICE_NUMA_CONFIG_NUMA_NODE
GPU 是 NUMA 节点,CU_DEVICE_ATTRIBUTE_NUMA_ID 包含其 NUMA ID
enum CUdevice_P2PAttribute

P2P 属性

CU_DEVICE_P2P_ATTRIBUTE_PERFORMANCE_RANK = 0x01
指示两个设备之间链路性能的相对值
CU_DEVICE_P2P_ATTRIBUTE_ACCESS_SUPPORTED = 0x02
启用 P2P 访问
CU_DEVICE_P2P_ATTRIBUTE_NATIVE_ATOMIC_SUPPORTED = 0x03
支持通过链路的原子操作
CU_DEVICE_P2P_ATTRIBUTE_ACCESS_ACCESS_SUPPORTED = 0x04
已弃用

使用 CU_DEVICE_P2P_ATTRIBUTE_CUDA_ARRAY_ACCESS_SUPPORTED 代替

CU_DEVICE_P2P_ATTRIBUTE_CUDA_ARRAY_ACCESS_SUPPORTED = 0x04
支持通过链路访问 CUDA 数组
enum CUdevice_attribute

设备属性

CU_DEVICE_ATTRIBUTE_MAX_THREADS_PER_BLOCK = 1
每个块的最大线程数
CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_X = 2
最大块维度 X
CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_Y = 3
最大块维度 Y
CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_Z = 4
最大块维度 Z
CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_X = 5
最大网格维度 X
CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_Y = 6
最大网格维度 Y
CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_Z = 7
最大网格维度 Z
CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_BLOCK = 8
每个块可用的最大共享内存(字节)
CU_DEVICE_ATTRIBUTE_SHARED_MEMORY_PER_BLOCK = 8
已弃用,请使用 CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_BLOCK
CU_DEVICE_ATTRIBUTE_TOTAL_CONSTANT_MEMORY = 9
设备上 __constant__ 变量可用的内存(CUDA C 内核中,字节为单位)
CU_DEVICE_ATTRIBUTE_WARP_SIZE = 10
线程束大小(线程数)
CU_DEVICE_ATTRIBUTE_MAX_PITCH = 11
内存复制允许的最大步幅(字节)
CU_DEVICE_ATTRIBUTE_MAX_REGISTERS_PER_BLOCK = 12
每个块可用的最大 32 位寄存器数
CU_DEVICE_ATTRIBUTE_REGISTERS_PER_BLOCK = 12
已弃用,请使用 CU_DEVICE_ATTRIBUTE_MAX_REGISTERS_PER_BLOCK
CU_DEVICE_ATTRIBUTE_CLOCK_RATE = 13
典型时钟频率(千赫兹)
CU_DEVICE_ATTRIBUTE_TEXTURE_ALIGNMENT = 14
纹理的对齐要求
CU_DEVICE_ATTRIBUTE_GPU_OVERLAP = 15
设备可能可以并发复制内存和执行内核。已弃用。请改用 CU_DEVICE_ATTRIBUTE_ASYNC_ENGINE_COUNT。
CU_DEVICE_ATTRIBUTE_MULTIPROCESSOR_COUNT = 16
设备上的多处理器数量
CU_DEVICE_ATTRIBUTE_KERNEL_EXEC_TIMEOUT = 17
指定内核是否具有运行时限制
CU_DEVICE_ATTRIBUTE_INTEGRATED = 18
设备与主机内存集成
CU_DEVICE_ATTRIBUTE_CAN_MAP_HOST_MEMORY = 19
设备可以将主机内存映射到 CUDA 地址空间
CU_DEVICE_ATTRIBUTE_COMPUTE_MODE = 20
计算模式(有关详细信息,请参见 CUcomputemode
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_WIDTH = 21
最大 1D 纹理宽度
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_WIDTH = 22
最大 2D 纹理宽度
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_HEIGHT = 23
最大 2D 纹理高度
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_WIDTH = 24
最大 3D 纹理宽度
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_HEIGHT = 25
最大 3D 纹理高度
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_DEPTH = 26
最大 3D 纹理深度
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_WIDTH = 27
最大 2D 分层纹理宽度
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_HEIGHT = 28
最大 2D 分层纹理高度
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_LAYERS = 29
2D 分层纹理中的最大层数
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_ARRAY_WIDTH = 27
已弃用,请使用 CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_WIDTH
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_ARRAY_HEIGHT = 28
已弃用,请使用 CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_HEIGHT
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_ARRAY_NUMSLICES = 29
已弃用,请使用 CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_LAYERS
CU_DEVICE_ATTRIBUTE_SURFACE_ALIGNMENT = 30
表面的对齐要求
CU_DEVICE_ATTRIBUTE_CONCURRENT_KERNELS = 31
设备可能可以并发执行多个内核
CU_DEVICE_ATTRIBUTE_ECC_ENABLED = 32
设备已启用 ECC 支持
CU_DEVICE_ATTRIBUTE_PCI_BUS_ID = 33
设备的 PCI 总线 ID
CU_DEVICE_ATTRIBUTE_PCI_DEVICE_ID = 34
设备的 PCI 设备 ID
CU_DEVICE_ATTRIBUTE_TCC_DRIVER = 35
设备正在使用 TCC 驱动程序模型
CU_DEVICE_ATTRIBUTE_MEMORY_CLOCK_RATE = 36
峰值内存时钟频率(千赫兹)
CU_DEVICE_ATTRIBUTE_GLOBAL_MEMORY_BUS_WIDTH = 37
全局内存总线宽度(位)
CU_DEVICE_ATTRIBUTE_L2_CACHE_SIZE = 38
L2 缓存的大小(字节)
CU_DEVICE_ATTRIBUTE_MAX_THREADS_PER_MULTIPROCESSOR = 39
每个多处理器的最大常驻线程数
CU_DEVICE_ATTRIBUTE_ASYNC_ENGINE_COUNT = 40
异步引擎的数量
CU_DEVICE_ATTRIBUTE_UNIFIED_ADDRESSING = 41
设备与主机共享统一地址空间
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_LAYERED_WIDTH = 42
最大 1D 分层纹理宽度
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_LAYERED_LAYERS = 43
1D 分层纹理中的最大层数
CU_DEVICE_ATTRIBUTE_CAN_TEX2D_GATHER = 44
已弃用,请勿使用。
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_GATHER_WIDTH = 45
如果设置了 CUDA_ARRAY3D_TEXTURE_GATHER,则为最大 2D 纹理宽度
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_GATHER_HEIGHT = 46
如果设置了 CUDA_ARRAY3D_TEXTURE_GATHER,则为最大 2D 纹理高度
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_WIDTH_ALTERNATE = 47
备用最大 3D 纹理宽度
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_HEIGHT_ALTERNATE = 48
备用最大 3D 纹理高度
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_DEPTH_ALTERNATE = 49
备用最大 3D 纹理深度
CU_DEVICE_ATTRIBUTE_PCI_DOMAIN_ID = 50
设备的 PCI 域 ID
CU_DEVICE_ATTRIBUTE_TEXTURE_PITCH_ALIGNMENT = 51
纹理的步幅对齐要求
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURECUBEMAP_WIDTH = 52
最大立方体贴图纹理宽度/高度
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURECUBEMAP_LAYERED_WIDTH = 53
最大立方体贴图分层纹理宽度/高度
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURECUBEMAP_LAYERED_LAYERS = 54
立方体贴图分层纹理中的最大层数
CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE1D_WIDTH = 55
最大 1D 表面宽度
CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_WIDTH = 56
最大 2D 表面宽度
CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_HEIGHT = 57
最大 2D 表面高度
CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE3D_WIDTH = 58
最大 3D 表面宽度
CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE3D_HEIGHT = 59
最大 3D 表面高度
CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE3D_DEPTH = 60
最大 3D 表面深度
CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE1D_LAYERED_WIDTH = 61
最大 1D 分层表面宽度
CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE1D_LAYERED_LAYERS = 62
1D 分层表面中的最大层数
CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_LAYERED_WIDTH = 63
最大 2D 分层表面宽度
CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_LAYERED_HEIGHT = 64
最大 2D 分层表面高度
CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_LAYERED_LAYERS = 65
2D 分层表面中的最大层数
CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACECUBEMAP_WIDTH = 66
最大立方体贴图表面宽度
CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACECUBEMAP_LAYERED_WIDTH = 67
最大立方体贴图分层表面宽度
CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACECUBEMAP_LAYERED_LAYERS = 68
立方体贴图分层表面中的最大层数
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_LINEAR_WIDTH = 69
已弃用,请勿使用。请改用 cudaDeviceGetTexture1DLinearMaxWidth()cuDeviceGetTexture1DLinearMaxWidth()
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LINEAR_WIDTH = 70
最大 2D 线性纹理宽度
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LINEAR_HEIGHT = 71
最大 2D 线性纹理高度
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LINEAR_PITCH = 72
最大 2D 线性纹理步幅(字节)
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_MIPMAPPED_WIDTH = 73
最大多级渐远纹理 2D 纹理宽度
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_MIPMAPPED_HEIGHT = 74
最大多级渐远纹理 2D 纹理高度
CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MAJOR = 75
主计算能力版本号
CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MINOR = 76
次要计算能力版本号
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_MIPMAPPED_WIDTH = 77
最大多级渐远纹理 1D 纹理宽度
CU_DEVICE_ATTRIBUTE_STREAM_PRIORITIES_SUPPORTED = 78
设备支持流优先级
CU_DEVICE_ATTRIBUTE_GLOBAL_L1_CACHE_SUPPORTED = 79
设备支持在 L1 中缓存全局内存
CU_DEVICE_ATTRIBUTE_LOCAL_L1_CACHE_SUPPORTED = 80
设备支持在 L1 中缓存本地内存
CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_MULTIPROCESSOR = 81
每个多处理器可用的最大共享内存(字节)
CU_DEVICE_ATTRIBUTE_MAX_REGISTERS_PER_MULTIPROCESSOR = 82
每个多处理器可用的最大 32 位寄存器数
CU_DEVICE_ATTRIBUTE_MANAGED_MEMORY = 83
设备可以在此系统上分配托管内存
CU_DEVICE_ATTRIBUTE_MULTI_GPU_BOARD = 84
设备位于多 GPU 板上
CU_DEVICE_ATTRIBUTE_MULTI_GPU_BOARD_GROUP_ID = 85
同一多 GPU 板卡上的一组设备的唯一 ID
CU_DEVICE_ATTRIBUTE_HOST_NATIVE_ATOMIC_SUPPORTED = 86
设备与主机之间的链接支持原生原子操作(这是一个占位符属性,当前任何硬件都不支持)
CU_DEVICE_ATTRIBUTE_SINGLE_TO_DOUBLE_PRECISION_PERF_RATIO = 87
单精度性能(以每秒浮点运算次数为单位)与双精度性能之比
CU_DEVICE_ATTRIBUTE_PAGEABLE_MEMORY_ACCESS = 88
设备支持一致地访问可分页内存,而无需对其调用 cudaHostRegister
CU_DEVICE_ATTRIBUTE_CONCURRENT_MANAGED_ACCESS = 89
设备可以与 CPU 并发地一致访问托管内存
CU_DEVICE_ATTRIBUTE_COMPUTE_PREEMPTION_SUPPORTED = 90
设备支持计算抢占。
CU_DEVICE_ATTRIBUTE_CAN_USE_HOST_POINTER_FOR_REGISTERED_MEM = 91
设备可以在与 CPU 相同的虚拟地址访问主机注册内存
CU_DEVICE_ATTRIBUTE_CAN_USE_STREAM_MEM_OPS_V1 = 92
已弃用,以及 v1 MemOps API,cuStreamBatchMemOp 和相关 API 受到支持。
CU_DEVICE_ATTRIBUTE_CAN_USE_64_BIT_STREAM_MEM_OPS_V1 = 93
已弃用,以及 v1 MemOps API,cuStreamBatchMemOp 和相关 API 支持 64 位操作。
CU_DEVICE_ATTRIBUTE_CAN_USE_STREAM_WAIT_VALUE_NOR_V1 = 94
已弃用,以及 v1 MemOps API,CU_STREAM_WAIT_VALUE_NOR 受到支持。
CU_DEVICE_ATTRIBUTE_COOPERATIVE_LAUNCH = 95
设备支持通过 cuLaunchCooperativeKernel 启动协同内核
CU_DEVICE_ATTRIBUTE_COOPERATIVE_MULTI_DEVICE_LAUNCH = 96
已弃用,cuLaunchCooperativeKernelMultiDevice 已弃用。
CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_BLOCK_OPTIN = 97
每个块的最大可选共享内存
CU_DEVICE_ATTRIBUTE_CAN_FLUSH_REMOTE_WRITES = 98
设备支持 CU_STREAM_WAIT_VALUE_FLUSH 标志和 CU_STREAM_MEM_OP_FLUSH_REMOTE_WRITES MemOp。有关更多详细信息,请参阅 流内存操作
CU_DEVICE_ATTRIBUTE_HOST_REGISTER_SUPPORTED = 99
设备支持通过 cudaHostRegister 进行主机内存注册。
CU_DEVICE_ATTRIBUTE_PAGEABLE_MEMORY_ACCESS_USES_HOST_PAGE_TABLES = 100
设备通过主机的页表访问可分页内存。
CU_DEVICE_ATTRIBUTE_DIRECT_MANAGED_MEM_ACCESS_FROM_HOST = 101
主机可以直接访问设备上的托管内存,而无需迁移。
CU_DEVICE_ATTRIBUTE_VIRTUAL_ADDRESS_MANAGEMENT_SUPPORTED = 102
已弃用,请使用 CU_DEVICE_ATTRIBUTE_VIRTUAL_MEMORY_MANAGEMENT_SUPPORTED
CU_DEVICE_ATTRIBUTE_VIRTUAL_MEMORY_MANAGEMENT_SUPPORTED = 102
设备支持虚拟内存管理 API,例如 cuMemAddressReservecuMemCreatecuMemMap 和相关 API
CU_DEVICE_ATTRIBUTE_HANDLE_TYPE_POSIX_FILE_DESCRIPTOR_SUPPORTED = 103
如果通过 cuMemCreate 请求,设备支持使用 cuMemExportToShareableHandle 将内存导出到 posix 文件描述符
CU_DEVICE_ATTRIBUTE_HANDLE_TYPE_WIN32_HANDLE_SUPPORTED = 104
如果通过 cuMemCreate 请求,设备支持使用 cuMemExportToShareableHandle 将内存导出到 Win32 NT 句柄
CU_DEVICE_ATTRIBUTE_HANDLE_TYPE_WIN32_KMT_HANDLE_SUPPORTED = 105
如果通过 cuMemCreate 请求,设备支持使用 cuMemExportToShareableHandle 将内存导出到 Win32 KMT 句柄
CU_DEVICE_ATTRIBUTE_MAX_BLOCKS_PER_MULTIPROCESSOR = 106
每个多处理器最大块数
CU_DEVICE_ATTRIBUTE_GENERIC_COMPRESSION_SUPPORTED = 107
设备支持内存压缩
CU_DEVICE_ATTRIBUTE_MAX_PERSISTING_L2_CACHE_SIZE = 108
最大 L2 持久化行容量设置(以字节为单位)。
CU_DEVICE_ATTRIBUTE_MAX_ACCESS_POLICY_WINDOW_SIZE = 109
CUaccessPolicyWindow::num_bytes 的最大值。
CU_DEVICE_ATTRIBUTE_GPU_DIRECT_RDMA_WITH_CUDA_VMM_SUPPORTED = 110
设备支持使用 cuMemCreate 指定 GPUDirect RDMA 标志
CU_DEVICE_ATTRIBUTE_RESERVED_SHARED_MEMORY_PER_BLOCK = 111
CUDA 驱动程序为每个块保留的共享内存(以字节为单位)
CU_DEVICE_ATTRIBUTE_SPARSE_CUDA_ARRAY_SUPPORTED = 112
设备支持稀疏 CUDA 数组和稀疏 CUDA mipmapped 数组
CU_DEVICE_ATTRIBUTE_READ_ONLY_HOST_REGISTER_SUPPORTED = 113
设备支持使用 cuMemHostRegister 标志 CU_MEMHOSTERGISTER_READ_ONLY 来注册必须映射为 GPU 只读的内存
CU_DEVICE_ATTRIBUTE_TIMELINE_SEMAPHORE_INTEROP_SUPPORTED = 114
设备支持外部时间线信号量互操作
CU_DEVICE_ATTRIBUTE_MEMORY_POOLS_SUPPORTED = 115
设备支持使用 cuMemAllocAsync 和 cuMemPool 系列 API
CU_DEVICE_ATTRIBUTE_GPU_DIRECT_RDMA_SUPPORTED = 116
设备支持 GPUDirect RDMA API,例如 nvidia_p2p_get_pages(有关更多信息,请参阅 https://docs.nvda.net.cn/cuda/gpudirect-rdma
CU_DEVICE_ATTRIBUTE_GPU_DIRECT_RDMA_FLUSH_WRITES_OPTIONS = 117
返回的属性应解释为位掩码,其中各个位由 CUflushGPUDirectRDMAWritesOptions 枚举描述
CU_DEVICE_ATTRIBUTE_GPU_DIRECT_RDMA_WRITES_ORDERING = 118
对于返回属性指示范围内的消费者,GPUDirect RDMA 写入设备无需刷新。有关此处返回的数值,请参阅 CUGPUDirectRDMAWritesOrdering
CU_DEVICE_ATTRIBUTE_MEMPOOL_SUPPORTED_HANDLE_TYPES = 119
基于内存池的 IPC 支持的句柄类型
CU_DEVICE_ATTRIBUTE_CLUSTER_LAUNCH = 120
指示设备支持集群启动
CU_DEVICE_ATTRIBUTE_DEFERRED_MAPPING_CUDA_ARRAY_SUPPORTED = 121
设备支持延迟映射 CUDA 数组和 CUDA mipmapped 数组
CU_DEVICE_ATTRIBUTE_CAN_USE_64_BIT_STREAM_MEM_OPS = 122
cuStreamBatchMemOp 和相关 MemOp API 支持 64 位操作。
CU_DEVICE_ATTRIBUTE_CAN_USE_STREAM_WAIT_VALUE_NOR = 123
MemOp API 支持 CU_STREAM_WAIT_VALUE_NOR
CU_DEVICE_ATTRIBUTE_DMA_BUF_SUPPORTED = 124
设备支持与 dma_buf 机制共享缓冲区。
CU_DEVICE_ATTRIBUTE_IPC_EVENT_SUPPORTED = 125
设备支持 IPC 事件。
CU_DEVICE_ATTRIBUTE_MEM_SYNC_DOMAIN_COUNT = 126
设备支持的内存域数量。
CU_DEVICE_ATTRIBUTE_TENSOR_MAP_ACCESS_SUPPORTED = 127
设备支持使用 Tensor Map 访问内存。
CU_DEVICE_ATTRIBUTE_HANDLE_TYPE_FABRIC_SUPPORTED = 128
如果通过 cuMemCreate() 请求,设备支持使用 cuMemExportToShareableHandle() 将内存导出到 Fabric 句柄
CU_DEVICE_ATTRIBUTE_UNIFIED_FUNCTION_POINTERS = 129
设备支持统一函数指针。
CU_DEVICE_ATTRIBUTE_NUMA_CONFIG = 130
设备的 NUMA 配置:值类型为 CUdeviceNumaConfig 枚举
CU_DEVICE_ATTRIBUTE_NUMA_ID = 131
GPU 内存的 NUMA 节点 ID
CU_DEVICE_ATTRIBUTE_MULTICAST_SUPPORTED = 132
设备支持交换机多播和归约操作。
CU_DEVICE_ATTRIBUTE_MPS_ENABLED = 133
指示在此设备上创建的上下文是否将通过 MPS 共享
CU_DEVICE_ATTRIBUTE_HOST_NUMA_ID = 134
最接近设备的主机节点的 NUMA ID。当系统不支持 NUMA 时返回 -1。
CU_DEVICE_ATTRIBUTE_D3D12_CIG_SUPPORTED = 135
设备支持与 D3D12 的 CIG。
CU_DEVICE_ATTRIBUTE_MEM_DECOMPRESS_ALGORITHM_MASK = 136
返回的值应解释为位掩码,其中各个位由 CUmemDecompressAlgorithm 枚举描述。
CU_DEVICE_ATTRIBUTE_MEM_DECOMPRESS_MAXIMUM_LENGTH = 137
返回的值是允许的单个解压缩操作的最大长度(以字节为单位)。
CU_DEVICE_ATTRIBUTE_GPU_PCI_DEVICE_ID = 139
组合的 16 位 PCI 设备 ID 和 16 位 PCI 供应商 ID。
CU_DEVICE_ATTRIBUTE_GPU_PCI_SUBSYSTEM_ID = 140
组合的 16 位 PCI 子系统 ID 和 16 位 PCI 子系统供应商 ID。
CU_DEVICE_ATTRIBUTE_HOST_NUMA_MULTINODE_IPC_SUPPORTED = 143
设备支持多节点系统中节点之间的 HOST_NUMA 位置 IPC。
CU_DEVICE_ATTRIBUTE_MAX
enum CUdriverProcAddressQueryResult

指示搜索状态的标志。有关更多详细信息,请参阅 cuGetProcAddress

CU_GET_PROC_ADDRESS_SUCCESS = 0
成功找到符号
CU_GET_PROC_ADDRESS_SYMBOL_NOT_FOUND = 1
在搜索中未找到符号
CU_GET_PROC_ADDRESS_VERSION_NOT_SUFFICIENT = 2
找到符号,但提供的版本不足
enum CUdriverProcAddress_flags

用于指定搜索选项的标志。有关更多详细信息,请参阅 cuGetProcAddress

CU_GET_PROC_ADDRESS_DEFAULT = 0
驱动程序符号的默认搜索模式。
CU_GET_PROC_ADDRESS_LEGACY_STREAM = 1<<0
搜索驱动程序符号的旧版本。
CU_GET_PROC_ADDRESS_PER_THREAD_DEFAULT_STREAM = 1<<1
搜索驱动程序符号的每线程版本。
enum CUeglColorFormat

CUDA EGL 颜色格式 - CUDA_EGL 互操作当前支持的不同平面和多平面格式。对于 CU_EGL_FRAME_TYPE_ARRAY,当前不支持三通道格式

CU_EGL_COLOR_FORMAT_YUV420_PLANAR = 0x00
Y、U、V 在三个表面中,每个表面都是独立的,U/V 宽度 = 1/2 Y 宽度,U/V 高度 = 1/2 Y 高度。
CU_EGL_COLOR_FORMAT_YUV420_SEMIPLANAR = 0x01
Y、UV 在两个表面中(UV 作为一个表面),具有 VU 字节顺序,宽度、高度比与 YUV420Planar 相同。
CU_EGL_COLOR_FORMAT_YUV422_PLANAR = 0x02
Y、U、V 每个表面都是独立的,U/V 宽度 = 1/2 Y 宽度,U/V 高度 = Y 高度。
CU_EGL_COLOR_FORMAT_YUV422_SEMIPLANAR = 0x03
Y、UV 在两个表面中,具有 VU 字节顺序,宽度、高度比与 YUV422Planar 相同。
CU_EGL_COLOR_FORMAT_RGB = 0x04
R/G/B 三通道在一个表面中,具有 BGR 字节顺序。仅支持 pitch linear 格式。
CU_EGL_COLOR_FORMAT_BGR = 0x05
R/G/B 三通道在一个表面中,具有 RGB 字节顺序。仅支持 pitch linear 格式。
CU_EGL_COLOR_FORMAT_ARGB = 0x06
R/G/B/A 四通道在一个表面中,具有 BGRA 字节顺序。
CU_EGL_COLOR_FORMAT_RGBA = 0x07
R/G/B/A 四通道在一个表面中,具有 ABGR 字节顺序。
CU_EGL_COLOR_FORMAT_L = 0x08
单个亮度通道在一个表面中。
CU_EGL_COLOR_FORMAT_R = 0x09
单个颜色通道在一个表面中。
CU_EGL_COLOR_FORMAT_YUV444_PLANAR = 0x0A
Y、U、V 在三个表面中,每个表面都是独立的,U/V 宽度 = Y 宽度,U/V 高度 = Y 高度。
CU_EGL_COLOR_FORMAT_YUV444_SEMIPLANAR = 0x0B
Y、UV 在两个表面中(UV 作为一个表面),具有 VU 字节顺序,宽度、高度比与 YUV444Planar 相同。
CU_EGL_COLOR_FORMAT_YUYV_422 = 0x0C
Y、U、V 在一个表面中,以 UYVY 形式交错在一个通道中。
CU_EGL_COLOR_FORMAT_UYVY_422 = 0x0D
Y、U、V 在一个表面中,以 YUYV 形式交错在一个通道中。
CU_EGL_COLOR_FORMAT_ABGR = 0x0E
R/G/B/A 四通道在一个表面中,具有 RGBA 字节顺序。
CU_EGL_COLOR_FORMAT_BGRA = 0x0F
R/G/B/A 四通道在一个表面中,具有 ARGB 字节顺序。
CU_EGL_COLOR_FORMAT_A = 0x10
Alpha 颜色格式 - 一个通道在一个表面中。
CU_EGL_COLOR_FORMAT_RG = 0x11
R/G 颜色格式 - 两个通道在一个表面中,具有 GR 字节顺序
CU_EGL_COLOR_FORMAT_AYUV = 0x12
Y、U、V、A 四通道在一个表面中,以 VUYA 形式交错。
CU_EGL_COLOR_FORMAT_YVU444_SEMIPLANAR = 0x13
Y、VU 在两个表面中(VU 作为一个表面),具有 UV 字节顺序,U/V 宽度 = Y 宽度,U/V 高度 = Y 高度。
CU_EGL_COLOR_FORMAT_YVU422_SEMIPLANAR = 0x14
Y、VU 在两个表面中(VU 作为一个表面),具有 UV 字节顺序,U/V 宽度 = 1/2 Y 宽度,U/V 高度 = Y 高度。
CU_EGL_COLOR_FORMAT_YVU420_SEMIPLANAR = 0x15
Y、VU 在两个表面中(VU 作为一个表面),具有 UV 字节顺序,U/V 宽度 = 1/2 Y 宽度,U/V 高度 = 1/2 Y 高度。
CU_EGL_COLOR_FORMAT_Y10V10U10_444_SEMIPLANAR = 0x16
Y10、V10U10 在两个表面中(VU 作为一个表面),具有 UV 字节顺序,U/V 宽度 = Y 宽度,U/V 高度 = Y 高度。
CU_EGL_COLOR_FORMAT_Y10V10U10_420_SEMIPLANAR = 0x17
Y10、V10U10 在两个表面中(VU 作为一个表面),具有 UV 字节顺序,U/V 宽度 = 1/2 Y 宽度,U/V 高度 = 1/2 Y 高度。
CU_EGL_COLOR_FORMAT_Y12V12U12_444_SEMIPLANAR = 0x18
Y12、V12U12 在两个表面中(VU 作为一个表面),具有 UV 字节顺序,U/V 宽度 = Y 宽度,U/V 高度 = Y 高度。
CU_EGL_COLOR_FORMAT_Y12V12U12_420_SEMIPLANAR = 0x19
Y12、V12U12 在两个表面中(VU 作为一个表面),具有 UV 字节顺序,U/V 宽度 = 1/2 Y 宽度,U/V 高度 = 1/2 Y 高度。
CU_EGL_COLOR_FORMAT_VYUY_ER = 0x1A
扩展范围 Y、U、V 在一个表面中,以 YVYU 形式交错在一个通道中。
CU_EGL_COLOR_FORMAT_UYVY_ER = 0x1B
扩展范围 Y、U、V 在一个表面中,以 YUYV 形式交错在一个通道中。
CU_EGL_COLOR_FORMAT_YUYV_ER = 0x1C
扩展范围 Y、U、V 在一个表面中,以 UYVY 形式交错在一个通道中。
CU_EGL_COLOR_FORMAT_YVYU_ER = 0x1D
扩展范围 Y、U、V 在一个表面中,以 VYUY 形式交错在一个通道中。
CU_EGL_COLOR_FORMAT_YUV_ER = 0x1E
扩展范围 Y、U、V 三通道在一个表面中,以 VUY 形式交错。仅支持 pitch linear 格式。
CU_EGL_COLOR_FORMAT_YUVA_ER = 0x1F
扩展范围 Y、U、V、A 四通道在一个表面中,以 AVUY 形式交错。
CU_EGL_COLOR_FORMAT_AYUV_ER = 0x20
扩展范围 Y、U、V、A 四通道在一个表面中,以 VUYA 形式交错。
CU_EGL_COLOR_FORMAT_YUV444_PLANAR_ER = 0x21
扩展范围 Y、U、V 在三个表面中,U/V 宽度 = Y 宽度,U/V 高度 = Y 高度。
CU_EGL_COLOR_FORMAT_YUV422_PLANAR_ER = 0x22
扩展范围 Y、U、V 在三个表面中,U/V 宽度 = 1/2 Y 宽度,U/V 高度 = Y 高度。
CU_EGL_COLOR_FORMAT_YUV420_PLANAR_ER = 0x23
扩展范围 Y、U、V 在三个表面中,U/V 宽度 = 1/2 Y 宽度,U/V 高度 = 1/2 Y 高度。
CU_EGL_COLOR_FORMAT_YUV444_SEMIPLANAR_ER = 0x24
扩展范围 Y、UV 在两个表面中(UV 作为一个表面),具有 VU 字节顺序,U/V 宽度 = Y 宽度,U/V 高度 = Y 高度。
CU_EGL_COLOR_FORMAT_YUV422_SEMIPLANAR_ER = 0x25
扩展范围 Y、UV 在两个表面中(UV 作为一个表面),具有 VU 字节顺序,U/V 宽度 = 1/2 Y 宽度,U/V 高度 = Y 高度。
CU_EGL_COLOR_FORMAT_YUV420_SEMIPLANAR_ER = 0x26
扩展范围 Y、UV 在两个表面中(UV 作为一个表面),具有 VU 字节顺序,U/V 宽度 = 1/2 Y 宽度,U/V 高度 = 1/2 Y 高度。
CU_EGL_COLOR_FORMAT_YVU444_PLANAR_ER = 0x27
扩展范围 Y、V、U 在三个表面中,U/V 宽度 = Y 宽度,U/V 高度 = Y 高度。
CU_EGL_COLOR_FORMAT_YVU422_PLANAR_ER = 0x28
扩展范围 Y、V、U 在三个表面中,U/V 宽度 = 1/2 Y 宽度,U/V 高度 = Y 高度。
CU_EGL_COLOR_FORMAT_YVU420_PLANAR_ER = 0x29
扩展范围 Y、V、U 在三个表面中,U/V 宽度 = 1/2 Y 宽度,U/V 高度 = 1/2 Y 高度。
CU_EGL_COLOR_FORMAT_YVU444_SEMIPLANAR_ER = 0x2A
扩展范围 Y、VU 在两个表面中(VU 作为一个表面),具有 UV 字节顺序,U/V 宽度 = Y 宽度,U/V 高度 = Y 高度。
CU_EGL_COLOR_FORMAT_YVU422_SEMIPLANAR_ER = 0x2B
扩展范围 Y、VU 在两个表面中(VU 作为一个表面),具有 UV 字节顺序,U/V 宽度 = 1/2 Y 宽度,U/V 高度 = Y 高度。
CU_EGL_COLOR_FORMAT_YVU420_SEMIPLANAR_ER = 0x2C
扩展范围 Y、VU 在两个表面中(VU 作为一个表面),具有 UV 字节顺序,U/V 宽度 = 1/2 Y 宽度,U/V 高度 = 1/2 Y 高度。
CU_EGL_COLOR_FORMAT_BAYER_RGGB = 0x2D
Bayer 格式 - 一个通道在一个表面中,具有交错 RGGB 顺序。
CU_EGL_COLOR_FORMAT_BAYER_BGGR = 0x2E
Bayer 格式 - 一个通道在一个表面中,具有交错 BGGR 顺序。
CU_EGL_COLOR_FORMAT_BAYER_GRBG = 0x2F
Bayer 格式 - 一个通道在一个表面中,具有交错 GRBG 顺序。
CU_EGL_COLOR_FORMAT_BAYER_GBRG = 0x30
Bayer 格式 - 一个通道在一个表面中,具有交错 GBRG 顺序。
CU_EGL_COLOR_FORMAT_BAYER10_RGGB = 0x31
Bayer10 格式 - 一个通道在一个表面中,具有交错 RGGB 顺序。在 16 位中,使用 10 位,6 位为 No-op。
CU_EGL_COLOR_FORMAT_BAYER10_BGGR = 0x32
Bayer10 格式 - 一个通道在一个表面中,具有交错 BGGR 顺序。在 16 位中,使用 10 位,6 位为 No-op。
CU_EGL_COLOR_FORMAT_BAYER10_GRBG = 0x33
Bayer10 格式 - 一个通道在一个表面中,具有交错 GRBG 顺序。在 16 位中,使用 10 位,6 位为 No-op。
CU_EGL_COLOR_FORMAT_BAYER10_GBRG = 0x34
Bayer10 格式 - 一个通道在一个表面中,具有交错 GBRG 顺序。在 16 位中,使用 10 位,6 位为 No-op。
CU_EGL_COLOR_FORMAT_BAYER12_RGGB = 0x35
Bayer12 格式 - 一个通道在一个表面中,具有交错 RGGB 顺序。在 16 位中,使用 12 位,4 位为 No-op。
CU_EGL_COLOR_FORMAT_BAYER12_BGGR = 0x36
Bayer12 格式 - 一个通道在一个表面中,具有交错 BGGR 顺序。在 16 位中,使用 12 位,4 位为 No-op。
CU_EGL_COLOR_FORMAT_BAYER12_GRBG = 0x37
Bayer12 格式 - 一个通道在一个表面中,具有交错 GRBG 顺序。在 16 位中,使用 12 位,4 位为 No-op。
CU_EGL_COLOR_FORMAT_BAYER12_GBRG = 0x38
Bayer12 格式 - 一个通道在一个表面中,具有交错 GBRG 顺序。在 16 位中,使用 12 位,4 位为 No-op。
CU_EGL_COLOR_FORMAT_BAYER14_RGGB = 0x39
Bayer14 格式 - 一个通道在一个表面中,具有交错 RGGB 顺序。在 16 位中,使用 14 位,2 位为 No-op。
CU_EGL_COLOR_FORMAT_BAYER14_BGGR = 0x3A
Bayer14 格式 - 一个通道在一个表面中,具有交错 BGGR 顺序。在 16 位中,使用 14 位,2 位为 No-op。
CU_EGL_COLOR_FORMAT_BAYER14_GRBG = 0x3B
Bayer14 格式 - 一个通道在一个表面中,具有交错 GRBG 顺序。在 16 位中,使用 14 位,2 位为 No-op。
CU_EGL_COLOR_FORMAT_BAYER14_GBRG = 0x3C
Bayer14 格式 - 一个通道在一个表面中,具有交错 GBRG 顺序。在 16 位中,使用 14 位,2 位为 No-op。
CU_EGL_COLOR_FORMAT_BAYER20_RGGB = 0x3D
Bayer20 格式 - 一个通道在一个表面中,具有交错 RGGB 顺序。在 32 位中,使用 20 位,12 位为 No-op。
CU_EGL_COLOR_FORMAT_BAYER20_BGGR = 0x3E
Bayer20 格式 - 一个通道在一个表面中,具有交错 BGGR 顺序。在 32 位中,使用 20 位,12 位为 No-op。
CU_EGL_COLOR_FORMAT_BAYER20_GRBG = 0x3F
Bayer20 格式 - 一个通道在一个表面中,具有交错 GRBG 顺序。在 32 位中,使用 20 位,12 位为 No-op。
CU_EGL_COLOR_FORMAT_BAYER20_GBRG = 0x40
Bayer20 格式 - 一个通道在一个表面中,具有交错 GBRG 顺序。在 32 位中,使用 20 位,12 位为 No-op。
CU_EGL_COLOR_FORMAT_YVU444_PLANAR = 0x41
Y、V、U 在三个表面中,每个表面都是独立的,U/V 宽度 = Y 宽度,U/V 高度 = Y 高度。
CU_EGL_COLOR_FORMAT_YVU422_PLANAR = 0x42
Y、V、U 在三个表面中,每个表面都是独立的,U/V 宽度 = 1/2 Y 宽度,U/V 高度 = Y 高度。
CU_EGL_COLOR_FORMAT_YVU420_PLANAR = 0x43
Y、V、U 在三个表面中,每个表面都是独立的,U/V 宽度 = 1/2 Y 宽度,U/V 高度 = 1/2 Y 高度。
CU_EGL_COLOR_FORMAT_BAYER_ISP_RGGB = 0x44
Nvidia 专有 Bayer ISP 格式 - 一个通道在一个表面中,具有交错 RGGB 顺序,并映射到不透明整数数据类型。
CU_EGL_COLOR_FORMAT_BAYER_ISP_BGGR = 0x45
Nvidia 专有 Bayer ISP 格式 - 一个通道在一个表面中,具有交错 BGGR 顺序,并映射到不透明整数数据类型。
CU_EGL_COLOR_FORMAT_BAYER_ISP_GRBG = 0x46
Nvidia 专有 Bayer ISP 格式 - 一个通道在一个表面中,具有交错 GRBG 顺序,并映射到不透明整数数据类型。
CU_EGL_COLOR_FORMAT_BAYER_ISP_GBRG = 0x47
Nvidia 专有 Bayer ISP 格式 - 一个通道在一个表面中,具有交错 GBRG 顺序,并映射到不透明整数数据类型。
CU_EGL_COLOR_FORMAT_BAYER_BCCR = 0x48
Bayer 格式 - 一个通道在一个表面中,具有交错 BCCR 顺序。
CU_EGL_COLOR_FORMAT_BAYER_RCCB = 0x49
Bayer 格式 - 一个通道在一个表面中,具有交错 RCCB 顺序。
CU_EGL_COLOR_FORMAT_BAYER_CRBC = 0x4A
Bayer 格式 - 一个通道在一个表面中,具有交错 CRBC 顺序。
CU_EGL_COLOR_FORMAT_BAYER_CBRC = 0x4B
Bayer 格式 - 一个通道在一个表面中,具有交错 CBRC 顺序。
CU_EGL_COLOR_FORMAT_BAYER10_CCCC = 0x4C
Bayer10 格式 - 一个通道在一个表面中,具有交错 CCCC 顺序。在 16 位中,使用 10 位,6 位为 No-op。
CU_EGL_COLOR_FORMAT_BAYER12_BCCR = 0x4D
Bayer12 格式 - 一个通道在一个表面中,具有交错 BCCR 顺序。在 16 位中,使用 12 位,4 位为 No-op。
CU_EGL_COLOR_FORMAT_BAYER12_RCCB = 0x4E
Bayer12 格式 - 一个通道在一个表面中,具有交错 RCCB 顺序。在 16 位中,使用 12 位,4 位为 No-op。
CU_EGL_COLOR_FORMAT_BAYER12_CRBC = 0x4F
Bayer12 格式 - 一个通道在一个表面中,具有交错 CRBC 顺序。在 16 位中,使用 12 位,4 位为 No-op。
CU_EGL_COLOR_FORMAT_BAYER12_CBRC = 0x50
Bayer12 格式 - 一个通道在一个表面中,具有交错 CBRC 顺序。在 16 位中,使用 12 位,4 位为 No-op。
CU_EGL_COLOR_FORMAT_BAYER12_CCCC = 0x51
Bayer12 格式 - 一个通道在一个表面中,具有交错 CCCC 顺序。在 16 位中,使用 12 位,4 位为 No-op。
CU_EGL_COLOR_FORMAT_Y = 0x52
单 Y 平面的颜色格式。
CU_EGL_COLOR_FORMAT_YUV420_SEMIPLANAR_2020 = 0x53
Y、UV 在两个表面中(UV 作为一个表面)U/V 宽度 = 1/2 Y 宽度,U/V 高度 = 1/2 Y 高度。
CU_EGL_COLOR_FORMAT_YVU420_SEMIPLANAR_2020 = 0x54
Y、VU 在两个表面中(VU 作为一个表面)U/V 宽度 = 1/2 Y 宽度,U/V 高度 = 1/2 Y 高度。
CU_EGL_COLOR_FORMAT_YUV420_PLANAR_2020 = 0x55
Y、U、V 每个表面都是独立的,U/V 宽度 = 1/2 Y 宽度,U/V 高度 = 1/2 Y 高度。
CU_EGL_COLOR_FORMAT_YVU420_PLANAR_2020 = 0x56
Y、V、U 每个表面都是独立的,U/V 宽度 = 1/2 Y 宽度,U/V 高度 = 1/2 Y 高度。
CU_EGL_COLOR_FORMAT_YUV420_SEMIPLANAR_709 = 0x57
Y、UV 在两个表面中(UV 作为一个表面)U/V 宽度 = 1/2 Y 宽度,U/V 高度 = 1/2 Y 高度。
CU_EGL_COLOR_FORMAT_YVU420_SEMIPLANAR_709 = 0x58
Y、VU 在两个表面中(VU 作为一个表面)U/V 宽度 = 1/2 Y 宽度,U/V 高度 = 1/2 Y 高度。
CU_EGL_COLOR_FORMAT_YUV420_PLANAR_709 = 0x59
Y、U、V 每个表面都是独立的,U/V 宽度 = 1/2 Y 宽度,U/V 高度 = 1/2 Y 高度。
CU_EGL_COLOR_FORMAT_YVU420_PLANAR_709 = 0x5A
Y、V、U 每个表面都是独立的,U/V 宽度 = 1/2 Y 宽度,U/V 高度 = 1/2 Y 高度。
CU_EGL_COLOR_FORMAT_Y10V10U10_420_SEMIPLANAR_709 = 0x5B
Y10、V10U10 在两个表面中(VU 作为一个表面),U/V 宽度 = 1/2 Y 宽度,U/V 高度 = 1/2 Y 高度。
CU_EGL_COLOR_FORMAT_Y10V10U10_420_SEMIPLANAR_2020 = 0x5C
Y10、V10U10 在两个表面中(VU 作为一个表面),U/V 宽度 = 1/2 Y 宽度,U/V 高度 = 1/2 Y 高度。
CU_EGL_COLOR_FORMAT_Y10V10U10_422_SEMIPLANAR_2020 = 0x5D
Y10、V10U10 在两个表面中(VU 作为一个表面)U/V 宽度 = 1/2 Y 宽度,U/V 高度 = Y 高度。
CU_EGL_COLOR_FORMAT_Y10V10U10_422_SEMIPLANAR = 0x5E
Y10、V10U10 在两个表面中(VU 作为一个表面)U/V 宽度 = 1/2 Y 宽度,U/V 高度 = Y 高度。
CU_EGL_COLOR_FORMAT_Y10V10U10_422_SEMIPLANAR_709 = 0x5F
Y10、V10U10 在两个表面中(VU 作为一个表面)U/V 宽度 = 1/2 Y 宽度,U/V 高度 = Y 高度。
CU_EGL_COLOR_FORMAT_Y_ER = 0x60
单 Y 平面的扩展范围颜色格式。
CU_EGL_COLOR_FORMAT_Y_709_ER = 0x61
单 Y 平面的扩展范围颜色格式。
CU_EGL_COLOR_FORMAT_Y10_ER = 0x62
单 Y10 平面的扩展范围颜色格式。
CU_EGL_COLOR_FORMAT_Y10_709_ER = 0x63
单 Y10 平面的扩展范围颜色格式。
CU_EGL_COLOR_FORMAT_Y12_ER = 0x64
单 Y12 平面的扩展范围颜色格式。
CU_EGL_COLOR_FORMAT_Y12_709_ER = 0x65
单 Y12 平面的扩展范围颜色格式。
CU_EGL_COLOR_FORMAT_YUVA = 0x66
Y、U、V、A 四通道在一个表面中,以 AVUY 形式交错。
CU_EGL_COLOR_FORMAT_YUV = 0x67
Y、U、V 三通道在一个表面中,以 VUY 形式交错。仅支持 pitch linear 格式。
CU_EGL_COLOR_FORMAT_YVYU = 0x68
Y、U、V 在一个表面中,以 YVYU 形式交错在一个通道中。
CU_EGL_COLOR_FORMAT_VYUY = 0x69
Y、U、V 在一个表面中,以 VYUY 形式交错在一个通道中。
CU_EGL_COLOR_FORMAT_Y10V10U10_420_SEMIPLANAR_ER = 0x6A
扩展范围 Y10、V10U10 在两个表面中(VU 作为一个表面)U/V 宽度 = 1/2 Y 宽度,U/V 高度 = 1/2 Y 高度。
CU_EGL_COLOR_FORMAT_Y10V10U10_420_SEMIPLANAR_709_ER = 0x6B
扩展范围 Y10、V10U10 在两个表面中(VU 作为一个表面)U/V 宽度 = 1/2 Y 宽度,U/V 高度 = 1/2 Y 高度。
CU_EGL_COLOR_FORMAT_Y10V10U10_444_SEMIPLANAR_ER = 0x6C
扩展范围 Y10,V10U10,采用双表面格式(VU 作为一个表面),U/V 宽度 = Y 宽度,U/V 高度 = Y 高度。
CU_EGL_COLOR_FORMAT_Y10V10U10_444_SEMIPLANAR_709_ER = 0x6D
扩展范围 Y10,V10U10,采用双表面格式(VU 作为一个表面),U/V 宽度 = Y 宽度,U/V 高度 = Y 高度。
CU_EGL_COLOR_FORMAT_Y12V12U12_420_SEMIPLANAR_ER = 0x6E
扩展范围 Y12,V12U12,采用双表面格式(VU 作为一个表面),U/V 宽度 = 1/2 Y 宽度,U/V 高度 = 1/2 Y 高度。
CU_EGL_COLOR_FORMAT_Y12V12U12_420_SEMIPLANAR_709_ER = 0x6F
扩展范围 Y12,V12U12,采用双表面格式(VU 作为一个表面),U/V 宽度 = 1/2 Y 宽度,U/V 高度 = 1/2 Y 高度。
CU_EGL_COLOR_FORMAT_Y12V12U12_444_SEMIPLANAR_ER = 0x70
扩展范围 Y12,V12U12,采用双表面格式(VU 作为一个表面),U/V 宽度 = Y 宽度,U/V 高度 = Y 高度。
CU_EGL_COLOR_FORMAT_Y12V12U12_444_SEMIPLANAR_709_ER = 0x71
扩展范围 Y12,V12U12,采用双表面格式(VU 作为一个表面),U/V 宽度 = Y 宽度,U/V 高度 = Y 高度。
CU_EGL_COLOR_FORMAT_UYVY_709 = 0x72
Y、U、V 在一个表面中,以 UYVY 形式交错在一个通道中。
CU_EGL_COLOR_FORMAT_UYVY_709_ER = 0x73
扩展范围 Y、U、V 在一个表面中,以 UYVY 形式交错在一个通道中。
CU_EGL_COLOR_FORMAT_UYVY_2020 = 0x74
Y、U、V 在一个表面中,以 UYVY 形式交错在一个通道中。
CU_EGL_COLOR_FORMAT_MAX
enum CUeglFrameType

CUDA EglFrame 类型 - 数组或指针

CU_EGL_FRAME_TYPE_ARRAY = 0
帧类型 CUDA 数组
CU_EGL_FRAME_TYPE_PITCH = 1
帧类型指针
enum CUeglResourceLocationFlags

资源位置标志 - 系统内存或显存

对于 iGPU 上的 CUDA 上下文,由于视频内存和系统内存是等效的 - 这些标志对执行没有影响。

对于 dGPU 上的 CUDA 上下文,应用程序可以使用标志 CUeglResourceLocationFlags 来提示所需的位置。

CU_EGL_RESOURCE_LOCATION_SYSMEM - 帧数据驻留在系统内存上,以便 CUDA 访问。

CU_EGL_RESOURCE_LOCATION_VIDMEM - 帧数据驻留在专用视频内存上,以便 CUDA 访问。

如果帧是在不同的内存上生成的,则可能会因新的分配和数据迁移而产生额外的延迟。

CU_EGL_RESOURCE_LOCATION_SYSMEM = 0x00
资源位置系统内存
CU_EGL_RESOURCE_LOCATION_VIDMEM = 0x01
资源位置显存
enum CUevent_flags

事件创建标志

CU_EVENT_DEFAULT = 0x0
默认事件标志
CU_EVENT_BLOCKING_SYNC = 0x1
事件使用阻塞同步
CU_EVENT_DISABLE_TIMING = 0x2
事件将不记录计时数据
CU_EVENT_INTERPROCESS = 0x4
事件适用于进程间使用。必须设置 CU_EVENT_DISABLE_TIMING
enum CUevent_record_flags

事件记录标志

CU_EVENT_RECORD_DEFAULT = 0x0
默认事件记录标志
CU_EVENT_RECORD_EXTERNAL = 0x1
当使用流捕获时,创建事件记录节点而不是默认行为。此标志在捕获之外使用时无效。
enum CUevent_sched_flags

事件调度标志

CU_EVENT_SCHED_AUTO = 0x00
自动调度
CU_EVENT_SCHED_SPIN = 0x01
设置自旋作为默认调度
CU_EVENT_SCHED_YIELD = 0x02
设置让步作为默认调度
CU_EVENT_SCHED_BLOCKING_SYNC = 0x04
设置阻塞同步作为默认调度
enum CUevent_wait_flags

事件等待标志

CU_EVENT_WAIT_DEFAULT = 0x0
默认事件等待标志
CU_EVENT_WAIT_EXTERNAL = 0x1
当使用流捕获时,创建事件等待节点而不是默认行为。此标志在捕获之外使用时无效。
enum CUexecAffinityType

执行亲和性类型

CU_EXEC_AFFINITY_TYPE_SM_COUNT = 0
创建具有有限 SM 的上下文。
CU_EXEC_AFFINITY_TYPE_MAX
enum CUexternalMemoryHandleType

外部内存句柄类型

CU_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD = 1
句柄是不透明文件描述符
CU_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32 = 2
句柄是不透明共享 NT 句柄
CU_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT = 3
句柄是不透明的全局共享句柄
CU_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP = 4
句柄是 D3D12 堆对象
CU_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE = 5
句柄是 D3D12 提交的资源
CU_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_RESOURCE = 6
句柄是 D3D11 资源的共享 NT 句柄
CU_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_RESOURCE_KMT = 7
句柄是 D3D11 资源的全局共享句柄
CU_EXTERNAL_MEMORY_HANDLE_TYPE_NVSCIBUF = 8
句柄是 NvSciBuf 对象
enum CUexternalSemaphoreHandleType

外部信号量句柄类型

CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD = 1
句柄是不透明文件描述符
CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32 = 2
句柄是不透明共享 NT 句柄
CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT = 3
句柄是不透明的全局共享句柄
CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE = 4
句柄是引用 D3D12 栅栏对象的共享 NT 句柄
CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE = 5
句柄是引用 D3D11 栅栏对象的共享 NT 句柄
CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_NVSCISYNC = 6
NvSciSync 对象的不透明句柄
CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_KEYED_MUTEX = 7
句柄是引用 D3D11 键控互斥对象的共享 NT 句柄
CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_KEYED_MUTEX_KMT = 8
句柄是引用 D3D11 键控互斥对象的全局共享句柄
CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_TIMELINE_SEMAPHORE_FD = 9
句柄是引用时间线信号量的不透明文件描述符
CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_TIMELINE_SEMAPHORE_WIN32 = 10
句柄是引用时间线信号量的不透明共享 NT 句柄
enum CUfilter_mode

纹理引用过滤模式

CU_TR_FILTER_MODE_POINT = 0
点过滤模式
CU_TR_FILTER_MODE_LINEAR = 1
线性过滤模式
enum CUflushGPUDirectRDMAWritesOptions
CU_FLUSH_GPU_DIRECT_RDMA_WRITES_OPTION_HOST = 1<<0
cuFlushGPUDirectRDMAWrites() 及其 CUDA Runtime API 对等项在该设备上受支持。
CU_FLUSH_GPU_DIRECT_RDMA_WRITES_OPTION_MEMOPS = 1<<1
设备上支持 CU_STREAM_WAIT_VALUE_FLUSH 标志和 CU_STREAM_MEM_OP_FLUSH_REMOTE_WRITES MemOp。
enum CUflushGPUDirectRDMAWritesScope
CU_FLUSH_GPU_DIRECT_RDMA_WRITES_TO_OWNER = 100
阻塞直到远程写入对拥有数据的 CUDA 设备上下文可见。
CU_FLUSH_GPU_DIRECT_RDMA_WRITES_TO_ALL_DEVICES = 200
阻塞直到远程写入对所有 CUDA 设备上下文可见。
enum CUflushGPUDirectRDMAWritesTarget
CU_FLUSH_GPU_DIRECT_RDMA_WRITES_TARGET_CURRENT_CTX = 0
cuFlushGPUDirectRDMAWrites() 的目标设置为当前活动的 CUDA 设备上下文。
enum CUfunc_cache

函数缓存配置

CU_FUNC_CACHE_PREFER_NONE = 0x00
对共享内存或 L1 没有偏好(默认)
CU_FUNC_CACHE_PREFER_SHARED = 0x01
偏好更大的共享内存和更小的 L1 缓存
CU_FUNC_CACHE_PREFER_L1 = 0x02
偏好更大的 L1 缓存和更小的共享内存
CU_FUNC_CACHE_PREFER_EQUAL = 0x03
偏好大小相等的 L1 缓存和共享内存
enum CUfunction_attribute

函数属性

CU_FUNC_ATTRIBUTE_MAX_THREADS_PER_BLOCK = 0
每个代码块的最大线程数,超过此限制将导致函数启动失败。此数字取决于函数和当前加载该函数的设备。
CU_FUNC_ATTRIBUTE_SHARED_SIZE_BYTES = 1
此函数所需的静态分配共享内存的大小(以字节为单位)。这不包括用户在运行时请求的动态分配共享内存。
CU_FUNC_ATTRIBUTE_CONST_SIZE_BYTES = 2
此函数所需的用户分配常量内存的大小(以字节为单位)。
CU_FUNC_ATTRIBUTE_LOCAL_SIZE_BYTES = 3
此函数的每个线程使用的本地内存大小(以字节为单位)。
CU_FUNC_ATTRIBUTE_NUM_REGS = 4
此函数的每个线程使用的寄存器数量。
CU_FUNC_ATTRIBUTE_PTX_VERSION = 5
编译该函数所用的 PTX 虚拟架构版本。此值是主 PTX 版本 * 10 + 次要 PTX 版本,因此 PTX 版本 1.3 的函数将返回值 13。请注意,对于在 CUDA 3.0 之前编译的 cubin,这可能会返回未定义值 0。
CU_FUNC_ATTRIBUTE_BINARY_VERSION = 6
编译该函数所用的二进制架构版本。此值是主要二进制版本 * 10 + 次要二进制版本,因此二进制版本 1.3 的函数将返回值 13。请注意,对于没有正确编码的二进制架构版本的旧版 cubin,这将返回值 10。
CU_FUNC_ATTRIBUTE_CACHE_MODE_CA = 7
指示函数是否已使用用户指定的选项“-Xptxas --dlcm=ca”编译的属性。
CU_FUNC_ATTRIBUTE_MAX_DYNAMIC_SHARED_SIZE_BYTES = 8
此函数可以使用的动态分配共享内存的最大大小(以字节为单位)。如果用户指定的动态共享内存大小大于此值,则启动将失败。请参阅 cuFuncSetAttributecuKernelSetAttribute
CU_FUNC_ATTRIBUTE_PREFERRED_SHARED_MEMORY_CARVEOUT = 9
在 L1 缓存和共享内存使用相同硬件资源的设备上,此设置共享内存划分首选项,以占总共享内存的百分比表示。请参阅 CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_MULTIPROCESSOR。这只是一个提示,驱动程序可以根据执行函数的要求选择不同的比率。请参阅 cuFuncSetAttributecuKernelSetAttribute
CU_FUNC_ATTRIBUTE_CLUSTER_SIZE_MUST_BE_SET = 10
如果设置了此属性,则内核必须使用指定的有效集群大小启动。请参阅 cuFuncSetAttributecuKernelSetAttribute
CU_FUNC_ATTRIBUTE_REQUIRED_CLUSTER_WIDTH = 11
块中所需的集群宽度。这些值必须全部为 0 或全部为正数。否则,集群维度的有效性将在启动时检查。如果在编译时设置了该值,则无法在运行时设置。在运行时设置它将返回 CUDA_ERROR_NOT_PERMITTED。请参阅 cuFuncSetAttributecuKernelSetAttribute
CU_FUNC_ATTRIBUTE_REQUIRED_CLUSTER_HEIGHT = 12
块中所需的集群高度。这些值必须全部为 0 或全部为正数。否则,集群维度的有效性将在启动时检查。如果在编译时设置了该值,则无法在运行时设置。在运行时设置它应返回 CUDA_ERROR_NOT_PERMITTED。请参阅 cuFuncSetAttributecuKernelSetAttribute
CU_FUNC_ATTRIBUTE_REQUIRED_CLUSTER_DEPTH = 13
块中所需的集群深度。这些值必须全部为 0 或全部为正数。否则,集群维度的有效性将在启动时检查。如果在编译时设置了该值,则无法在运行时设置。在运行时设置它应返回 CUDA_ERROR_NOT_PERMITTED。请参阅 cuFuncSetAttributecuKernelSetAttribute
CU_FUNC_ATTRIBUTE_NON_PORTABLE_CLUSTER_SIZE_ALLOWED = 14
函数是否可以使用非便携式集群大小启动。1 表示允许,0 表示不允许。非便携式集群大小可能仅在程序经过测试的特定 SKU 上起作用。如果在不同的硬件平台上运行程序,则启动可能会失败。CUDA API 提供 cudaOccupancyMaxActiveClusters 以帮助检查所需的尺寸是否可以在当前设备上启动。便携式集群尺寸便携式集群尺寸保证在高于目标计算能力的所有计算能力上均可正常工作。sm_90 的便携式集群尺寸为每个集群 8 个块。此值可能会针对未来的计算能力而增加。特定的硬件单元可能支持更高的集群尺寸,但这不能保证是便携式的。请参阅 cuFuncSetAttributecuKernelSetAttribute
CU_FUNC_ATTRIBUTE_CLUSTER_SCHEDULING_POLICY_PREFERENCE = 15
函数的块调度策略。值类型为 CUclusterSchedulingPolicy / cudaClusterSchedulingPolicy。请参阅 cuFuncSetAttributecuKernelSetAttribute
CU_FUNC_ATTRIBUTE_MAX
enum CUgraphConditionalNodeType

条件节点类型

CU_GRAPH_COND_TYPE_IF = 0
条件“if/else”节点。如果条件为非零,则执行 Body[0]。如果size== 2,则创建可选的 ELSE 图,如果条件为零,则执行此图。
CU_GRAPH_COND_TYPE_WHILE = 1
条件“while”节点。当条件值为非零时,重复执行 Body。
CU_GRAPH_COND_TYPE_SWITCH = 2
条件“switch”节点。Body[n] 执行一次,其中“n”是条件的值。如果条件与主体索引不匹配,则不启动任何主体。
enum CUgraphDebugDot_flags

cuGraphDebugDotPrint 的其他写入选项

CU_GRAPH_DEBUG_DOT_FLAGS_VERBOSE = 1<<0
输出所有调试数据,如同启用了每个调试标志一样
CU_GRAPH_DEBUG_DOT_FLAGS_RUNTIME_TYPES = 1<<1
使用 CUDA Runtime 结构进行输出
CU_GRAPH_DEBUG_DOT_FLAGS_KERNEL_NODE_PARAMS = 1<<2
将 CUDA_KERNEL_NODE_PARAMS 值添加到输出
CU_GRAPH_DEBUG_DOT_FLAGS_MEMCPY_NODE_PARAMS = 1<<3
将 CUDA_MEMCPY3D 值添加到输出
CU_GRAPH_DEBUG_DOT_FLAGS_MEMSET_NODE_PARAMS = 1<<4
将 CUDA_MEMSET_NODE_PARAMS 值添加到输出
CU_GRAPH_DEBUG_DOT_FLAGS_HOST_NODE_PARAMS = 1<<5
将 CUDA_HOST_NODE_PARAMS 值添加到输出
CU_GRAPH_DEBUG_DOT_FLAGS_EVENT_NODE_PARAMS = 1<<6
将来自记录和等待节点的 CUevent 句柄添加到输出
CU_GRAPH_DEBUG_DOT_FLAGS_EXT_SEMAS_SIGNAL_NODE_PARAMS = 1<<7
将 CUDA_EXT_SEM_SIGNAL_NODE_PARAMS 值添加到输出
CU_GRAPH_DEBUG_DOT_FLAGS_EXT_SEMAS_WAIT_NODE_PARAMS = 1<<8
将 CUDA_EXT_SEM_WAIT_NODE_PARAMS 值添加到输出
CU_GRAPH_DEBUG_DOT_FLAGS_KERNEL_NODE_ATTRIBUTES = 1<<9
将 CUkernelNodeAttrValue 值添加到输出
CU_GRAPH_DEBUG_DOT_FLAGS_HANDLES = 1<<10
将节点句柄和每个内核函数句柄添加到输出
CU_GRAPH_DEBUG_DOT_FLAGS_MEM_ALLOC_NODE_PARAMS = 1<<11
将内存分配节点参数添加到输出
CU_GRAPH_DEBUG_DOT_FLAGS_MEM_FREE_NODE_PARAMS = 1<<12
将内存释放节点参数添加到输出
CU_GRAPH_DEBUG_DOT_FLAGS_BATCH_MEM_OP_NODE_PARAMS = 1<<13
将批处理内存操作节点参数添加到输出
CU_GRAPH_DEBUG_DOT_FLAGS_EXTRA_TOPO_INFO = 1<<14
添加边编号信息
CU_GRAPH_DEBUG_DOT_FLAGS_CONDITIONAL_NODE_PARAMS = 1<<15
将条件节点参数添加到输出
enum CUgraphDependencyType

可以作为 CUgraphEdgeData 的一部分应用于图边的类型注释。

CU_GRAPH_DEPENDENCY_TYPE_DEFAULT = 0
这是一个普通的依赖项。
CU_GRAPH_DEPENDENCY_TYPE_PROGRAMMATIC = 1
此依赖类型允许下游节点使用 cudaGridDependencySynchronize()。它只能在内核节点之间使用,并且必须与 CU_GRAPH_KERNEL_NODE_PORT_PROGRAMMATICCU_GRAPH_KERNEL_NODE_PORT_LAUNCH_ORDER 输出端口一起使用。
enum CUgraphExecUpdateResult

CUDA 图更新错误类型

CU_GRAPH_EXEC_UPDATE_SUCCESS = 0x0
更新成功
CU_GRAPH_EXEC_UPDATE_ERROR = 0x1
更新失败,原因是函数返回值中描述的意外原因
CU_GRAPH_EXEC_UPDATE_ERROR_TOPOLOGY_CHANGED = 0x2
更新失败,因为拓扑已更改
CU_GRAPH_EXEC_UPDATE_ERROR_NODE_TYPE_CHANGED = 0x3
更新失败,因为节点类型已更改
CU_GRAPH_EXEC_UPDATE_ERROR_FUNCTION_CHANGED = 0x4
更新失败,因为内核节点的函数已更改 (CUDA 驱动程序 < 11.2)
CU_GRAPH_EXEC_UPDATE_ERROR_PARAMETERS_CHANGED = 0x5
更新失败,因为参数以不受支持的方式更改
CU_GRAPH_EXEC_UPDATE_ERROR_NOT_SUPPORTED = 0x6
更新失败,因为节点的某些内容不受支持
CU_GRAPH_EXEC_UPDATE_ERROR_UNSUPPORTED_FUNCTION_CHANGE = 0x7
更新失败,因为内核节点的函数以不受支持的方式更改
CU_GRAPH_EXEC_UPDATE_ERROR_ATTRIBUTES_CHANGED = 0x8
更新失败,因为节点属性以不受支持的方式更改
enum CUgraphInstantiateResult

图实例化结果

CUDA_GRAPH_INSTANTIATE_SUCCESS = 0
实例化成功
CUDA_GRAPH_INSTANTIATE_ERROR = 1
实例化失败,原因是函数返回值中描述的意外原因
CUDA_GRAPH_INSTANTIATE_INVALID_STRUCTURE = 2
实例化失败,原因是结构无效,例如循环
CUDA_GRAPH_INSTANTIATE_NODE_OPERATION_NOT_SUPPORTED = 3
设备启动的实例化失败,因为图包含不受支持的操作
CUDA_GRAPH_INSTANTIATE_MULTIPLE_CTXS_NOT_SUPPORTED = 4
设备启动的实例化失败,原因是节点属于不同的上下文
CUDA_GRAPH_INSTANTIATE_CONDITIONAL_HANDLE_UNUSED = 5
一个或多个条件句柄未与条件节点关联
enum CUgraphInstantiate_flags

实例化图的标志

CUDA_GRAPH_INSTANTIATE_FLAG_AUTO_FREE_ON_LAUNCH = 1
在重新启动之前,自动释放图中分配的内存。
CUDA_GRAPH_INSTANTIATE_FLAG_UPLOAD = 2
实例化后自动上传图。仅 cuGraphInstantiateWithParams 支持。上传将使用以下项中提供的流执行instantiateParams.
CUDA_GRAPH_INSTANTIATE_FLAG_DEVICE_LAUNCH = 4
实例化要从设备启动的图。此标志只能在支持统一寻址的平台上使用。此标志不能与 CUDA_GRAPH_INSTANTIATE_FLAG_AUTO_FREE_ON_LAUNCH 结合使用。
CUDA_GRAPH_INSTANTIATE_FLAG_USE_NODE_PRIORITY = 8
使用每个节点的优先级属性而不是启动到其中的流的优先级来运行图。
enum CUgraphNodeType

图节点类型

CU_GRAPH_NODE_TYPE_KERNEL = 0
GPU 内核节点
CU_GRAPH_NODE_TYPE_MEMCPY = 1
Memcpy 节点
CU_GRAPH_NODE_TYPE_MEMSET = 2
Memset 节点
CU_GRAPH_NODE_TYPE_HOST = 3
主机(可执行)节点
CU_GRAPH_NODE_TYPE_GRAPH = 4
执行嵌入图的节点
CU_GRAPH_NODE_TYPE_EMPTY = 5
空(无操作)节点
CU_GRAPH_NODE_TYPE_WAIT_EVENT = 6
外部事件等待节点
CU_GRAPH_NODE_TYPE_EVENT_RECORD = 7
外部事件记录节点
CU_GRAPH_NODE_TYPE_EXT_SEMAS_SIGNAL = 8
外部信号量信号节点
CU_GRAPH_NODE_TYPE_EXT_SEMAS_WAIT = 9
外部信号量等待节点
CU_GRAPH_NODE_TYPE_MEM_ALLOC = 10
内存分配节点
CU_GRAPH_NODE_TYPE_MEM_FREE = 11
内存释放节点
CU_GRAPH_NODE_TYPE_BATCH_MEM_OP = 12
批处理 MemOp 节点
CU_GRAPH_NODE_TYPE_CONDITIONAL = 13
条件节点可能用于实现图内的条件执行路径或循环。可以根据条件变量的值选择性地执行或迭代条件节点主体中包含的图。必须在使用 cuGraphConditionalHandleCreate 创建节点之前创建句柄。以下限制适用于包含条件节点的图:该图不能在子节点中使用。在任何时间点只能存在该图的一个实例。该图不能被克隆。要设置控制值,请在创建句柄时提供默认值和/或从设备代码调用 cudaGraphSetConditional
enum CUgraphicsMapResourceFlags

映射和取消映射互操作资源的标志

CU_GRAPHICS_MAP_RESOURCE_FLAGS_NONE = 0x00
CU_GRAPHICS_MAP_RESOURCE_FLAGS_READ_ONLY = 0x01
CU_GRAPHICS_MAP_RESOURCE_FLAGS_WRITE_DISCARD = 0x02
enum CUgraphicsRegisterFlags

注册图形资源的标志

CU_GRAPHICS_REGISTER_FLAGS_NONE = 0x00
CU_GRAPHICS_REGISTER_FLAGS_READ_ONLY = 0x01
CU_GRAPHICS_REGISTER_FLAGS_WRITE_DISCARD = 0x02
CU_GRAPHICS_REGISTER_FLAGS_SURFACE_LDST = 0x04
CU_GRAPHICS_REGISTER_FLAGS_TEXTURE_GATHER = 0x08
enum CUipcMem_flags

CUDA Ipc 内存标志

CU_IPC_MEM_LAZY_ENABLE_PEER_ACCESS = 0x1
根据需要自动启用远程设备之间的对等访问
enum CUjitInputType

设备代码格式

CU_JIT_INPUT_CUBIN = 0
编译后的特定于设备类的设备代码 适用选项:无
CU_JIT_INPUT_PTX = 1
PTX 源代码 适用选项:PTX 编译器选项
CU_JIT_INPUT_FATBINARY = 2
某些设备代码的多个 cubin 和/或 PTX 的捆绑包 适用选项:PTX 编译器选项、CU_JIT_FALLBACK_STRATEGY
CU_JIT_INPUT_OBJECT = 3
带有嵌入式设备代码的主机对象 适用选项:PTX 编译器选项、CU_JIT_FALLBACK_STRATEGY
CU_JIT_INPUT_LIBRARY = 4
带有嵌入式设备代码的主机对象的存档 适用选项:PTX 编译器选项、CU_JIT_FALLBACK_STRATEGY
CU_JIT_INPUT_NVVM = 5
已弃用

用于链接时优化的高级中间代码 适用选项:NVVM 编译器选项、PTX 编译器选项

仅对使用 CUDA 12.0 之前的工具包编译的 LTO-IR 有效

CU_JIT_NUM_INPUT_TYPES = 6
enum CUjit_cacheMode

dlcm 的缓存模式

CU_JIT_CACHE_OPTION_NONE = 0
编译时不指定 -dlcm 标志
CU_JIT_CACHE_OPTION_CG
编译时禁用 L1 缓存
CU_JIT_CACHE_OPTION_CA
编译时启用 L1 缓存
enum CUjit_fallback

Cubin 匹配回退策略

CU_PREFER_PTX = 0
如果找不到完全匹配的二进制文件,则首选编译 ptx
CU_PREFER_BINARY
如果找不到完全匹配项,则首选回退到兼容的二进制代码
enum CUjit_option

在线编译器和链接器选项

CU_JIT_MAX_REGISTERS = 0
线程可能使用的最大寄存器数。选项类型:unsigned int 适用于:仅限编译器
CU_JIT_THREADS_PER_BLOCK = 1
输入:指定每个代码块的最小线程数以进行目标编译 输出:返回编译器实际定位的线程数。这限制了编译器的资源利用率(例如,最大寄存器),以便具有给定线程数的代码块应能够基于寄存器限制启动。请注意,此选项目前不考虑任何其他资源限制,例如共享内存利用率。不能与 CU_JIT_TARGET 结合使用。选项类型:unsigned int 适用于:仅限编译器
CU_JIT_WALL_TIME = 2
用编译器和链接器中花费的总挂钟时间(以毫秒为单位)覆盖选项值 选项类型:float 适用于:编译器和链接器
CU_JIT_INFO_LOG_BUFFER = 3
指向缓冲区的指针,用于打印任何本质上是信息性的日志消息(缓冲区大小通过选项 CU_JIT_INFO_LOG_BUFFER_SIZE_BYTES 指定)选项类型:char * 适用于:编译器和链接器
CU_JIT_INFO_LOG_BUFFER_SIZE_BYTES = 4
输入:日志缓冲区大小(以字节为单位)。日志消息将限制为此大小(包括空终止符)输出:填充消息的日志缓冲区量 选项类型:unsigned int 适用于:编译器和链接器
CU_JIT_ERROR_LOG_BUFFER = 5
指向缓冲区的指针,用于打印任何反映错误的日志消息(缓冲区大小通过选项 CU_JIT_ERROR_LOG_BUFFER_SIZE_BYTES 指定)选项类型:char * 适用于:编译器和链接器
CU_JIT_ERROR_LOG_BUFFER_SIZE_BYTES = 6
输入:日志缓冲区大小(以字节为单位)。日志消息将限制为此大小(包括空终止符)输出:填充消息的日志缓冲区量 选项类型:unsigned int 适用于:编译器和链接器
CU_JIT_OPTIMIZATION_LEVEL = 7
应用于生成的代码的优化级别 (0 - 4),其中 4 是默认值和最高优化级别。选项类型:unsigned int 适用于:仅限编译器
CU_JIT_TARGET_FROM_CUCONTEXT = 8
无需选项值。根据当前附加的上下文确定目标(默认)选项类型:无需选项值 适用于:编译器和链接器
CU_JIT_TARGET = 9
目标基于提供的 CUjit_target 选择。不能与 CU_JIT_THREADS_PER_BLOCK 结合使用。选项类型:枚举类型 CUjit_target 的无符号整数。适用范围:编译器和链接器
CU_JIT_FALLBACK_STRATEGY = 10
指定在未找到匹配的 cubin 文件时的回退策略选择。选择基于提供的 CUjit_fallback。此选项不能与 cuLink* API 一起使用,因为链接器需要精确匹配。选项类型:枚举类型 CUjit_fallback 的无符号整数。适用范围:仅限编译器
CU_JIT_GENERATE_DEBUG_INFO = 11
指定是否在输出中创建调试信息 (-g) (0: false,默认) 选项类型:int。适用范围:编译器和链接器
CU_JIT_LOG_VERBOSE = 12
生成详细的日志消息 (0: false,默认) 选项类型:int。适用范围:编译器和链接器
CU_JIT_GENERATE_LINE_INFO = 13
生成行号信息 (-lineinfo) (0: false,默认) 选项类型:int。适用范围:仅限编译器
CU_JIT_CACHE_MODE = 14
指定是否显式启用缓存 (-dlcm)。选择基于提供的 CUjit_cacheMode_enum。选项类型:枚举类型 CUjit_cacheMode_enum 的无符号整数。适用范围:仅限编译器
CU_JIT_NEW_SM3X_OPT = 15
已弃用

此 jit 选项已弃用,不应使用。

CU_JIT_FAST_COMPILE = 16
此 jit 选项仅供内部使用。
CU_JIT_GLOBAL_SYMBOL_NAMES = 17
设备符号名称数组,这些名称将被重定位到 CU_JIT_GLOBAL_SYMBOL_ADDRESSES 中存储的相应主机地址。必须包含 CU_JIT_GLOBAL_SYMBOL_COUNT 个条目。加载设备模块时,驱动程序会将所有遇到的未解析符号重定位到主机地址。仅允许注册与未解析的全局变量对应的符号。在多个地址注册同一个设备符号是非法的。选项类型:const char **。适用范围:仅限动态链接器
CU_JIT_GLOBAL_SYMBOL_ADDRESSES = 18
主机地址数组,将用于重定位存储在 CU_JIT_GLOBAL_SYMBOL_NAMES 中的相应设备符号。必须包含 CU_JIT_GLOBAL_SYMBOL_COUNT 个条目。选项类型:void **。适用范围:仅限动态链接器
CU_JIT_GLOBAL_SYMBOL_COUNT = 19
CU_JIT_GLOBAL_SYMBOL_NAMESCU_JIT_GLOBAL_SYMBOL_ADDRESSES 数组中的条目数。选项类型:unsigned int。适用范围:仅限动态链接器
CU_JIT_LTO = 20
已弃用

为设备代码启用链接时优化 (-dlto)(默认禁用)。32 位平台不支持此选项。选项类型:int。适用范围:编译器和链接器

仅对使用 CUDA 12.0 之前的工具包编译的 LTO-IR 有效

CU_JIT_FTZ = 21
已弃用

控制单精度非规格化数 (-ftz) 支持(0: false,默认)。1:将非规格化值刷新为零;0:保留非规格化值。选项类型:int。适用范围:使用 CU_JIT_LTO 指定的链接时优化

仅对使用 CUDA 12.0 之前的工具包编译的 LTO-IR 有效

CU_JIT_PREC_DIV = 22
已弃用

控制单精度浮点除法和倒数 (-prec-div) 支持(1: true,默认)。1:启用 IEEE 四舍五入到最近的模式;0:启用快速近似模式。选项类型:int。适用范围:使用 CU_JIT_LTO 指定的链接时优化

仅对使用 CUDA 12.0 之前的工具包编译的 LTO-IR 有效

CU_JIT_PREC_SQRT = 23
已弃用

控制单精度浮点平方根 (-prec-sqrt) 支持(1: true,默认)。1:启用 IEEE 四舍五入到最近的模式;0:启用快速近似模式。选项类型:int。适用范围:使用 CU_JIT_LTO 指定的链接时优化

仅对使用 CUDA 12.0 之前的工具包编译的 LTO-IR 有效

CU_JIT_FMA = 24
已弃用

启用/禁用将浮点乘法和加法/减法收缩为浮点乘加 (-fma) 运算(1:启用,默认;0:禁用)。选项类型:int。适用范围:使用 CU_JIT_LTO 指定的链接时优化

仅对使用 CUDA 12.0 之前的工具包编译的 LTO-IR 有效

CU_JIT_REFERENCED_KERNEL_NAMES = 25
已弃用

内核名称数组,应在链接时保留这些名称,而可以删除其他名称。必须包含 CU_JIT_REFERENCED_KERNEL_COUNT 个条目。请注意,内核名称可能会被编译器篡改,在这种情况下,需要指定篡改后的名称。通配符 "*" 可用于表示零个或多个字符,而不是指定完整或篡改后的名称。重要的是要注意,通配符 "*" 也会隐式添加。例如,指定 "foo" 将匹配 "foobaz"、"barfoo"、"barfoobaz",从而保留所有具有这些名称的内核。可以通过提供更具体的名称(如 "barfoobaz")来避免这种情况。选项类型:const char **。适用范围:仅限动态链接器

仅对使用 CUDA 12.0 之前的工具包编译的 LTO-IR 有效

CU_JIT_REFERENCED_KERNEL_COUNT = 26
已弃用

CU_JIT_REFERENCED_KERNEL_NAMES 数组中的条目数。选项类型:unsigned int。适用范围:仅限动态链接器

仅对使用 CUDA 12.0 之前的工具包编译的 LTO-IR 有效

CU_JIT_REFERENCED_VARIABLE_NAMES = 27
已弃用

变量名称数组(__device__ 和/或 __constant__),应在链接时保留这些名称,而可以删除其他名称。必须包含 CU_JIT_REFERENCED_VARIABLE_COUNT 个条目。请注意,变量名称可能会被编译器篡改,在这种情况下,需要指定篡改后的名称。通配符 "*" 可用于表示零个或多个字符,而不是指定完整或篡改后的名称。重要的是要注意,通配符 "*" 也会隐式添加。例如,指定 "foo" 将匹配 "foobaz"、"barfoo"、"barfoobaz",从而保留所有具有这些名称的变量。可以通过提供更具体的名称(如 "barfoobaz")来避免这种情况。选项类型:const char **。适用范围:使用 CU_JIT_LTO 指定的链接时优化

仅对使用 CUDA 12.0 之前的工具包编译的 LTO-IR 有效

CU_JIT_REFERENCED_VARIABLE_COUNT = 28
已弃用

CU_JIT_REFERENCED_VARIABLE_NAMES 数组中的条目数。选项类型:unsigned int。适用范围:使用 CU_JIT_LTO 指定的链接时优化

仅对使用 CUDA 12.0 之前的工具包编译的 LTO-IR 有效

CU_JIT_OPTIMIZE_UNUSED_DEVICE_VARIABLES = 29
已弃用

此选项用作提示,以使 JIT 编译器/链接器能够删除设备代码中未引用的常量 (__constant__) 和设备 (__device__) 变量(默认禁用)。请注意,使用类似 cuModuleGetGlobal() 等 API 主机引用常量和设备变量,并指定此选项可能会导致未定义的行为,除非使用 CU_JIT_REFERENCED_VARIABLE_NAMES 显式指定变量。选项类型:int。适用范围:使用 CU_JIT_LTO 指定的链接时优化

仅对使用 CUDA 12.0 之前的工具包编译的 LTO-IR 有效

CU_JIT_POSITION_INDEPENDENT_CODE = 30
生成位置无关代码 (0: false)。选项类型:int。适用范围:仅限编译器
CU_JIT_MIN_CTA_PER_SM = 31
此选项提示 JIT 编译器,内核网格中映射到 SM 的 CTA 的最小数量。当与 CU_JIT_MAX_REGISTERSCU_JIT_THREADS_PER_BLOCK 一起使用时,将忽略此选项。基于此选项的优化还需要指定 CU_JIT_MAX_THREADS_PER_BLOCK。对于已使用 PTX 指令 .minnctapersm 的内核,默认情况下将忽略此选项。使用 CU_JIT_OVERRIDE_DIRECTIVE_VALUES 使此选项优先于 PTX 指令。选项类型:unsigned int。适用范围:仅限编译器
CU_JIT_MAX_THREADS_PER_BLOCK = 32
线程块中的最大线程数,计算为为块的每个维度指定的最大范围的乘积。保证在内核的任何调用中都不会超过此限制。超过最大线程数会导致运行时错误或内核启动失败。对于已使用 PTX 指令 .maxntid 的内核,默认情况下将忽略此选项。使用 CU_JIT_OVERRIDE_DIRECTIVE_VALUES 使此选项优先于 PTX 指令。选项类型:int。适用范围:仅限编译器
CU_JIT_OVERRIDE_DIRECTIVE_VALUES = 33
此选项允许使用 CU_JIT_MAX_REGISTERSCU_JIT_THREADS_PER_BLOCKCU_JIT_MAX_THREADS_PER_BLOCKCU_JIT_MIN_CTA_PER_SM 指定的值优先于任何 PTX 指令。(0:禁用,默认;1:启用)。选项类型:int。适用范围:仅限编译器
CU_JIT_NUM_OPTIONS
enum CUjit_target

在线编译目标

CU_TARGET_COMPUTE_30 = 30
计算设备类 3.0
CU_TARGET_COMPUTE_32 = 32
计算设备类 3.2
CU_TARGET_COMPUTE_35 = 35
计算设备类 3.5
CU_TARGET_COMPUTE_37 = 37
计算设备类 3.7
CU_TARGET_COMPUTE_50 = 50
计算设备类 5.0
CU_TARGET_COMPUTE_52 = 52
计算设备类 5.2
CU_TARGET_COMPUTE_53 = 53
计算设备类 5.3
CU_TARGET_COMPUTE_60 = 60
计算设备类 6.0。
CU_TARGET_COMPUTE_61 = 61
计算设备类 6.1。
CU_TARGET_COMPUTE_62 = 62
计算设备类 6.2。
CU_TARGET_COMPUTE_70 = 70
计算设备类 7.0。
CU_TARGET_COMPUTE_72 = 72
计算设备类 7.2。
CU_TARGET_COMPUTE_75 = 75
计算设备类 7.5。
CU_TARGET_COMPUTE_80 = 80
计算设备类 8.0。
CU_TARGET_COMPUTE_86 = 86
计算设备类 8.6。
CU_TARGET_COMPUTE_87 = 87
计算设备类 8.7。
CU_TARGET_COMPUTE_89 = 89
计算设备类 8.9。
CU_TARGET_COMPUTE_90 = 90
计算设备类 9.0。
CU_TARGET_COMPUTE_100 = 100
计算设备类 10.0。
CU_TARGET_COMPUTE_101 = 101
计算设备类 10.1。
CU_TARGET_COMPUTE_120 = 120
计算设备类 12.0。具有加速功能的计算设备类 9.0。
CU_TARGET_COMPUTE_90A = CU_COMPUTE_ACCELERATED_TARGET_BASE+CU_TARGET_COMPUTE_90
具有加速功能的计算设备类 10.0。
CU_TARGET_COMPUTE_100A = CU_COMPUTE_ACCELERATED_TARGET_BASE+CU_TARGET_COMPUTE_100
具有加速功能的计算设备类 10.1。
CU_TARGET_COMPUTE_101A = CU_COMPUTE_ACCELERATED_TARGET_BASE+CU_TARGET_COMPUTE_101
具有加速功能的计算设备类 12.0。
CU_TARGET_COMPUTE_120A = CU_COMPUTE_ACCELERATED_TARGET_BASE+CU_TARGET_COMPUTE_120
enum CUlaunchAttributeID

启动属性枚举;用作 CUlaunchAttribute 的 id 字段

CU_LAUNCH_ATTRIBUTE_IGNORE = 0
忽略的条目,为了方便组合
CU_LAUNCH_ATTRIBUTE_ACCESS_POLICY_WINDOW = 1
对流、图节点、启动有效。请参阅 CUlaunchAttributeValue::accessPolicyWindow
CU_LAUNCH_ATTRIBUTE_COOPERATIVE = 2
对图节点、启动有效。请参阅 CUlaunchAttributeValue::cooperative
CU_LAUNCH_ATTRIBUTE_SYNCHRONIZATION_POLICY = 3
对流有效。请参阅 CUlaunchAttributeValue::syncPolicy
CU_LAUNCH_ATTRIBUTE_CLUSTER_DIMENSION = 4
对图节点、启动有效。请参阅 CUlaunchAttributeValue::clusterDim
CU_LAUNCH_ATTRIBUTE_CLUSTER_SCHEDULING_POLICY_PREFERENCE = 5
对图节点、启动有效。请参阅 CUlaunchAttributeValue::clusterSchedulingPolicyPreference
CU_LAUNCH_ATTRIBUTE_PROGRAMMATIC_STREAM_SERIALIZATION = 6
对启动有效。将 CUlaunchAttributeValue::programmaticStreamSerializationAllowed 设置为非 0 值,表示内核将使用程序化手段来解决其流依赖性,以便 CUDA 运行时应机会性地允许网格的执行与流中先前的内核重叠(如果该内核请求重叠)。依赖启动可以选择使用程序化同步(cudaGridDependencySynchronize() 或等效的 PTX 指令)来等待依赖关系。
CU_LAUNCH_ATTRIBUTE_PROGRAMMATIC_EVENT = 7
对启动有效。设置 CUlaunchAttributeValue::programmaticEvent 以记录事件。通过此启动属性记录的事件保证仅在关联内核中的所有块触发事件后才触发。块可以通过 PTX launchdep.release 或 CUDA 内置函数 cudaTriggerProgrammaticLaunchCompletion() 来触发事件。如果 triggerAtBlockStart 设置为非 0 值,也可以在每个块执行开始时插入触发器。依赖启动可以选择使用程序化同步(cudaGridDependencySynchronize() 或等效的 PTX 指令)来等待依赖关系。请注意,依赖项(包括调用 cuEventSynchronize() 的 CPU 线程)不保证在事件释放时精确观察到释放。例如,cuEventSynchronize() 可能仅在关联内核完成很久之后才观察到事件触发。此记录类型主要用于在设备任务之间建立程序化依赖关系。另请注意,这种类型的依赖关系允许但不保证任务的并发执行。提供的事件不得是进程间或互操作事件。事件必须禁用计时(即,必须使用 CU_EVENT_DISABLE_TIMING 标志集创建)。
CU_LAUNCH_ATTRIBUTE_PRIORITY = 8
对流、图节点、启动有效。请参阅 CUlaunchAttributeValue::priority
CU_LAUNCH_ATTRIBUTE_MEM_SYNC_DOMAIN_MAP = 9
对流、图节点、启动有效。请参阅 CUlaunchAttributeValue::memSyncDomainMap
CU_LAUNCH_ATTRIBUTE_MEM_SYNC_DOMAIN = 10
对流、图节点、启动有效。请参阅 CUlaunchAttributeValue::memSyncDomain
CU_LAUNCH_ATTRIBUTE_PREFERRED_CLUSTER_DIMENSION = 11
对图节点、启动有效。设置 CUlaunchAttributeValue::preferredClusterDim 以允许内核启动指定首选的替代集群维度。块可以根据此属性指定的维度(分组到“首选替代集群”)或 CU_LAUNCH_ATTRIBUTE_CLUSTER_DIMENSION 属性指定的维度(分组到“常规集群”)进行分组。“首选替代集群”的集群维度应为常规集群维度的非零整数倍。设备将尽最大努力将线程块分组到首选集群,而不是将它们分组到常规集群中。当设备认为必要时(主要是当设备暂时耗尽物理资源来启动更大的首选集群时),设备可能会切换到启动常规集群,以尝试尽可能多地利用物理设备资源。每种类型的集群都将具有其枚举/坐标设置,就好像网格仅由其类型的集群组成一样。例如,如果首选替代集群维度是常规集群维度的两倍,则可能同时存在索引为 (1,0,0) 的常规集群和索引为 (1,0,0) 的首选集群。在此示例中,首选替代集群 (1,0,0) 替换常规集群 (2,0,0) 和 (3,0,0) 并对其块进行分组。仅当已指定常规集群维度时,此属性才会生效。首选替代集群维度必须是常规集群维度的非零整数倍,并且必须划分网格。如果内核的 `__launch_bounds__` 中设置了 `maxBlocksPerCluster`,则它也不能超过 `maxBlocksPerCluster`。否则,它必须小于驱动程序可以支持的最大值。否则,允许将此属性设置为物理上无法在任何特定设备上容纳的值。
CU_LAUNCH_ATTRIBUTE_LAUNCH_COMPLETION_EVENT = 12
对启动有效。设置 CUlaunchAttributeValue::launchCompletionEvent 以记录事件。名义上,事件在内核的所有块都开始执行后触发。目前,这只是尽最大努力。如果内核 B 对内核 A 具有启动完成依赖性,则 B 可能等待直到 A 完成。或者,B 的块可能在 A 的所有块开始之前开始,例如,如果 B 可以声明 A 不可用的执行资源(例如,它们在不同的 GPU 上运行),或者如果 B 的优先级高于 A。如果这种排序反转可能导致死锁,请谨慎操作。启动完成事件名义上类似于具有以下内容的程序化事件triggerAtBlockStart设置,除了它对 cudaGridDependencySynchronize() 不可见,并且可以与计算能力低于 9.0 的情况一起使用。提供的事件不得是进程间或互操作事件。事件必须禁用计时(即,必须使用 CU_EVENT_DISABLE_TIMING 标志集创建)。
CU_LAUNCH_ATTRIBUTE_DEVICE_UPDATABLE_KERNEL_NODE = 13
对图节点、启动有效。此属性仅适用于图形,并且在非捕获流中将其传递给启动将导致错误。CUlaunchAttributeValue::deviceUpdatableKernelNode::deviceUpdatable 只能设置为 0 或 1。将字段设置为 1 表示相应的内核节点应是设备可更新的。成功后,将通过 CUlaunchAttributeValue::deviceUpdatableKernelNode::devNode 返回句柄,该句柄可以传递给各种设备端更新函数,以从另一个内核中更新节点的内核参数。有关可以进行的设备更新类型以及相关限制的更多信息,请参阅 cudaGraphKernelNodeUpdatesApply。与常规内核节点相比,设备可更新节点具有额外的限制。首先,设备可更新节点无法通过 cuGraphDestroyNode 从其图中删除。此外,一旦选择加入此功能,节点就无法退出,并且任何尝试将 deviceUpdatable 属性设置为 0 的操作都将导致错误。设备可更新内核节点也不能通过 cuGraphKernelNodeCopyAttributes 将其属性复制到另一个内核节点或从另一个内核节点复制属性。包含一个或多个设备可更新节点的图也不允许多次实例化,并且图及其实例化版本都不能传递给 cuGraphExecUpdate。如果图包含设备可更新节点,并从设备内的图中更新这些节点,则必须在启动之前使用 cuGraphUpload 上传该图。对于此类图,如果对设备可更新节点进行了主机端可执行图更新,则必须在再次启动之前上传该图。
CU_LAUNCH_ATTRIBUTE_PREFERRED_SHARED_MEMORY_CARVEOUT = 14
对启动有效。在 L1 缓存和共享内存使用相同硬件资源的设备上,将 CUlaunchAttributeValue::sharedMemCarveout 设置为 0-100 之间的百分比,表示 CUDA 驱动程序设置共享内存划分首选项,以占该内核启动的总共享内存的百分比。此属性优先于 CU_FUNC_ATTRIBUTE_PREFERRED_SHARED_MEMORY_CARVEOUT。这只是一个提示,CUDA 驱动程序可以在启动需要时选择不同的配置。
enum CUlaunchMemSyncDomain

内存同步域

内核可以在指定的内存同步域中启动,该域会影响该内核发出的所有内存操作。在一个域中发出的内存屏障将仅对该域中的内存操作进行排序,从而消除因内存屏障对无关流量进行排序而导致的延迟增加。

默认情况下,内核在域 0 中启动。使用 CU_LAUNCH_MEM_SYNC_DOMAIN_REMOTE 启动的内核将具有不同的域 ID。用户还可以使用 CUlaunchMemSyncDomainMap 更改特定流/图节点/内核启动的域 ID。请参阅 CU_LAUNCH_ATTRIBUTE_MEM_SYNC_DOMAINcuStreamSetAttributecuLaunchKernelExcuGraphKernelNodeSetAttribute

在不同域中启动的内核中完成的内存操作被视为系统范围的距离。换句话说,GPU 范围的内存同步不足以让另一个内存同步域中的内核观察到内存顺序,即使它们在同一个 GPU 上也是如此。

CU_LAUNCH_MEM_SYNC_DOMAIN_DEFAULT = 0
在默认域中启动内核
CU_LAUNCH_MEM_SYNC_DOMAIN_REMOTE = 1
在远程域中启动内核
enum CUlibraryOption

库选项,与 cuLibraryLoadData()cuLibraryLoadFromFile() 一起指定

CU_LIBRARY_HOST_UNIVERSAL_FUNCTION_AND_DATA_TABLE = 0
CU_LIBRARY_BINARY_IS_PRESERVED = 1
指定参数code传递给 cuLibraryLoadData() 将被保留。指定此选项将使驱动程序知道code可以在任何时候访问,直到 cuLibraryUnload()。默认行为是驱动程序分配和维护自己的code副本。请注意,这只是一个内存使用优化提示,驱动程序可以选择在需要时忽略它。将此选项与 cuLibraryLoadFromFile() 一起指定是无效的,并将返回 CUDA_ERROR_INVALID_VALUE
CU_LIBRARY_NUM_OPTIONS
enum CUlimit

限制

CU_LIMIT_STACK_SIZE = 0x00
GPU 线程堆栈大小
CU_LIMIT_PRINTF_FIFO_SIZE = 0x01
GPU printf FIFO 大小
CU_LIMIT_MALLOC_HEAP_SIZE = 0x02
GPU malloc 堆大小
CU_LIMIT_DEV_RUNTIME_SYNC_DEPTH = 0x03
GPU 设备运行时启动同步深度
CU_LIMIT_DEV_RUNTIME_PENDING_LAUNCH_COUNT = 0x04
GPU 设备运行时挂起启动计数
CU_LIMIT_MAX_L2_FETCH_GRANULARITY = 0x05
一个介于 0 到 128 之间的值,指示 L2 的最大获取粒度(以字节为单位)。这是一个提示
CU_LIMIT_PERSISTING_L2_CACHE_SIZE = 0x06
L2 持久行缓存大小(以字节为单位)
CU_LIMIT_SHMEM_SIZE = 0x07
CIG 上下文上 CUDA 内核可用的共享内存的最大大小(以字节为单位)。只能查询,不能设置
CU_LIMIT_CIG_ENABLED = 0x08
非零值表示此 CUDA 上下文是启用 CIG 的上下文。只能查询,不能设置
CU_LIMIT_CIG_SHMEM_FALLBACK_ENABLED = 0x09
设置为零时,如果内核使用的共享内存超过可用内存,CUDA 将无法在 CIG 上下文上启动内核,而是使用回退路径
CU_LIMIT_MAX
enum CUmemAccess_flags

指定映射的内存保护标志。

CU_MEM_ACCESS_FLAGS_PROT_NONE = 0x0
默认值,使地址范围不可访问
CU_MEM_ACCESS_FLAGS_PROT_READ = 0x1
使地址范围可读
CU_MEM_ACCESS_FLAGS_PROT_READWRITE = 0x3
使地址范围可读写
CU_MEM_ACCESS_FLAGS_PROT_MAX = 0x7FFFFFFF
enum CUmemAllocationCompType

指定分配的压缩属性。

CU_MEM_ALLOCATION_COMP_NONE = 0x0
分配不可压缩的内存
CU_MEM_ALLOCATION_COMP_GENERIC = 0x1
分配可压缩的内存
enum CUmemAllocationGranularity_flags

用于请求分配的不同最佳粒度和所需粒度的标志。

CU_MEM_ALLOC_GRANULARITY_MINIMUM = 0x0
分配所需的最小粒度
CU_MEM_ALLOC_GRANULARITY_RECOMMENDED = 0x1
为获得最佳性能而建议的分配粒度
enum CUmemAllocationHandleType

用于指定特定句柄类型的标志

CU_MEM_HANDLE_TYPE_NONE = 0x0
不允许任何导出机制。 >
CU_MEM_HANDLE_TYPE_POSIX_FILE_DESCRIPTOR = 0x1
允许使用文件描述符进行导出。仅在 POSIX 系统上允许。(int)
CU_MEM_HANDLE_TYPE_WIN32 = 0x2
允许使用 Win32 NT 句柄进行导出。(HANDLE)
CU_MEM_HANDLE_TYPE_WIN32_KMT = 0x4
允许使用 Win32 KMT 句柄进行导出。(D3DKMT_HANDLE)
CU_MEM_HANDLE_TYPE_FABRIC = 0x8
允许使用 Fabric 句柄进行导出。(CUmemFabricHandle)
CU_MEM_HANDLE_TYPE_MAX = 0x7FFFFFFF
enum CUmemAllocationType

定义可用的分配类型

CU_MEM_ALLOCATION_TYPE_INVALID = 0x0
CU_MEM_ALLOCATION_TYPE_PINNED = 0x1
此分配类型为“pinned”,即在应用程序正在积极使用时无法从其当前位置迁移
CU_MEM_ALLOCATION_TYPE_MAX = 0x7FFFFFFF
enum CUmemAttach_flags

CUDA 内存附加标志

CU_MEM_ATTACH_GLOBAL = 0x1
内存可以被任何设备上的任何流访问
CU_MEM_ATTACH_HOST = 0x2
内存不能被任何设备上的任何流访问
CU_MEM_ATTACH_SINGLE = 0x4
内存只能被关联设备上的单个流访问
enum CUmemHandleType

内存句柄类型

CU_MEM_HANDLE_TYPE_GENERIC = 0
enum CUmemLocationType

指定位置的类型

CU_MEM_LOCATION_TYPE_INVALID = 0x0
CU_MEM_LOCATION_TYPE_DEVICE = 0x1
位置是设备位置,因此 id 是设备序号
CU_MEM_LOCATION_TYPE_HOST = 0x2
位置是主机,id 被忽略
CU_MEM_LOCATION_TYPE_HOST_NUMA = 0x3
位置是主机 NUMA 节点,因此 id 是主机 NUMA 节点 id
CU_MEM_LOCATION_TYPE_HOST_NUMA_CURRENT = 0x4
位置是当前线程的主机 NUMA 节点,id 被忽略
CU_MEM_LOCATION_TYPE_MAX = 0x7FFFFFFF
enum CUmemOperationType

内存操作类型

CU_MEM_OPERATION_TYPE_MAP = 1
CU_MEM_OPERATION_TYPE_UNMAP = 2
enum CUmemPool_attribute

CUDA 内存池属性

CU_MEMPOOL_ATTR_REUSE_FOLLOW_EVENT_DEPENDENCIES = 1
(value type = int) 允许 cuMemAllocAsync 使用在另一个流中异步释放的内存,只要分配流对释放操作存在流排序依赖性即可。Cuda 事件和空流交互可以创建所需的流排序依赖性。(默认启用)
CU_MEMPOOL_ATTR_REUSE_ALLOW_OPPORTUNISTIC
(value type = int) 允许在释放和分配之间没有依赖关系时,重用已完成的释放操作。(默认启用)
CU_MEMPOOL_ATTR_REUSE_ALLOW_INTERNAL_DEPENDENCIES
(value type = int) 允许 cuMemAllocAsync 插入新的流依赖关系,以便建立重用 cuFreeAsync 释放的内存块所需的流顺序(默认启用)。
CU_MEMPOOL_ATTR_RELEASE_THRESHOLD
(value type = cuuint64_t) 尝试将内存释放回操作系统之前,内存池中保留的字节数。当内存池持有的内存超过释放阈值字节数时,分配器将在下次调用流、事件或上下文同步时尝试将内存释放回操作系统。(默认值 0)
CU_MEMPOOL_ATTR_RESERVED_MEM_CURRENT
(value type = cuuint64_t) 当前为内存池分配的后备内存量。
CU_MEMPOOL_ATTR_RESERVED_MEM_HIGH
(value type = cuuint64_t) 自上次重置以来,为内存池分配的后备内存的最高水位线。最高水位线只能重置为零。
CU_MEMPOOL_ATTR_USED_MEM_CURRENT
(value type = cuuint64_t) 应用程序当前正在使用的池中的内存量。
CU_MEMPOOL_ATTR_USED_MEM_HIGH
(value type = cuuint64_t) 自上次重置以来,应用程序使用的池中内存量的最高水位线。最高水位线只能重置为零。
enum CUmemRangeFlags

请求地址范围句柄类型的标志。

CU_MEM_RANGE_FLAG_DMA_BUF_MAPPING_TYPE_PCIE = 0x1
指示 DMA_BUF 句柄应通过 PCIe BAR1 映射
enum CUmemRangeHandleType

指定地址范围的句柄类型

CU_MEM_RANGE_HANDLE_TYPE_DMA_BUF_FD = 0x1
CU_MEM_RANGE_HANDLE_TYPE_MAX = 0x7FFFFFFF
enum CUmem_advise

内存建议值

CU_MEM_ADVISE_SET_READ_MOSTLY = 1
数据将主要被读取,并且偶尔会被写入
CU_MEM_ADVISE_UNSET_READ_MOSTLY = 2
撤销 CU_MEM_ADVISE_SET_READ_MOSTLY 的效果
CU_MEM_ADVISE_SET_PREFERRED_LOCATION = 3
将数据的首选位置设置为指定的设备
CU_MEM_ADVISE_UNSET_PREFERRED_LOCATION = 4
清除数据的首选位置
CU_MEM_ADVISE_SET_ACCESSED_BY = 5
数据将由指定的设备访问,因此尽可能防止页面错误
CU_MEM_ADVISE_UNSET_ACCESSED_BY = 6
让统一内存子系统决定指定设备的页面错误策略
enum CUmemcpy3DOperandType

这些标志允许应用程序传递在 cuMemcpy3DBatchAsync 中指定的各个副本的操作数类型。

CU_MEMCPY_OPERAND_TYPE_POINTER = 0x1
Memcpy 操作数是有效的指针。
CU_MEMCPY_OPERAND_TYPE_ARRAY = 0x2
Memcpy 操作数是 CUarray。
CU_MEMCPY_OPERAND_TYPE_MAX = 0x7FFFFFFF
enum CUmemcpyFlags

用于指定批处理中副本的标志。有关更多详细信息,请参阅 cuMemcpyBatchAsync

CU_MEMCPY_FLAG_DEFAULT = 0x0
CU_MEMCPY_FLAG_PREFER_OVERLAP_WITH_COMPUTE = 0x1
提示驱动程序尝试将副本与 SM 上的计算工作重叠。
enum CUmemcpySrcAccessOrder

这些标志允许应用程序传递 CUDA 必须维护的源访问顺序。目标将始终以流顺序访问。

CU_MEMCPY_SRC_ACCESS_ORDER_INVALID = 0x0
默认无效。
CU_MEMCPY_SRC_ACCESS_ORDER_STREAM = 0x1
指示对源指针的访问必须是流顺序的。
CU_MEMCPY_SRC_ACCESS_ORDER_DURING_API_CALL = 0x2
指示对源指针的访问可以是非流顺序的,并且所有访问都必须在 API 调用返回之前完成。此标志适用于临时源(例如,堆栈变量),当已知流中的先前操作无法访问内存,并且内存的生命周期仅限于声明源变量的作用域时。指定此标志允许驱动程序优化复制,并消除用户在 API 调用后同步流的需要。
CU_MEMCPY_SRC_ACCESS_ORDER_ANY = 0x3
指示对源指针的访问可以是非流顺序的,并且访问甚至可以在 API 调用返回后发生。此标志适用于在 CUDA 外部分配的主机指针(例如,通过 malloc),当已知流中的先前操作无法访问内存时。指定此标志允许驱动程序在某些平台上优化复制。
CU_MEMCPY_SRC_ACCESS_ORDER_MAX = 0x7FFFFFFF
enum CUmemorytype

内存类型

CU_MEMORYTYPE_HOST = 0x01
主机内存
CU_MEMORYTYPE_DEVICE = 0x02
设备内存
CU_MEMORYTYPE_ARRAY = 0x03
数组内存
CU_MEMORYTYPE_UNIFIED = 0x04
统一设备或主机内存
enum CUmulticastGranularity_flags

用于查询多播对象不同粒度的标志

CU_MULTICAST_GRANULARITY_MINIMUM = 0x0
最小所需粒度
CU_MULTICAST_GRANULARITY_RECOMMENDED = 0x1
获得最佳性能的推荐粒度
enum CUoccupancy_flags

占用率计算器标志

CU_OCCUPANCY_DEFAULT = 0x0
默认行为
CU_OCCUPANCY_DISABLE_CACHING_OVERRIDE = 0x1
假设全局缓存已启用且无法自动关闭
enum CUpointer_attribute

指针信息

CU_POINTER_ATTRIBUTE_CONTEXT = 1
指针在其上分配或注册的 CUcontext
CU_POINTER_ATTRIBUTE_MEMORY_TYPE = 2
描述指针物理位置的 CUmemorytype
CU_POINTER_ATTRIBUTE_DEVICE_POINTER = 3
设备上可以访问指针内存的地址
CU_POINTER_ATTRIBUTE_HOST_POINTER = 4
主机上可以访问指针内存的地址
CU_POINTER_ATTRIBUTE_P2P_TOKENS = 5
用于 nv-p2p.h Linux 内核接口的一对令牌
CU_POINTER_ATTRIBUTE_SYNC_MEMOPS = 6
同步在此区域上启动的每个同步内存操作
CU_POINTER_ATTRIBUTE_BUFFER_ID = 7
为分配的内存区域提供的进程范围的唯一 ID
CU_POINTER_ATTRIBUTE_IS_MANAGED = 8
指示指针是否指向托管内存
CU_POINTER_ATTRIBUTE_DEVICE_ORDINAL = 9
在其上分配或注册指针的设备的设备序号
CU_POINTER_ATTRIBUTE_IS_LEGACY_CUDA_IPC_CAPABLE = 10
如果此指针映射到适用于 cudaIpcGetMemHandle 的分配,则为 1,否则为 0
CU_POINTER_ATTRIBUTE_RANGE_START_ADDR = 11
此请求指针的起始地址
CU_POINTER_ATTRIBUTE_RANGE_SIZE = 12
此请求指针的地址范围大小
CU_POINTER_ATTRIBUTE_MAPPED = 13
如果此指针位于映射到后备分配的有效地址范围内,则为 1,否则为 0
CU_POINTER_ATTRIBUTE_ALLOWED_HANDLE_TYPES = 14
此分配允许的 CUmemAllocationHandleType 的位掩码
CU_POINTER_ATTRIBUTE_IS_GPU_DIRECT_RDMA_CAPABLE = 15
如果此指针引用的内存可以与 GPUDirect RDMA API 一起使用,则为 1
CU_POINTER_ATTRIBUTE_ACCESS_FLAGS = 16
返回与当前上下文关联的设备对给定指针引用的相应内存拥有的访问标志
CU_POINTER_ATTRIBUTE_MEMPOOL_HANDLE = 17
如果分配是从内存池分配的,则返回分配的内存池句柄。否则返回 NULL。
CU_POINTER_ATTRIBUTE_MAPPING_SIZE = 18
指针所属的实际底层映射的大小
CU_POINTER_ATTRIBUTE_MAPPING_BASE_ADDR = 19
指针所属的映射的起始地址
CU_POINTER_ATTRIBUTE_MEMORY_BLOCK_ID = 20
与指针所属的物理分配相对应的进程范围的唯一 ID
CU_POINTER_ATTRIBUTE_IS_HW_DECOMPRESS_CAPABLE = 21
返回在*data一个布尔值,指示指针是否指向能够用于硬件加速解压缩的内存。
enum CUprocessState

CUDA 进程状态

CU_PROCESS_STATE_RUNNING = 0
默认进程状态
CU_PROCESS_STATE_LOCKED
已获取 CUDA API 锁,因此进一步的 CUDA API 调用将阻塞
CU_PROCESS_STATE_CHECKPOINTED
应用程序内存内容已进行检查点操作,并且已释放底层分配和设备句柄
CU_PROCESS_STATE_FAILED
应用程序在检查点/恢复过程中遇到无法纠正的错误
enum CUresourceViewFormat

资源视图格式

CU_RES_VIEW_FORMAT_NONE = 0x00
无资源视图格式(使用底层资源格式)
CU_RES_VIEW_FORMAT_UINT_1X8 = 0x01
1 通道无符号 8 位整数
CU_RES_VIEW_FORMAT_UINT_2X8 = 0x02
2 通道无符号 8 位整数
CU_RES_VIEW_FORMAT_UINT_4X8 = 0x03
4 通道无符号 8 位整数
CU_RES_VIEW_FORMAT_SINT_1X8 = 0x04
1 通道有符号 8 位整数
CU_RES_VIEW_FORMAT_SINT_2X8 = 0x05
2 通道有符号 8 位整数
CU_RES_VIEW_FORMAT_SINT_4X8 = 0x06
4 通道有符号 8 位整数
CU_RES_VIEW_FORMAT_UINT_1X16 = 0x07
1 通道无符号 16 位整数
CU_RES_VIEW_FORMAT_UINT_2X16 = 0x08
2 通道无符号 16 位整数
CU_RES_VIEW_FORMAT_UINT_4X16 = 0x09
4 通道无符号 16 位整数
CU_RES_VIEW_FORMAT_SINT_1X16 = 0x0a
1 通道有符号 16 位整数
CU_RES_VIEW_FORMAT_SINT_2X16 = 0x0b
2 通道有符号 16 位整数
CU_RES_VIEW_FORMAT_SINT_4X16 = 0x0c
4 通道有符号 16 位整数
CU_RES_VIEW_FORMAT_UINT_1X32 = 0x0d
1 通道无符号 32 位整数
CU_RES_VIEW_FORMAT_UINT_2X32 = 0x0e
2 通道无符号 32 位整数
CU_RES_VIEW_FORMAT_UINT_4X32 = 0x0f
4 通道无符号 32 位整数
CU_RES_VIEW_FORMAT_SINT_1X32 = 0x10
1 通道有符号 32 位整数
CU_RES_VIEW_FORMAT_SINT_2X32 = 0x11
2 通道有符号 32 位整数
CU_RES_VIEW_FORMAT_SINT_4X32 = 0x12
4 通道有符号 32 位整数
CU_RES_VIEW_FORMAT_FLOAT_1X16 = 0x13
1 通道 16 位浮点数
CU_RES_VIEW_FORMAT_FLOAT_2X16 = 0x14
2 通道 16 位浮点数
CU_RES_VIEW_FORMAT_FLOAT_4X16 = 0x15
4 通道 16 位浮点数
CU_RES_VIEW_FORMAT_FLOAT_1X32 = 0x16
1 通道 32 位浮点数
CU_RES_VIEW_FORMAT_FLOAT_2X32 = 0x17
2 通道 32 位浮点数
CU_RES_VIEW_FORMAT_FLOAT_4X32 = 0x18
4 通道 32 位浮点数
CU_RES_VIEW_FORMAT_UNSIGNED_BC1 = 0x19
块压缩 1
CU_RES_VIEW_FORMAT_UNSIGNED_BC2 = 0x1a
块压缩 2
CU_RES_VIEW_FORMAT_UNSIGNED_BC3 = 0x1b
块压缩 3
CU_RES_VIEW_FORMAT_UNSIGNED_BC4 = 0x1c
块压缩 4 无符号
CU_RES_VIEW_FORMAT_SIGNED_BC4 = 0x1d
块压缩 4 有符号
CU_RES_VIEW_FORMAT_UNSIGNED_BC5 = 0x1e
块压缩 5 无符号
CU_RES_VIEW_FORMAT_SIGNED_BC5 = 0x1f
块压缩 5 有符号
CU_RES_VIEW_FORMAT_UNSIGNED_BC6H = 0x20
块压缩 6 无符号半浮点
CU_RES_VIEW_FORMAT_SIGNED_BC6H = 0x21
块压缩 6 有符号半浮点
CU_RES_VIEW_FORMAT_UNSIGNED_BC7 = 0x22
块压缩 7
enum CUresourcetype

资源类型

CU_RESOURCE_TYPE_ARRAY = 0x00
数组资源
CU_RESOURCE_TYPE_MIPMAPPED_ARRAY = 0x01
Mipmapped 数组资源
CU_RESOURCE_TYPE_LINEAR = 0x02
线性资源
CU_RESOURCE_TYPE_PITCH2D = 0x03
Pitch 2D 资源
enum CUresult

错误代码

CUDA_SUCCESS = 0
API 调用无错误返回。对于查询调用,这也意味着被查询的操作已完成(参见 cuEventQuery()cuStreamQuery())。
CUDA_ERROR_INVALID_VALUE = 1
这表示传递给 API 调用的一个或多个参数不在可接受的值范围内。
CUDA_ERROR_OUT_OF_MEMORY = 2
API 调用失败,因为它无法分配足够的内存或其他资源来执行请求的操作。
CUDA_ERROR_NOT_INITIALIZED = 3
这表示 CUDA 驱动程序尚未通过 cuInit() 初始化,或者初始化失败。
CUDA_ERROR_DEINITIALIZED = 4
这表示 CUDA 驱动程序正在关闭过程中。
CUDA_ERROR_PROFILER_DISABLED = 5
这表示分析器未为此运行初始化。当应用程序使用外部分析工具(如 visual profiler)运行时,可能会发生这种情况。
CUDA_ERROR_PROFILER_NOT_INITIALIZED = 6
已弃用

自 CUDA 5.0 起,此错误返回已弃用。尝试通过 cuProfilerStartcuProfilerStop 启用/禁用分析而无需初始化不再是错误。

CUDA_ERROR_PROFILER_ALREADY_STARTED = 7
已弃用

自 CUDA 5.0 起,此错误返回已弃用。当分析已启用时,调用 cuProfilerStart() 不再是错误。

CUDA_ERROR_PROFILER_ALREADY_STOPPED = 8
已弃用

自 CUDA 5.0 起,此错误返回已弃用。当分析已禁用时,调用 cuProfilerStop() 不再是错误。

CUDA_ERROR_STUB_LIBRARY = 34
这表示应用程序加载的 CUDA 驱动程序是存根库。使用存根而不是加载真实驱动程序运行的应用程序将导致 CUDA API 返回此错误。
CUDA_ERROR_DEVICE_UNAVAILABLE = 46
这表示请求的 CUDA 设备当前不可用。设备通常由于使用 CU_COMPUTEMODE_EXCLUSIVE_PROCESSCU_COMPUTEMODE_PROHIBITED 而不可用。
CUDA_ERROR_NO_DEVICE = 100
这表示安装的 CUDA 驱动程序未检测到任何支持 CUDA 的设备。
CUDA_ERROR_INVALID_DEVICE = 101
这表示用户提供的设备序号与有效的 CUDA 设备不对应,或者请求的操作对指定的设备无效。
CUDA_ERROR_DEVICE_NOT_LICENSED = 102
此错误表示未应用 Grid 许可证。
CUDA_ERROR_INVALID_IMAGE = 200
这表示设备内核映像无效。这也可能表示 CUDA 模块无效。
CUDA_ERROR_INVALID_CONTEXT = 201
这最常表示当前线程没有绑定上下文。如果传递给 API 调用的上下文不是有效的句柄(例如,已对其调用 cuCtxDestroy() 的上下文),也可能返回此错误。如果用户混合使用不同的 API 版本(即 3010 上下文与 3020 API 调用),也可能返回此错误。有关更多详细信息,请参见 cuCtxGetApiVersion()。如果传递给 API 调用的绿色上下文未使用 cuCtxFromGreenCtx API 转换为 CUcontext,也可能返回此错误。
CUDA_ERROR_CONTEXT_ALREADY_CURRENT = 202
已弃用

自 CUDA 3.2 起,此错误返回已弃用。尝试通过 cuCtxPushCurrent() 推送活动上下文不再是错误。

这表示作为参数提供给 API 调用的上下文已是活动上下文。

CUDA_ERROR_MAP_FAILED = 205
这表示映射或注册操作失败。
CUDA_ERROR_UNMAP_FAILED = 206
这表示取消映射或取消注册操作失败。
CUDA_ERROR_ARRAY_IS_MAPPED = 207
这表示指定的数组当前已映射,因此无法销毁。
CUDA_ERROR_ALREADY_MAPPED = 208
这表示资源已被映射。
CUDA_ERROR_NO_BINARY_FOR_GPU = 209
这表示没有可用于设备的内核映像。当用户为特定的 CUDA 源文件指定代码生成选项,但不包括相应的设备配置时,可能会发生这种情况。
CUDA_ERROR_ALREADY_ACQUIRED = 210
这表示资源已被获取。
CUDA_ERROR_NOT_MAPPED = 211
这表示资源未映射。
CUDA_ERROR_NOT_MAPPED_AS_ARRAY = 212
这表示映射的资源不可用作数组访问。
CUDA_ERROR_NOT_MAPPED_AS_POINTER = 213
这表示映射的资源不可用作指针访问。
CUDA_ERROR_ECC_UNCORRECTABLE = 214
这表示在执行期间检测到无法纠正的 ECC 错误。
CUDA_ERROR_UNSUPPORTED_LIMIT = 215
这表示传递给 API 调用的 CUlimit 不受活动设备支持。
CUDA_ERROR_CONTEXT_ALREADY_IN_USE = 216
这表示传递给 API 调用的 CUcontext 只能一次绑定到一个 CPU 线程,但已绑定到一个 CPU 线程。
CUDA_ERROR_PEER_ACCESS_UNSUPPORTED = 217
这表示在给定设备之间不支持对等访问。
CUDA_ERROR_INVALID_PTX = 218
这表示 PTX JIT 编译失败。
CUDA_ERROR_INVALID_GRAPHICS_CONTEXT = 219
这表示 OpenGL 或 DirectX 上下文出错。
CUDA_ERROR_NVLINK_UNCORRECTABLE = 220
这表示在执行期间检测到无法纠正的 NVLink 错误。
CUDA_ERROR_JIT_COMPILER_NOT_FOUND = 221
这表示未找到 PTX JIT 编译器库。
CUDA_ERROR_UNSUPPORTED_PTX_VERSION = 222
这表示提供的 PTX 是使用不受支持的工具链编译的。
CUDA_ERROR_JIT_COMPILATION_DISABLED = 223
这表示 PTX JIT 编译已禁用。
CUDA_ERROR_UNSUPPORTED_EXEC_AFFINITY = 224
这表示传递给 API 调用的 CUexecAffinityType 不受活动设备支持。
CUDA_ERROR_UNSUPPORTED_DEVSIDE_SYNC = 225
这表示要由 PTX JIT 编译的代码包含对 cudaDeviceSynchronize 的不受支持的调用。
CUDA_ERROR_CONTAINED = 226
这表示设备上发生异常,该异常现在包含在 GPU 的错误包含功能中。常见原因包括:a. 某些类型的通过 nvlink 对等 GPU 内存的无效访问 b. 某些类别的硬件错误 这会使进程处于不一致的状态,并且任何进一步的 CUDA 工作都将返回相同的错误。要继续使用 CUDA,必须终止并重新启动进程。
CUDA_ERROR_INVALID_SOURCE = 300
这表示设备内核源无效。这包括在设备代码或用户错误中遇到的编译/链接器错误。
CUDA_ERROR_FILE_NOT_FOUND = 301
这表示未找到指定的文件。
CUDA_ERROR_SHARED_OBJECT_SYMBOL_NOT_FOUND = 302
这表示链接到共享对象的链接未能解析。
CUDA_ERROR_SHARED_OBJECT_INIT_FAILED = 303
这表示共享对象的初始化失败。
CUDA_ERROR_OPERATING_SYSTEM = 304
这表示操作系统调用失败。
CUDA_ERROR_INVALID_HANDLE = 400
这表示传递给 API 调用的资源句柄无效。资源句柄是不透明类型,例如 CUstreamCUevent
CUDA_ERROR_ILLEGAL_STATE = 401
这表示 API 调用所需的资源未处于执行请求操作的有效状态。
CUDA_ERROR_LOSSY_QUERY = 402
这表示尝试以会丢弃语义重要信息的方式内省对象。这要么是由于对象使用了比用于内省它的 API 版本更新的功能,要么是省略了可选的返回参数。
CUDA_ERROR_NOT_FOUND = 500
这表示未找到命名的符号。符号示例包括全局/常量变量名、驱动程序函数名、纹理名称和表面名称。
CUDA_ERROR_NOT_READY = 600
这表示先前发出的异步操作尚未完成。此结果实际上不是错误,但必须与 CUDA_SUCCESS(表示完成)区分指示。可能返回此值的调用包括 cuEventQuery()cuStreamQuery()
CUDA_ERROR_ILLEGAL_ADDRESS = 700
在执行内核时,设备在无效的内存地址上遇到加载或存储指令。这会使进程处于不一致的状态,并且任何进一步的 CUDA 工作都将返回相同的错误。要继续使用 CUDA,必须终止并重新启动进程。
CUDA_ERROR_LAUNCH_OUT_OF_RESOURCES = 701
这表示启动未发生,因为没有足够的可用资源。此错误通常表示用户尝试向设备内核传递过多参数,或者内核启动为内核的寄存器计数指定了过多的线程。传递错误大小的参数(即,当预期为 32 位整数时传递 64 位指针)等同于传递过多参数,也可能导致此错误。
CUDA_ERROR_LAUNCH_TIMEOUT = 702
这表示设备内核执行时间过长。这仅在启用超时的情况下才会发生 - 有关更多信息,请参阅设备属性 CU_DEVICE_ATTRIBUTE_KERNEL_EXEC_TIMEOUT。这会使进程处于不一致状态,任何进一步的 CUDA 工作都将返回相同的错误。要继续使用 CUDA,必须终止并重新启动该进程。
CUDA_ERROR_LAUNCH_INCOMPATIBLE_TEXTURING = 703
此错误表示内核启动使用了不兼容的纹理模式。
CUDA_ERROR_PEER_ACCESS_ALREADY_ENABLED = 704
此错误表示对 cuCtxEnablePeerAccess() 的调用尝试重新启用对已启用对等访问的上下文的对等访问。
CUDA_ERROR_PEER_ACCESS_NOT_ENABLED = 705
此错误表示 cuCtxDisablePeerAccess() 尝试禁用尚未通过 cuCtxEnablePeerAccess() 启用的对等访问。
CUDA_ERROR_PRIMARY_CONTEXT_ACTIVE = 708
此错误表示指定设备的主上下文已初始化。
CUDA_ERROR_CONTEXT_IS_DESTROYED = 709
此错误表示调用线程的当前上下文已使用 cuCtxDestroy 销毁,或者是尚未初始化的主上下文。
CUDA_ERROR_ASSERT = 710
内核执行期间触发了设备端断言。上下文无法再使用,必须销毁。此上下文中所有现有的设备内存分配均无效,如果程序要继续使用 CUDA,则必须重新构建。
CUDA_ERROR_TOO_MANY_PEERS = 711
此错误表示启用对等访问所需的硬件资源已为一个或多个传递给 cuCtxEnablePeerAccess() 的设备耗尽。
CUDA_ERROR_HOST_MEMORY_ALREADY_REGISTERED = 712
此错误表示传递给 cuMemHostRegister() 的内存范围已注册。
CUDA_ERROR_HOST_MEMORY_NOT_REGISTERED = 713
此错误表示传递给 cuMemHostUnregister() 的指针不对应于任何当前注册的内存区域。
CUDA_ERROR_HARDWARE_STACK_ERROR = 714
在执行内核时,设备遇到堆栈错误。这可能是由于堆栈损坏或超出堆栈大小限制造成的。这会使进程处于不一致状态,任何进一步的 CUDA 工作都将返回相同的错误。要继续使用 CUDA,必须终止并重新启动该进程。
CUDA_ERROR_ILLEGAL_INSTRUCTION = 715
在执行内核时,设备遇到非法指令。这会使进程处于不一致状态,任何进一步的 CUDA 工作都将返回相同的错误。要继续使用 CUDA,必须终止并重新启动该进程。
CUDA_ERROR_MISALIGNED_ADDRESS = 716
在执行内核时,设备在未对齐的内存地址上遇到加载或存储指令。这会使进程处于不一致状态,任何进一步的 CUDA 工作都将返回相同的错误。要继续使用 CUDA,必须终止并重新启动该进程。
CUDA_ERROR_INVALID_ADDRESS_SPACE = 717
在执行内核时,设备遇到一个只能在特定地址空间(全局、共享或本地)中的内存位置上操作的指令,但提供的内存地址不属于允许的地址空间。这会使进程处于不一致状态,任何进一步的 CUDA 工作都将返回相同的错误。要继续使用 CUDA,必须终止并重新启动该进程。
CUDA_ERROR_INVALID_PC = 718
在执行内核时,设备程序计数器环绕了其地址空间。这会使进程处于不一致状态,任何进一步的 CUDA 工作都将返回相同的错误。要继续使用 CUDA,必须终止并重新启动该进程。
CUDA_ERROR_LAUNCH_FAILED = 719
在设备上执行内核时发生异常。常见原因包括取消引用无效的设备指针和访问越界的共享内存。不太常见的情况可能是特定于系统的 - 有关这些情况的更多信息,请参见特定于系统的用户指南。这会使进程处于不一致状态,任何进一步的 CUDA 工作都将返回相同的错误。要继续使用 CUDA,必须终止并重新启动该进程。
CUDA_ERROR_COOPERATIVE_LAUNCH_TOO_LARGE = 720
此错误表示通过 cuLaunchCooperativeKernelcuLaunchCooperativeKernelMultiDevice 启动的内核的每个网格启动的块数,超过了 cuOccupancyMaxActiveBlocksPerMultiprocessorcuOccupancyMaxActiveBlocksPerMultiprocessorWithFlags 允许的最大块数,该最大块数乘以设备属性 CU_DEVICE_ATTRIBUTE_MULTIPROCESSOR_COUNT 指定的多处理器数量。
CUDA_ERROR_TENSOR_MEMORY_LEAK = 721
在使用张量内存退出内核时,设备上发生异常:张量内存未完全释放。这会使进程处于不一致状态,任何进一步的 CUDA 工作都将返回相同的错误。要继续使用 CUDA,必须终止并重新启动该进程。
CUDA_ERROR_NOT_PERMITTED = 800
此错误表示尝试的操作是不允许的。
CUDA_ERROR_NOT_SUPPORTED = 801
此错误表示当前系统或设备不支持尝试的操作。
CUDA_ERROR_SYSTEM_NOT_READY = 802
此错误表示系统尚未准备好开始任何 CUDA 工作。要继续使用 CUDA,请验证系统配置是否处于有效状态,并且所有必需的驱动程序守护程序都在积极运行。有关此错误的更多信息,请参见特定于系统的用户指南。
CUDA_ERROR_SYSTEM_DRIVER_MISMATCH = 803
此错误表示显示驱动程序版本与 CUDA 驱动程序版本之间存在不匹配。有关支持的版本,请参阅兼容性文档。
CUDA_ERROR_COMPAT_NOT_SUPPORTED_ON_DEVICE = 804
此错误表示系统已升级为向前兼容模式运行,但 CUDA 检测到的可见硬件不支持此配置。有关受支持的硬件矩阵,请参阅兼容性文档,或确保在初始化期间仅通过 CUDA_VISIBLE_DEVICES 环境变量使受支持的硬件可见。
CUDA_ERROR_MPS_CONNECTION_FAILED = 805
此错误表示 MPS 客户端无法连接到 MPS 控制守护程序或 MPS 服务器。
CUDA_ERROR_MPS_RPC_FAILURE = 806
此错误表示 MPS 服务器和 MPS 客户端之间的远程过程调用失败。
CUDA_ERROR_MPS_SERVER_NOT_READY = 807
此错误表示 MPS 服务器尚未准备好接受新的 MPS 客户端请求。当 MPS 服务器正在从致命故障中恢复时,可能会返回此错误。
CUDA_ERROR_MPS_MAX_CLIENTS_REACHED = 808
此错误表示创建 MPS 客户端所需的硬件资源已耗尽。
CUDA_ERROR_MPS_MAX_CONNECTIONS_REACHED = 809
此错误表示支持设备连接所需的硬件资源已耗尽。
CUDA_ERROR_MPS_CLIENT_TERMINATED = 810
此错误表示 MPS 客户端已被服务器终止。要继续使用 CUDA,必须终止并重新启动该进程。
CUDA_ERROR_CDP_NOT_SUPPORTED = 811
此错误表示模块正在使用 CUDA 动态并行,但当前配置(如 MPS)不支持它。
CUDA_ERROR_CDP_VERSION_MISMATCH = 812
此错误表示模块包含不同版本的 CUDA 动态并行之间的不受支持的交互。
CUDA_ERROR_STREAM_CAPTURE_UNSUPPORTED = 900
此错误表示当流正在捕获时,不允许执行该操作。
CUDA_ERROR_STREAM_CAPTURE_INVALIDATED = 901
此错误表示由于之前的错误,流上的当前捕获序列已失效。
CUDA_ERROR_STREAM_CAPTURE_MERGE = 902
此错误表示该操作将导致两个独立的捕获序列合并。
CUDA_ERROR_STREAM_CAPTURE_UNMATCHED = 903
此错误表示捕获未在此流中启动。
CUDA_ERROR_STREAM_CAPTURE_UNJOINED = 904
此错误表示捕获序列包含一个未连接到主流的分支。
CUDA_ERROR_STREAM_CAPTURE_ISOLATION = 905
此错误表示将创建一个跨越捕获序列边界的依赖项。仅允许隐式流内排序依赖项跨越边界。
CUDA_ERROR_STREAM_CAPTURE_IMPLICIT = 906
此错误表示不允许从 cudaStreamLegacy 隐式依赖于当前捕获序列。
CUDA_ERROR_CAPTURED_EVENT = 907
此错误表示不允许对上次在捕获流中记录的事件执行该操作。
CUDA_ERROR_STREAM_CAPTURE_WRONG_THREAD = 908
未使用 CU_STREAM_CAPTURE_MODE_RELAXED 参数启动的流捕获序列 cuStreamBeginCapture 被传递给不同线程中的 cuStreamEndCapture
CUDA_ERROR_TIMEOUT = 909
此错误表示等待操作指定的超时时间已过。
CUDA_ERROR_GRAPH_EXEC_UPDATE_FAILURE = 910
此错误表示图形更新未执行,因为它包含违反特定于实例化的图形更新的约束的更改。
CUDA_ERROR_EXTERNAL_DEVICE = 911
这表示 CUDA 外部的设备中发生了异步错误。如果 CUDA 在使用共享数据之前正在等待外部设备的信号,则外部设备发出错误信号,指示数据对使用无效。这会使进程处于不一致状态,任何进一步的 CUDA 工作都将返回相同的错误。要继续使用 CUDA,必须终止并重新启动该进程。
CUDA_ERROR_INVALID_CLUSTER_SIZE = 912
指示由于集群配置错误而导致的内核启动错误。
CUDA_ERROR_FUNCTION_NOT_LOADED = 913
指示在调用需要已加载函数的 API 时,函数句柄未加载。
CUDA_ERROR_INVALID_RESOURCE_TYPE = 914
此错误表示传入的一个或多个资源对于该操作而言不是有效的资源类型。
CUDA_ERROR_INVALID_RESOURCE_CONFIGURATION = 915
此错误表示一个或多个资源对于该操作而言不足或不适用。
CUDA_ERROR_KEY_ROTATION = 916
此错误表示在密钥轮换序列期间发生错误。
CUDA_ERROR_UNKNOWN = 999
这表示发生了未知的内部错误。
enum CUshared_carveout

共享内存划分配置。这些可以传递给 cuFuncSetAttributecuKernelSetAttribute

CU_SHAREDMEM_CARVEOUT_DEFAULT = -1
无共享内存或 L1 缓存偏好(默认)
CU_SHAREDMEM_CARVEOUT_MAX_SHARED = 100
优先使用最大可用共享内存,最小 L1 缓存
CU_SHAREDMEM_CARVEOUT_MAX_L1 = 0
优先使用最大可用 L1 缓存,最小共享内存
enum CUsharedconfig
已弃用

共享内存配置
CU_SHARED_MEM_CONFIG_DEFAULT_BANK_SIZE = 0x00
设置默认共享内存 Bank 大小
CU_SHARED_MEM_CONFIG_FOUR_BYTE_BANK_SIZE = 0x01
将共享内存 Bank 宽度设置为四个字节
CU_SHARED_MEM_CONFIG_EIGHT_BYTE_BANK_SIZE = 0x02
将共享内存 Bank 宽度设置为八个字节
enum CUstreamBatchMemOpType

用于 cuStreamBatchMemOp 的操作

CU_STREAM_MEM_OP_WAIT_VALUE_32 = 1
表示 cuStreamWaitValue32 操作
CU_STREAM_MEM_OP_WRITE_VALUE_32 = 2
表示 cuStreamWriteValue32 操作
CU_STREAM_MEM_OP_WAIT_VALUE_64 = 4
表示 cuStreamWaitValue64 操作
CU_STREAM_MEM_OP_WRITE_VALUE_64 = 5
表示 cuStreamWriteValue64 操作
CU_STREAM_MEM_OP_BARRIER = 6
插入指定类型的内存屏障
CU_STREAM_MEM_OP_FLUSH_REMOTE_WRITES = 3
这与 CU_STREAM_WAIT_VALUE_FLUSH 具有相同的效果,但作为独立操作。
enum CUstreamCaptureMode

流捕获线程交互的可能模式。 有关更多详细信息,请参阅 cuStreamBeginCapturecuThreadExchangeStreamCaptureMode

CU_STREAM_CAPTURE_MODE_GLOBAL = 0
CU_STREAM_CAPTURE_MODE_THREAD_LOCAL = 1
CU_STREAM_CAPTURE_MODE_RELAXED = 2
enum CUstreamCaptureStatus

cuStreamIsCapturing 返回的可能的流捕获状态

CU_STREAM_CAPTURE_STATUS_NONE = 0
流未捕获
CU_STREAM_CAPTURE_STATUS_ACTIVE = 1
流正在主动捕获
CU_STREAM_CAPTURE_STATUS_INVALIDATED = 2
流是已失效但未终止的捕获序列的一部分
enum CUstreamMemoryBarrier_flags

cuStreamMemoryBarrier 的标志

CU_STREAM_MEMORY_BARRIER_TYPE_SYS = 0x0
系统范围的内存屏障。
CU_STREAM_MEMORY_BARRIER_TYPE_GPU = 0x1
将内存屏障范围限制为 GPU。
enum CUstreamUpdateCaptureDependencies_flags
CU_STREAM_ADD_CAPTURE_DEPENDENCIES = 0x0
将新节点添加到依赖项集
CU_STREAM_SET_CAPTURE_DEPENDENCIES = 0x1
用新节点替换依赖项集
enum CUstreamWaitValue_flags
CU_STREAM_WAIT_VALUE_GEQ = 0x0
等待直到 (int32_t)(*addr - value) >= 0(或 64 位值的 int64_t)。 请注意,这是一个循环比较,它忽略环绕。(默认行为。)
CU_STREAM_WAIT_VALUE_EQ = 0x1
等待直到 *addr == value。
CU_STREAM_WAIT_VALUE_AND = 0x2
等待直到 (*addr & value) != 0。
CU_STREAM_WAIT_VALUE_NOR = 0x3
等待直到 ~(*addr | value) != 0。可以使用 cuDeviceGetAttribute()CU_DEVICE_ATTRIBUTE_CAN_USE_STREAM_WAIT_VALUE_NOR 查询对此操作的支持。
CU_STREAM_WAIT_VALUE_FLUSH = 1<<30
在等待操作之后刷新未完成的远程写入。这意味着,如果保证远程写入操作在满足等待之前已到达设备,则保证下游设备工作可见该写入。设备被允许在内部重新排序远程写入。例如,如果两个远程写入以定义的顺序到达,等待由第二个写入满足,并且下游工作需要观察第一个写入,则需要此标志。对此操作的支持仅限于选定的平台,并且可以使用 CU_DEVICE_ATTRIBUTE_CAN_FLUSH_REMOTE_WRITES 查询。
enum CUstreamWriteValue_flags

用于 cuStreamWriteValue32 的标志

CU_STREAM_WRITE_VALUE_DEFAULT = 0x0
默认行为
CU_STREAM_WRITE_VALUE_NO_MEMORY_BARRIER = 0x1
允许将写入与在其之前发出的写入重新排序,作为性能优化。通常,cuStreamWriteValue32 将在写入之前提供内存栅栏,该栅栏具有类似于 __threadfence_system() 的语义,但范围限定为流而不是 CUDA 线程。v2 API 中不支持此标志。
enum CUstream_flags

流创建标志

CU_STREAM_DEFAULT = 0x0
默认流标志
CU_STREAM_NON_BLOCKING = 0x1
流不与流 0(NULL 流)同步
enum CUtensorMapDataType

张量映射数据类型

CU_TENSOR_MAP_DATA_TYPE_UINT8 = 0
CU_TENSOR_MAP_DATA_TYPE_UINT16
CU_TENSOR_MAP_DATA_TYPE_UINT32
CU_TENSOR_MAP_DATA_TYPE_INT32
CU_TENSOR_MAP_DATA_TYPE_UINT64
CU_TENSOR_MAP_DATA_TYPE_INT64
CU_TENSOR_MAP_DATA_TYPE_FLOAT16
CU_TENSOR_MAP_DATA_TYPE_FLOAT32
CU_TENSOR_MAP_DATA_TYPE_FLOAT64
CU_TENSOR_MAP_DATA_TYPE_BFLOAT16
CU_TENSOR_MAP_DATA_TYPE_FLOAT32_FTZ
CU_TENSOR_MAP_DATA_TYPE_TFLOAT32
CU_TENSOR_MAP_DATA_TYPE_TFLOAT32_FTZ
CU_TENSOR_MAP_DATA_TYPE_16U4_ALIGN8B
CU_TENSOR_MAP_DATA_TYPE_16U4_ALIGN16B
CU_TENSOR_MAP_DATA_TYPE_16U6_ALIGN16B
enum CUtensorMapFloatOOBfill

张量映射越界填充类型

CU_TENSOR_MAP_FLOAT_OOB_FILL_NONE = 0
CU_TENSOR_MAP_FLOAT_OOB_FILL_NAN_REQUEST_ZERO_FMA
enum CUtensorMapIm2ColWideMode

张量映射 Im2Col 宽模式

CU_TENSOR_MAP_IM2COL_WIDE_MODE_W = 0
CU_TENSOR_MAP_IM2COL_WIDE_MODE_W128
enum CUtensorMapInterleave

张量映射交错布局类型

CU_TENSOR_MAP_INTERLEAVE_NONE = 0
CU_TENSOR_MAP_INTERLEAVE_16B
CU_TENSOR_MAP_INTERLEAVE_32B
enum CUtensorMapL2promotion

张量映射 L2 提升类型

CU_TENSOR_MAP_L2_PROMOTION_NONE = 0
CU_TENSOR_MAP_L2_PROMOTION_L2_64B
CU_TENSOR_MAP_L2_PROMOTION_L2_128B
CU_TENSOR_MAP_L2_PROMOTION_L2_256B
enum CUtensorMapSwizzle

共享内存 Bank 的张量映射交错模式

CU_TENSOR_MAP_SWIZZLE_NONE = 0
CU_TENSOR_MAP_SWIZZLE_32B
CU_TENSOR_MAP_SWIZZLE_64B
CU_TENSOR_MAP_SWIZZLE_128B
CU_TENSOR_MAP_SWIZZLE_128B_ATOM_32B
CU_TENSOR_MAP_SWIZZLE_128B_ATOM_32B_FLIP_8B
CU_TENSOR_MAP_SWIZZLE_128B_ATOM_64B
enum CUuserObjectRetain_flags

用于为图形保留用户对象引用的标志

CU_GRAPH_USER_OBJECT_MOVE = 1
从调用者转移引用,而不是创建新引用。
enum CUuserObject_flags

用于图形的用户对象的标志

CU_USER_OBJECT_NO_DESTRUCTOR_SYNC = 1
指示析构函数执行不由任何 CUDA 句柄同步。
enum cl_context_flags

NVCL 上下文调度标志

NVCL_CTX_SCHED_AUTO = 0x00
自动调度
NVCL_CTX_SCHED_SPIN = 0x01
设置自旋作为默认调度
NVCL_CTX_SCHED_YIELD = 0x02
设置让步作为默认调度
NVCL_CTX_SCHED_BLOCKING_SYNC = 0x04
设置阻塞同步作为默认调度
enum cl_event_flags

NVCL 事件调度标志

NVCL_EVENT_SCHED_AUTO = 0x00
自动调度
NVCL_EVENT_SCHED_SPIN = 0x01
设置自旋作为默认调度
NVCL_EVENT_SCHED_YIELD = 0x02
设置让步作为默认调度
NVCL_EVENT_SCHED_BLOCKING_SYNC = 0x04
设置阻塞同步作为默认调度