6.5. 设备管理
本节介绍底层CUDA驱动应用程序编程接口的设备管理功能。
Functions
- CUresult cuDeviceGet ( CUdevice* device, int ordinal )
- Returns a handle to a compute device.
- CUresult cuDeviceGetAttribute ( int* pi, CUdevice_attribute attrib, CUdevice dev )
- Returns information about the device.
- CUresult cuDeviceGetCount ( int* count )
- Returns the number of compute-capable devices.
- CUresult cuDeviceGetDefaultMemPool ( CUmemoryPool* pool_out, CUdevice dev )
- Returns the default mempool of a device.
- CUresult cuDeviceGetExecAffinitySupport ( int* pi, CUexecAffinityType type, CUdevice dev )
- Returns information about the execution affinity support of the device.
- CUresult cuDeviceGetLuid ( char* luid, unsigned int* deviceNodeMask, CUdevice dev )
- Return an LUID and device node mask for the device.
- CUresult cuDeviceGetMemPool ( CUmemoryPool* pool, CUdevice dev )
- Gets the current mempool for a device.
- CUresult cuDeviceGetName ( char* name, int len, CUdevice dev )
- Returns an identifier string for the device.
- CUresult cuDeviceGetNvSciSyncAttributes ( void* nvSciSyncAttrList, CUdevice dev, int flags )
- Return NvSciSync attributes that this device can support.
- CUresult cuDeviceGetTexture1DLinearMaxWidth ( size_t* maxWidthInElements, CUarray_format format, unsigned numChannels, CUdevice dev )
- Returns the maximum number of elements allocatable in a 1D linear texture for a given texture element size.
- CUresult cuDeviceGetUuid ( CUuuid* uuid, CUdevice dev )
- Return an UUID for the device.
- CUresult cuDeviceGetUuid_v2 ( CUuuid* uuid, CUdevice dev )
- Return an UUID for the device (11.4+).
- CUresult cuDeviceSetMemPool ( CUdevice dev, CUmemoryPool pool )
- Sets the current memory pool of a device.
- CUresult cuDeviceTotalMem ( size_t* bytes, CUdevice dev )
- Returns the total amount of memory on the device.
- CUresult cuFlushGPUDirectRDMAWrites ( CUflushGPUDirectRDMAWritesTarget target, CUflushGPUDirectRDMAWritesScope scope )
- Blocks until remote writes are visible to the specified scope.
Functions
- CUresult cuDeviceGet ( CUdevice* device, int ordinal )
-
返回计算设备的句柄。
参数
- device
- - Returned device handle
- ordinal
- - Device number to get handle for
返回
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_CONTEXT, CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_INVALID_DEVICE
描述
在给定范围[0, cuDeviceGetCount()-1]内的序号时,返回*device中的设备句柄。
Note:请注意,此函数也可能返回之前异步启动的错误代码。
另请参阅:
cuDeviceGetAttribute, cuDeviceGetCount, cuDeviceGetName, cuDeviceGetUuid, cuDeviceGetLuid, cuDeviceTotalMem, cuDeviceGetExecAffinitySupport
- CUresult cuDeviceGetAttribute ( int* pi, CUdevice_attribute attrib, CUdevice dev )
-
返回有关设备的信息。
参数
- pi
- - Returned device attribute value
- attrib
- - Device attribute to query
- dev
- - Device handle
返回
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_CONTEXT, CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_INVALID_DEVICE
描述
返回设备dev上属性attrib的整数值到*pi中。支持的属性包括:
-
CU_DEVICE_ATTRIBUTE_MAX_THREADS_PER_BLOCK: 每个块的最大线程数;
-
CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_X: 块的最大x维度
-
CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_Y: 块的最大y维度
-
CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_Z: 块的最大z维度
-
CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_X: 网格的最大x维度
-
CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_Y: 网格的最大y维度
-
CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_Z: 网格的最大z维度
-
CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_BLOCK: 每个线程块可用的最大共享内存量(以字节为单位)
-
CU_DEVICE_ATTRIBUTE_TOTAL_CONSTANT_MEMORY: 设备上可用于CUDA C内核中__constant__变量的内存大小(以字节为单位)
-
CU_DEVICE_ATTRIBUTE_WARP_SIZE: 线程束大小(以线程数为单位)
-
CU_DEVICE_ATTRIBUTE_MAX_PITCH: 内存复制函数允许的最大间距(以字节为单位),这些函数涉及通过cuMemAllocPitch()分配的内存区域
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_LINEAR_WIDTH: 绑定到线性内存的一维纹理的最大宽度
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_MIPMAPPED_WIDTH: 最大mipmapped一维纹理宽度
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LINEAR_WIDTH: 绑定到线性内存的2D纹理的最大宽度
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LINEAR_HEIGHT: 绑定到线性内存的2D纹理的最大高度
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LINEAR_PITCH: 绑定到线性内存的2D纹理的最大间距(以字节为单位)
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_MIPMAPPED_WIDTH: 最大支持mipmapped的2D纹理宽度
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_MIPMAPPED_HEIGHT: 最大mipmapped二维纹理高度
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_WIDTH_ALTERNATE: 替代最大3D纹理宽度,如果不支持替代最大3D纹理尺寸则为0
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_HEIGHT_ALTERNATE: 替代最大3D纹理高度,如果不支持替代最大3D纹理尺寸则为0
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_DEPTH_ALTERNATE: 替代最大3D纹理深度,如果不支持替代最大3D纹理尺寸则为0
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURECUBEMAP_WIDTH: 最大立方体贴图纹理宽度或高度
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_LAYERED_WIDTH: 最大一维分层纹理宽度
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_LAYERED_LAYERS: 一维分层纹理中的最大层数
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_WIDTH: 最大二维分层纹理宽度
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_HEIGHT: 最大二维分层纹理高度
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_LAYERS: 二维分层纹理中的最大层数
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURECUBEMAP_LAYERED_WIDTH: 最大立方体贴图分层纹理宽度或高度
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURECUBEMAP_LAYERED_LAYERS: 立方体贴图分层纹理中的最大层数
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE1D_LAYERED_WIDTH: 最大一维分层表面宽度
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE1D_LAYERED_LAYERS: 一维分层表面中的最大层数
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_LAYERED_WIDTH: 最大二维分层表面宽度
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_LAYERED_HEIGHT: 最大二维分层表面高度
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_LAYERED_LAYERS: 二维分层表面中的最大层数
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACECUBEMAP_WIDTH: 最大立方体贴图表面宽度
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACECUBEMAP_LAYERED_WIDTH: 最大立方体贴图分层表面宽度
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACECUBEMAP_LAYERED_LAYERS: 立方体贴图分层表面中的最大层数
-
CU_DEVICE_ATTRIBUTE_MAX_REGISTERS_PER_BLOCK: 每个线程块可用的32位寄存器最大数量
-
CU_DEVICE_ATTRIBUTE_CLOCK_RATE: 典型时钟频率(单位:千赫兹)
-
CU_DEVICE_ATTRIBUTE_TEXTURE_ALIGNMENT: 对齐要求;纹理基地址与textureAlign字节对齐时,纹理获取操作无需应用偏移量
-
CU_DEVICE_ATTRIBUTE_TEXTURE_PITCH_ALIGNMENT: 绑定到倾斜内存的2D纹理引用所需的间距对齐要求
-
CU_DEVICE_ATTRIBUTE_GPU_OVERLAP: 如果设备能在执行内核时同时进行主机与设备间的内存拷贝则返回1,否则返回0
-
CU_DEVICE_ATTRIBUTE_MULTIPROCESSOR_COUNT: 设备上的多处理器数量
-
CU_DEVICE_ATTRIBUTE_KERNEL_EXEC_TIMEOUT: 如果设备上执行的内核有运行时间限制则返回1,否则返回0
-
CU_DEVICE_ATTRIBUTE_INTEGRATED: 如果设备与内存子系统集成则为1,否则为0
-
CU_DEVICE_ATTRIBUTE_CAN_MAP_HOST_MEMORY: 如果设备可以将主机内存映射到CUDA地址空间则为1,否则为0
-
CU_DEVICE_ATTRIBUTE_COMPUTE_MODE: Compute mode that device is currently in. Available modes are as follows:
-
CU_COMPUTEMODE_DEFAULT: 默认模式 - 设备不受限制,可以同时存在多个CUDA上下文。
-
CU_COMPUTEMODE_PROHIBITED: 计算禁止模式 - 该设备被禁止创建新的CUDA上下文。
-
CU_COMPUTEMODE_EXCLUSIVE_PROCESS: 计算独占进程模式 - 设备同一时间只能被单个进程使用一个上下文。
-
-
CU_DEVICE_ATTRIBUTE_CONCURRENT_KERNELS: 如果设备支持在同一上下文中同时执行多个内核,则值为1,否则为0。不能保证多个内核会同时驻留在设备上,因此不应依赖此功能来确保正确性。
-
CU_DEVICE_ATTRIBUTE_ECC_ENABLED: 如果设备启用了错误校正功能则为1,如果设备禁用或未支持错误校正则为0
-
CU_DEVICE_ATTRIBUTE_PCI_BUS_ID: 设备的PCI总线标识符
-
CU_DEVICE_ATTRIBUTE_PCI_DEVICE_ID: 设备的PCI设备标识符(也称为插槽)
-
CU_DEVICE_ATTRIBUTE_PCI_DOMAIN_ID: 设备的PCI域标识符
-
CU_DEVICE_ATTRIBUTE_TCC_DRIVER: 如果设备使用TCC驱动则返回1。TCC驱动仅适用于运行Windows Vista或更高版本的Tesla硬件
-
CU_DEVICE_ATTRIBUTE_MEMORY_CLOCK_RATE: 内存峰值时钟频率(单位:千赫兹)
-
CU_DEVICE_ATTRIBUTE_GLOBAL_MEMORY_BUS_WIDTH: 全局内存总线宽度(以位为单位)
-
CU_DEVICE_ATTRIBUTE_L2_CACHE_SIZE: L2缓存大小(以字节为单位)。如果设备没有L2缓存则为0
-
CU_DEVICE_ATTRIBUTE_MAX_THREADS_PER_MULTIPROCESSOR: 每个多处理器最大常驻线程数
-
CU_DEVICE_ATTRIBUTE_UNIFIED_ADDRESSING: 如果设备与主机共享统一地址空间则为1,否则为0
-
CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MINOR: 次要计算能力版本号
-
CU_DEVICE_ATTRIBUTE_GLOBAL_L1_CACHE_SUPPORTED: 如果设备支持在L1缓存中缓存全局变量则为1,如果不支持则为0
-
CU_DEVICE_ATTRIBUTE_LOCAL_L1_CACHE_SUPPORTED: 值为1表示设备支持将局部变量缓存至L1缓存,值为0表示设备不支持将局部变量缓存至L1缓存
-
CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_MULTIPROCESSOR: 每个多处理器可用的最大共享内存量(以字节为单位);该内存量由同时驻留在多处理器上的所有线程块共享
-
CU_DEVICE_ATTRIBUTE_MAX_REGISTERS_PER_MULTIPROCESSOR: 每个多处理器可用的32位寄存器最大数量;该数量由同时驻留在多处理器上的所有线程块共享
-
CU_DEVICE_ATTRIBUTE_MANAGED_MEMORY: 如果设备在当前系统支持分配托管内存则为1,如果设备在当前系统不支持分配托管内存则为0。
-
CU_DEVICE_ATTRIBUTE_MULTI_GPU_BOARD: 如果设备位于多GPU主板上则为1,否则为0。
-
CU_DEVICE_ATTRIBUTE_MULTI_GPU_BOARD_GROUP_ID: 同一主板关联设备组的唯一标识符。同一多GPU主板上的设备将共享相同的标识符。
-
CU_DEVICE_ATTRIBUTE_HOST_NATIVE_ATOMIC_SUPPORTED: 如果设备与主机之间的链接支持原生原子操作,则返回1。
-
CU_DEVICE_ATTRIBUTE_SINGLE_TO_DOUBLE_PRECISION_PERF_RATIO: 单精度性能(每秒浮点运算次数)与双精度性能的比率。
-
CU_DEVICE_ATTRIBUTE_PAGEABLE_MEMORY_ACCESS: 设备支持无需调用cudaHostRegister即可一致访问可分页内存。
-
CU_DEVICE_ATTRIBUTE_CONCURRENT_MANAGED_ACCESS: 该设备可以与CPU同时一致地访问托管内存。
-
CU_DEVICE_ATTRIBUTE_CAN_USE_HOST_POINTER_FOR_REGISTERED_MEM: 设备能够以与CPU相同的虚拟地址访问主机注册内存。
-
CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_BLOCK_OPTIN: 该设备支持的每块最大共享内存大小。这是在使用cuFuncSetAttribute()或cuKernelSetAttribute()调用时可选择设置的最大值。更多详情请参阅CU_FUNC_ATTRIBUTE_MAX_DYNAMIC_SHARED_SIZE_BYTES
-
CU_DEVICE_ATTRIBUTE_PAGEABLE_MEMORY_ACCESS_USES_HOST_PAGE_TABLES: 设备通过主机页表访问可分页内存。
-
CU_DEVICE_ATTRIBUTE_DIRECT_MANAGED_MEM_ACCESS_FROM_HOST: 主机可以直接访问设备上的托管内存而无需迁移。
-
CU_DEVICE_ATTRIBUTE_VIRTUAL_MEMORY_MANAGEMENT_SUPPORTED: 设备支持虚拟内存管理API,如cuMemAddressReserve、cuMemCreate、cuMemMap及相关API
-
CU_DEVICE_ATTRIBUTE_HANDLE_TYPE_POSIX_FILE_DESCRIPTOR_SUPPORTED: 如果通过cuMemCreate请求,设备支持使用cuMemExportToShareableHandle将内存导出到posix文件描述符
-
CU_DEVICE_ATTRIBUTE_HANDLE_TYPE_WIN32_HANDLE_SUPPORTED: 如果通过cuMemCreate请求,设备支持使用cuMemExportToShareableHandle将内存导出到Win32 NT句柄
-
CU_DEVICE_ATTRIBUTE_HANDLE_TYPE_WIN32_KMT_HANDLE_SUPPORTED: 如果通过cuMemCreate请求,设备支持使用cuMemExportToShareableHandle将内存导出为Win32 KMT句柄
-
CU_DEVICE_ATTRIBUTE_MAX_BLOCKS_PER_MULTIPROCESSOR: 单个多处理器上可驻留的最大线程块数量
-
CU_DEVICE_ATTRIBUTE_GENERIC_COMPRESSION_SUPPORTED: 设备支持通过cuMemCreate进行可压缩内存分配
-
CU_DEVICE_ATTRIBUTE_MAX_PERSISTING_L2_CACHE_SIZE: 最大L2持久化缓存行容量设置(单位:字节)
-
CU_DEVICE_ATTRIBUTE_MAX_ACCESS_POLICY_WINDOW_SIZE: CUaccessPolicyWindow::num_bytes的最大值
-
CU_DEVICE_ATTRIBUTE_GPU_DIRECT_RDMA_WITH_CUDA_VMM_SUPPORTED: 设备支持通过cuMemCreate指定GPUDirect RDMA标志。
-
CU_DEVICE_ATTRIBUTE_RESERVED_SHARED_MEMORY_PER_BLOCK: CUDA驱动为每个块保留的共享内存大小(以字节为单位)
-
CU_DEVICE_ATTRIBUTE_SPARSE_CUDA_ARRAY_SUPPORTED: 设备支持稀疏CUDA数组和稀疏CUDA mipmapped数组。
-
CU_DEVICE_ATTRIBUTE_READ_ONLY_HOST_REGISTER_SUPPORTED: 设备支持使用cuMemHostRegister标志CU_MEMHOSTERGISTER_READ_ONLY来注册必须映射为GPU只读的内存
-
CU_DEVICE_ATTRIBUTE_MEMORY_POOLS_SUPPORTED: 设备支持使用cuMemAllocAsync和cuMemPool系列API
-
CU_DEVICE_ATTRIBUTE_GPU_DIRECT_RDMA_SUPPORTED: 设备支持GPUDirect RDMA API,例如nvidia_p2p_get_pages(更多信息请参阅https://docs.nvidia.com/cuda/gpudirect-rdma)
-
CU_DEVICE_ATTRIBUTE_GPU_DIRECT_RDMA_FLUSH_WRITES_OPTIONS: 返回的属性应被解释为位掩码,其中各个位由CUflushGPUDirectRDMAWritesOptions枚举描述
-
CU_DEVICE_ATTRIBUTE_GPU_DIRECT_RDMA_WRITES_ORDERING: 针对设备的GPUDirect RDMA写入操作,在返回属性所指示的范围内,不需要为消费者执行刷新操作。 此处返回的数值含义请参阅CUGPUDirectRDMAWritesOrdering。
-
CU_DEVICE_ATTRIBUTE_MEMPOOL_SUPPORTED_HANDLE_TYPES: 基于内存池的IPC所支持的句柄类型的位掩码
-
CU_DEVICE_ATTRIBUTE_DEFERRED_MAPPING_CUDA_ARRAY_SUPPORTED: 设备支持延迟映射CUDA数组和CUDA多级渐远纹理数组。
-
CU_DEVICE_ATTRIBUTE_NUMA_CONFIG: 设备的NUMA配置:值为CUdeviceNumaConfig枚举类型
-
CU_DEVICE_ATTRIBUTE_NUMA_ID: GPU内存的NUMA节点ID
-
CU_DEVICE_ATTRIBUTE_MULTICAST_SUPPORTED: 设备支持切换组播和归约操作。
-
CU_DEVICE_ATTRIBUTE_GPU_PCI_DEVICE_ID: 组合的16位PCI设备ID和16位PCI供应商ID。
-
CU_DEVICE_ATTRIBUTE_GPU_PCI_SUBSYSTEM_ID: 组合的16位PCI子系统ID和16位PCI子系统供应商ID。
Note:请注意,此函数也可能返回之前异步启动的错误代码。
另请参阅:
cuDeviceGetCount, cuDeviceGetName, cuDeviceGetUuid, cuDeviceGet, cuDeviceTotalMem, cuDeviceGetExecAffinitySupport, cudaDeviceGetAttribute, cudaGetDeviceProperties
- CUresult cuDeviceGetCount ( int* count )
-
返回支持计算功能的设备数量。
参数
- count
- - Returned number of compute-capable devices
返回
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_CONTEXT, CUDA_ERROR_INVALID_VALUE
描述
返回*count中可用于执行且计算能力大于等于2.0的设备数量。如果没有此类设备,cuDeviceGetCount()将返回0。
Note:请注意,此函数也可能返回之前异步启动的错误代码。
另请参阅:
cuDeviceGetAttribute, cuDeviceGetName, cuDeviceGetUuid, cuDeviceGetLuid, cuDeviceGet, cuDeviceTotalMem, cuDeviceGetExecAffinitySupport, cudaGetDeviceCount
- CUresult cuDeviceGetDefaultMemPool ( CUmemoryPool* pool_out, CUdevice dev )
-
返回设备的默认内存池。
返回
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZEDCUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_INVALID_DEVICE, CUDA_ERROR_NOT_SUPPORTED
描述
设备的默认内存池包含来自该设备的设备内存。
Note:请注意,此函数也可能返回之前异步启动的错误代码。
另请参阅:
cuMemAllocAsync, cuMemPoolTrimTo, cuMemPoolGetAttribute, cuMemPoolSetAttribute, cuMemPoolSetAccess, cuDeviceGetMemPool, cuMemPoolCreate
- CUresult cuDeviceGetExecAffinitySupport ( int* pi, CUexecAffinityType type, CUdevice dev )
-
返回有关设备执行亲和性支持的信息。
参数
- pi
- - 1 if the execution affinity type type is supported by the device, or 0 if not
- type
- - Execution affinity type to query
- dev
- - Device handle
返回
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_CONTEXT, CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_INVALID_DEVICE
描述
返回在*pi中表示设备dev是否支持执行亲和类型type。支持的类型包括:
-
CU_EXEC_AFFINITY_TYPE_SM_COUNT: 如果设备支持有限SM数量的上下文则返回1,否则返回0;
Note:请注意,此函数也可能返回之前异步启动的错误代码。
另请参阅:
cuDeviceGetAttribute, cuDeviceGetCount, cuDeviceGetName, cuDeviceGetUuid, cuDeviceGet, cuDeviceTotalMem
- CUresult cuDeviceGetLuid ( char* luid, unsigned int* deviceNodeMask, CUdevice dev )
-
返回设备的LUID和设备节点掩码。
参数
- luid
- - Returned LUID
- deviceNodeMask
- - Returned device node mask
- dev
- - Device to get identifier string for
返回
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_INVALID_DEVICE
描述
返回标识信息(luid 和 deviceNodeMask)以便将设备与图形API进行匹配。
Note:请注意,此函数也可能返回之前异步启动的错误代码。
另请参阅:
cuDeviceGetAttribute, cuDeviceGetCount, cuDeviceGetName, cuDeviceGet, cuDeviceTotalMem, cuDeviceGetExecAffinitySupport, cudaGetDeviceProperties
- CUresult cuDeviceGetMemPool ( CUmemoryPool* pool, CUdevice dev )
-
获取设备的当前内存池。
描述
返回为此设备提供的最后一个内存池(如果从未调用过cuDeviceSetMemPool则返回设备的默认内存池)。默认情况下当前内存池是设备的默认内存池。否则返回的池必须是通过cuDeviceSetMemPool设置的。
另请参阅:
cuDeviceGetDefaultMemPool, cuMemPoolCreate, cuDeviceSetMemPool
- CUresult cuDeviceGetName ( char* name, int len, CUdevice dev )
-
返回设备的标识符字符串。
参数
- name
- - Returned identifier string for the device
- len
- - Maximum length of string to store in name
- dev
- - Device to get identifier string for
返回
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_CONTEXT, CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_INVALID_DEVICE
描述
返回一个ASCII字符串,用于标识设备dev,该字符串以NULL结尾并由name指向。len指定可返回字符串的最大长度。
Note:请注意,此函数也可能返回之前异步启动的错误代码。
另请参阅:
cuDeviceGetAttribute, cuDeviceGetUuid, cuDeviceGetLuid, cuDeviceGetCount, cuDeviceGet, cuDeviceTotalMem, cuDeviceGetExecAffinitySupport, cudaGetDeviceProperties
- CUresult cuDeviceGetNvSciSyncAttributes ( void* nvSciSyncAttrList, CUdevice dev, int flags )
-
返回该设备支持的NvSciSync属性。
参数
- nvSciSyncAttrList
- - Return NvSciSync attributes supported.
- dev
- - Valid Cuda Device to get NvSciSync attributes for.
- flags
- - flags describing NvSciSync usage.
描述
返回nvSciSyncAttrList中该CUDA设备dev支持的NvSciSync属性。返回的nvSciSyncAttrList可用于创建与该设备功能匹配的NvSciSync对象。
如果nvSciSyncAttrList中的NvSciSyncAttrKey_RequiredPerm字段已设置,此API将返回CUDA_ERROR_INVALID_VALUE。
应用程序应将nvSciSyncAttrList设置为有效的NvSciSyncAttrList,否则此API将返回CUDA_ERROR_INVALID_HANDLE。
flags 控制应用程序如何使用从 nvSciSyncAttrList 创建的 NvSciSync。有效的标志包括:
-
CUDA_NVSCISYNC_ATTR_SIGNAL, 指定应用程序意图在此CUDA设备上发出NvSciSync信号。
-
CUDA_NVSCISYNC_ATTR_WAIT, 表示应用程序打算在此CUDA设备上等待NvSciSync同步对象。
必须设置这些标志中的至少一个,否则API将返回CUDA_ERROR_INVALID_VALUE。这两个标志彼此独立:开发者可以同时设置这两个标志,从而允许在同一个nvSciSyncAttrList中设置等待和信号特定属性。
请注意,此API会使用以下公共属性键值等效的值更新输入nvSciSyncAttrList:NvSciSyncAttrKey_RequiredPerm被设置为
-
如果flags中设置了CUDA_NVSCISYNC_ATTR_SIGNAL,则为NvSciSyncAccessPerm_SignalOnly权限。
-
NvSciSyncAccessPerm_WaitOnly 如果在flags中设置了CUDA_NVSCISYNC_ATTR_WAIT。
-
如果CUDA_NVSCISYNC_ATTR_WAIT和CUDA_NVSCISYNC_ATTR_SIGNAL都在flags中被设置,则使用NvSciSyncAccessPerm_WaitSignal。NvSciSyncAttrKey_PrimitiveInfo被设置为
-
在任何有效的设备上使用NvSciSyncAttrValPrimitiveType_SysmemSemaphore。
-
如果device是Tegra设备,则使用NvSciSyncAttrValPrimitiveType_Syncpoint。
-
如果device是GA10X+,则使用NvSciSyncAttrValPrimitiveType_SysmemSemaphorePayload64b。NvSciSyncAttrKey_GpuId被设置为与通过cuDeviceGetUuid为此device返回的相同UUID。
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_INVALID_HANDLE, CUDA_ERROR_INVALID_DEVICE, CUDA_ERROR_NOT_SUPPORTED, CUDA_ERROR_OUT_OF_MEMORY
另请参阅:
cuImportExternalSemaphore, cuDestroyExternalSemaphore, cuSignalExternalSemaphoresAsync, cuWaitExternalSemaphoresAsync
- CUresult cuDeviceGetTexture1DLinearMaxWidth ( size_t* maxWidthInElements, CUarray_format format, unsigned numChannels, CUdevice dev )
-
返回给定纹理元素大小下可在一维线性纹理中分配的最大元素数量。
参数
- maxWidthInElements
- - Returned maximum number of texture elements allocatable for given format and numChannels.
- format
- - Texture format.
- numChannels
- - Number of channels per texture element.
- dev
- - Device handle.
返回
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_CONTEXT, CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_INVALID_DEVICE
描述
返回在maxWidthInElements中,针对给定的format和numChannels,可在一维线性纹理中分配的最大纹理元素数量。
Note:请注意,此函数也可能返回之前异步启动的错误代码。
另请参阅:
cuDeviceGetAttribute, cuDeviceGetCount, cuDeviceGetName, cuDeviceGetUuid, cuDeviceGet, cudaMemGetInfo, cuDeviceTotalMem
- CUresult cuDeviceGetUuid ( CUuuid* uuid, CUdevice dev )
-
返回设备的UUID。
参数
- uuid
- - Returned UUID
- dev
- - Device to get identifier string for
返回
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_INVALID_DEVICE
描述
请注意此API有一个更新的版本cuDeviceGetUuid_v2。它将在12.0版本中取代当前版本,当前版本保留是为了保持小版本兼容性。
返回16字节标识符,用于在uuid指针指向的结构中标识设备dev。
Note:请注意,此函数也可能返回之前异步启动的错误代码。
另请参阅:
cuDeviceGetUuid_v2cuDeviceGetAttribute, cuDeviceGetCount, cuDeviceGetName, cuDeviceGetLuid, cuDeviceGet, cuDeviceTotalMem, cuDeviceGetExecAffinitySupport, cudaGetDeviceProperties
- CUresult cuDeviceGetUuid_v2 ( CUuuid* uuid, CUdevice dev )
-
返回设备的UUID(11.4+版本)。
参数
- uuid
- - Returned UUID
- dev
- - Device to get identifier string for
返回
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_INVALID_DEVICE
描述
返回16字节的标识符,用于在uuid指针指向的结构中识别设备dev。如果设备处于MIG模式,则返回其MIG UUID,该UUID唯一标识订阅的MIG计算实例。
Note:请注意,此函数也可能返回之前异步启动的错误代码。
另请参阅:
cuDeviceGetAttribute, cuDeviceGetCount, cuDeviceGetName, cuDeviceGetLuid, cuDeviceGet, cuDeviceTotalMem, cudaGetDeviceProperties
- CUresult cuDeviceSetMemPool ( CUdevice dev, CUmemoryPool pool )
-
设置设备的当前内存池。
描述
内存池必须位于指定设备本地。cuMemAllocAsync会从提供流所在设备的当前内存池中分配内存。默认情况下,设备的当前内存池就是其默认内存池。
Note:使用cuMemAllocFromPoolAsync可以从与流运行设备不同的设备上指定异步分配。
另请参阅:
cuDeviceGetDefaultMemPool, cuDeviceGetMemPool, cuMemPoolCreate, cuMemPoolDestroy, cuMemAllocFromPoolAsync
- CUresult cuDeviceTotalMem ( size_t* bytes, CUdevice dev )
-
返回设备上的内存总量。
参数
- bytes
- - Returned memory available on device in bytes
- dev
- - Device handle
返回
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_CONTEXT, CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_INVALID_DEVICE
描述
返回设备dev上可用的总内存量(以字节为单位),结果存储在*bytes中。
Note:请注意,此函数也可能返回之前异步启动的错误代码。
另请参阅:
cuDeviceGetAttribute, cuDeviceGetCount, cuDeviceGetName, cuDeviceGetUuid, cuDeviceGet, cuDeviceGetExecAffinitySupport, cudaMemGetInfo
- CUresult cuFlushGPUDirectRDMAWrites ( CUflushGPUDirectRDMAWritesTarget target, CUflushGPUDirectRDMAWritesScope scope )
-
阻塞直到远程写入对指定范围可见。
参数
- target
- - The target of the operation, see CUflushGPUDirectRDMAWritesTarget
- scope
- - The scope of the operation, see CUflushGPUDirectRDMAWritesScope
返回
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_CONTEXT, CUDA_ERROR_INVALID_VALUE,
描述
阻塞直到通过类似nvidia_p2p_get_pages等API创建的映射(详见https://docs.nvidia.com/cuda/gpudirect-rdma)对目标上下文执行的GPUDirect RDMA写入操作,在指定范围内可见。
如果作用域等于或位于CU_DEVICE_ATTRIBUTE_GPU_DIRECT_RDMA_WRITES_ORDERING指定的范围内,则该调用将是无操作,可以安全地省略以提高性能。这可以通过比较两个枚举的数值来确定,其中较小作用域对应的数值也更小。
在支持通过硬件中多个路径进行GPUDirect RDMA写入的平台上(参见CU_MEM_RANGE_FLAG_DMA_BUF_MAPPING_TYPE_PCIE),用户应将这些路径视为属于不同的排序域。请注意,在这种情况下,CUDA驱动程序会将RDMA写入排序和RDMA写入范围都报告为ALL_DEVICES,并且调用cuFlushGPUDirectRDMA将无效,但当同时使用这些多个路径时,用户有责任通过CUDA范围之外的机制来确保排序。
用户可以通过CU_DEVICE_ATTRIBUTE_FLUSH_FLUSH_GPU_DIRECT_RDMA_OPTIONS查询该API的支持情况。
Note:请注意,此函数也可能返回之前异步启动的错误代码。