6.5. 设备管理
本节介绍低级别 CUDA 驱动程序应用程序编程接口的设备管理功能。
函数
- CUresult cuDeviceGet ( CUdevice* device, int ordinal )
- 返回计算设备的句柄。
- CUresult cuDeviceGetAttribute ( int* pi, CUdevice_attribute attrib, CUdevice dev )
- 返回有关设备的信息。
- CUresult cuDeviceGetCount ( int* count )
- 返回具有计算能力的设备的数量。
- CUresult cuDeviceGetDefaultMemPool ( CUmemoryPool* pool_out, CUdevice dev )
- 返回设备的默认内存池。
- CUresult cuDeviceGetExecAffinitySupport ( int* pi, CUexecAffinityType type, CUdevice dev )
- 返回有关设备的执行亲和性支持的信息。
- CUresult cuDeviceGetLuid ( char* luid, unsigned int* deviceNodeMask, CUdevice dev )
- 返回设备的 LUID 和设备节点掩码。
- CUresult cuDeviceGetMemPool ( CUmemoryPool* pool, CUdevice dev )
- 获取设备当前的内存池。
- CUresult cuDeviceGetName ( char* name, int len, CUdevice dev )
- 返回设备的标识符字符串。
- CUresult cuDeviceGetNvSciSyncAttributes ( void* nvSciSyncAttrList, CUdevice dev, int flags )
- 返回此设备可以支持的 NvSciSync 属性。
- CUresult cuDeviceGetTexture1DLinearMaxWidth ( size_t* maxWidthInElements, CUarray_format format, unsigned numChannels, CUdevice dev )
- 返回给定纹理元素大小的 1D 线性纹理中可分配的最大元素数。
- CUresult cuDeviceGetUuid ( CUuuid* uuid, CUdevice dev )
- 返回设备的 UUID。
- CUresult cuDeviceGetUuid_v2 ( CUuuid* uuid, CUdevice dev )
- 返回设备的 UUID (11.4+)。
- CUresult cuDeviceSetMemPool ( CUdevice dev, CUmemoryPool pool )
- 设置设备当前的内存池。
- CUresult cuDeviceTotalMem ( size_t* bytes, CUdevice dev )
- 返回设备上的总内存量。
- CUresult cuFlushGPUDirectRDMAWrites ( CUflushGPUDirectRDMAWritesTarget target, CUflushGPUDirectRDMAWritesScope scope )
- 阻塞直到远程写入对指定的范围可见。
函数
- CUresult cuDeviceGet ( CUdevice* device, int ordinal )
-
返回计算设备的句柄。
参数
- device
- - 返回的设备句柄
- ordinal
- - 要获取句柄的设备编号
返回值
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_CONTEXT, CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_INVALID_DEVICE
描述
在*device中返回设备句柄,给定范围为 [0, cuDeviceGetCount()-1] 的序号。
注意请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅
cuDeviceGetAttribute, cuDeviceGetCount, cuDeviceGetName, cuDeviceGetUuid, cuDeviceGetLuid, cuDeviceTotalMem, cuDeviceGetExecAffinitySupport
- CUresult cuDeviceGetAttribute ( int* pi, CUdevice_attribute attrib, CUdevice dev )
-
返回有关设备的信息。
参数
- pi
- - 返回的设备属性值
- attrib
- - 要查询的设备属性
- dev
- - 设备句柄
返回值
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_CONTEXT, CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_INVALID_DEVICE
描述
在*pi设备上属性的整数值attrib在设备dev上。支持的属性有
-
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: Warp 大小(以线程为单位)
-
CU_DEVICE_ATTRIBUTE_MAX_PITCH: 内存复制函数允许的最大 pitch(以字节为单位),这些函数涉及通过 cuMemAllocPitch() 分配的内存区域
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_WIDTH: 最大 1D 纹理宽度
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_LINEAR_WIDTH: 绑定到线性内存的 1D 纹理的最大宽度
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_MIPMAPPED_WIDTH: 最大 mipmapped 1D 纹理宽度
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_WIDTH: 最大 2D 纹理宽度
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_HEIGHT: 最大 2D 纹理高度
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LINEAR_WIDTH: 绑定到线性内存的 2D 纹理的最大宽度
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LINEAR_HEIGHT: 绑定到线性内存的 2D 纹理的最大高度
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LINEAR_PITCH: 绑定到线性内存的 2D 纹理的最大 pitch(以字节为单位)
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_MIPMAPPED_WIDTH: 最大 mipmapped 2D 纹理宽度
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_MIPMAPPED_HEIGHT: 最大 mipmapped 2D 纹理高度
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_WIDTH: 最大 3D 纹理宽度
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_HEIGHT: 最大 3D 纹理高度
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_DEPTH: 最大 3D 纹理深度
-
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: 最大 1D 分层纹理宽度
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_LAYERED_LAYERS: 1D 分层纹理中的最大层数
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_WIDTH: 最大 2D 分层纹理宽度
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_HEIGHT: 最大 2D 分层纹理高度
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_LAYERS: 2D 分层纹理中的最大层数
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURECUBEMAP_LAYERED_WIDTH: 最大立方体贴图分层纹理宽度或高度
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURECUBEMAP_LAYERED_LAYERS: 立方体贴图分层纹理中的最大层数
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE1D_WIDTH: 最大 1D 表面宽度
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_WIDTH: 最大 2D 表面宽度
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_HEIGHT: 最大 2D 表面高度
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE3D_WIDTH: 最大 3D 表面宽度
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE3D_HEIGHT: 最大 3D 表面高度
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE3D_DEPTH: 最大 3D 表面深度
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE1D_LAYERED_WIDTH: 最大 1D 分层表面宽度
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE1D_LAYERED_LAYERS: 1D 分层表面中的最大层数
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_LAYERED_WIDTH: 最大 2D 分层表面宽度
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_LAYERED_HEIGHT: 最大 2D 分层表面高度
-
CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_LAYERED_LAYERS: 2D 分层表面中的最大层数
-
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: 绑定到 pitched 内存的 2D 纹理引用的 pitch 对齐要求
-
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: 设备当前所处的计算模式。可用模式如下:
-
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: 1 表示设备正在使用 TCC 驱动程序。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: 每个多处理器resident的最大线程数
-
CU_DEVICE_ATTRIBUTE_UNIFIED_ADDRESSING: 如果设备与主机共享统一地址空间,则为 1;否则为 0
-
CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MAJOR: 主要计算能力版本号
-
CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MINOR: 次要计算能力版本号
-
CU_DEVICE_ATTRIBUTE_GLOBAL_L1_CACHE_SUPPORTED: 如果设备支持在 L1 缓存中缓存全局变量,则为 1;如果设备不支持在 L1 缓存中缓存全局变量,则为 0
-
CU_DEVICE_ATTRIBUTE_LOCAL_L1_CACHE_SUPPORTED: 如果设备支持在 L1 缓存中缓存局部变量,则为 1;如果设备不支持在 L1 缓存中缓存局部变量,则为 0
-
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.nvda.net.cn/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 mipmapped 数组。
-
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。ID。
注意请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅
cuDeviceGetCount, cuDeviceGetName, cuDeviceGetUuid, cuDeviceGet, cuDeviceTotalMem, cuDeviceGetExecAffinitySupport, cudaDeviceGetAttribute, cudaGetDeviceProperties
- CUresult cuDeviceGetCount ( int* count )
-
返回支持计算的设备的数量。
参数
- count
- - 返回的支持计算的设备数量
返回值
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_CONTEXT, CUDA_ERROR_INVALID_VALUE
描述
在*count计算能力大于或等于 2.0 且可用于执行的设备数量。如果没有此类设备,cuDeviceGetCount() 返回 0。
注意请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅
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
描述
设备的默认内存池包含来自该设备的设备内存。
注意请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅
cuMemAllocAsync, cuMemPoolTrimTo, cuMemPoolGetAttribute, cuMemPoolSetAttribute, cuMemPoolSetAccess, cuDeviceGetMemPool, cuMemPoolCreate
- CUresult cuDeviceGetExecAffinitySupport ( int* pi, CUexecAffinityType type, CUdevice dev )
-
返回设备执行关联性支持的信息。
参数
- pi
- - 如果设备支持执行关联性类型,则为 1type否则为 0
- type
- - 要查询的执行关联性类型
- dev
- - 设备句柄
返回值
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_CONTEXT, CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_INVALID_DEVICE
描述
在*pi是否设备支持执行关联性类型type。dev支持的类型是
-
CU_EXEC_AFFINITY_TYPE_SM_COUNT: 如果设备支持具有有限 SM 的上下文,则为 1;否则为 0;
注意请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅
cuDeviceGetAttribute, cuDeviceGetCount, cuDeviceGetName, cuDeviceGetUuid, cuDeviceGet, cuDeviceTotalMem
- CUresult cuDeviceGetLuid ( char* luid, unsigned int* deviceNodeMask, CUdevice dev )
-
返回设备的 LUID 和设备节点掩码。
参数
- luid
- - 返回的 LUID
- deviceNodeMask
- - 返回的设备节点掩码
- dev
- - 获取标识符字符串的设备
返回值
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_INVALID_DEVICE
描述
返回标识信息 (luid和deviceNodeMask) 以允许将设备与图形 API 匹配。
注意请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅
cuDeviceGetAttribute, cuDeviceGetCount, cuDeviceGetName, cuDeviceGet, cuDeviceTotalMem, cuDeviceGetExecAffinitySupport, cudaGetDeviceProperties
- CUresult cuDeviceGetMemPool ( CUmemoryPool* pool, CUdevice dev )
-
获取设备的当前内存池。
描述
返回为此设备提供的最后一个池 cuDeviceSetMemPool,如果从未调用 cuDeviceSetMemPool,则返回设备的默认内存池。默认情况下,当前内存池是设备的默认内存池。否则,返回的池必须已通过 cuDeviceSetMemPool 设置。
另请参阅
cuDeviceGetDefaultMemPool, cuMemPoolCreate, cuDeviceSetMemPool
- CUresult cuDeviceGetName ( char* name, int len, CUdevice dev )
-
返回设备的标识符字符串。
参数
- name
- - 返回的设备标识符字符串
- len
- - 存储在name
- dev
- - 获取标识符字符串的设备
返回值
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指定可能返回的字符串的最大长度。
注意请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅
cuDeviceGetAttribute, cuDeviceGetUuid, cuDeviceGetLuid, cuDeviceGetCount, cuDeviceGet, cuDeviceTotalMem, cuDeviceGetExecAffinitySupport, cudaGetDeviceProperties
- CUresult cuDeviceGetNvSciSyncAttributes ( void* nvSciSyncAttrList, CUdevice dev, int flags )
-
返回此设备可以支持的 NvSciSync 属性。
参数
- nvSciSyncAttrList
- - 返回支持的 NvSciSync 属性。
- dev
- - 获取 NvSciSync 属性的有效 Cuda 设备。
- flags
- - 描述 NvSciSync 用法的标志。
描述
在nvSciSyncAttrList,此 CUDA 设备dev可以支持的 NvSciSync 的属性。nvSciSyncAttrList返回的
可用于创建与此设备的功能匹配的 NvSciSync 对象。nvSciSyncAttrList如果
中的 NvSciSyncAttrKey_RequiredPerm 字段已设置,则此 API 将返回 CUDA_ERROR_INVALID_VALUE。
应用程序应将nvSciSyncAttrList设置为有效的 NvSciSyncAttrList,否则此 API 将返回 CUDA_ERROR_INVALID_HANDLE。
Theflags
控制应用程序打算如何使用从
创建的 NvSciSync。nvSciSyncAttrList有效的标志是
-
CUDA_NVSCISYNC_ATTR_SIGNAL,指定应用程序打算在此 CUDA 设备上发出 NvSciSync 信号。
-
CUDA_NVSCISYNC_ATTR_WAIT,指定应用程序打算在此 CUDA 设备上等待 NvSciSync。
必须至少设置其中一个标志,否则 API 返回 CUDA_ERROR_INVALID_VALUE。这两个标志彼此正交:开发人员可以同时设置这两个标志,以便在同一
中设置等待和信号特定属性。nvSciSyncAttrList.
请注意,此 API 使用等效于以下公共属性键值的值更新输入
:如果 CUDA_NVSCISYNC_ATTR_SIGNAL 在
中设置,则 NvSciSyncAttrKey_RequiredPerm 设置为nvSciSyncAttrList。
-
如果 CUDA_NVSCISYNC_ATTR_SIGNAL 在
中设置,则 NvSciSyncAttrKey_RequiredPerm 设置为 NvSciSyncAccessPerm_SignalOnlyflags.
-
中设置,则 NvSciSyncAccessPerm_WaitOnlyflags.
-
如果 CUDA_NVSCISYNC_ATTR_WAIT 和 CUDA_NVSCISYNC_ATTR_SIGNAL 都在
中设置,则 NvSciSyncAccessPerm_WaitSignalflags。
-
NvSciSyncAttrKey_PrimitiveInfo 设置为device.
-
在任何有效的
上为 NvSciSyncAttrValPrimitiveType_SysmemSemaphoredevice如果
是 Tegra 设备,则为 NvSciSyncAttrValPrimitiveType_Syncpoint。
-
如果
是 GA10X+,则为 NvSciSyncAttrValPrimitiveType_SysmemSemaphorePayload64b。NvSciSyncAttrKey_GpuId 设置为从此
返回的相同 UUID,来自 cuDeviceGetUuid。device。device。
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 )
-
返回给定纹理元素大小的 1D 线性纹理中可分配的最大元素数。
参数
- maxWidthInElements
- - 返回给定
的可分配最大纹理元素数format和numChannels.
- format
- - 纹理格式。
- numChannels
- - 每个纹理元素的通道数。
- dev
- - 设备句柄。
返回值
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_CONTEXT, CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_INVALID_DEVICE
描述
在maxWidthInElements给定
的 1D 线性纹理中可分配的最大纹理元素数format和numChannels.
注意请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅
cuDeviceGetAttribute, cuDeviceGetCount, cuDeviceGetName, cuDeviceGetUuid, cuDeviceGet, cudaMemGetInfo, cuDeviceTotalMem
- CUresult cuDeviceGetUuid ( CUuuid* uuid, CUdevice dev )
-
返回设备的 UUID。
参数
- uuid
- - 返回的 UUID
- dev
- - 获取标识符字符串的设备
返回值
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_INVALID_DEVICE
描述
请注意,此 API 有一个较新版本:cuDeviceGetUuid_v2。它将在 12.0 版本中取代此版本,该版本为保持次要版本兼容性而保留。
返回 16 个八位字节,用于标识设备dev在
指向的结构中uuid.
注意请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅
cuDeviceGetUuid_v2cuDeviceGetAttribute, cuDeviceGetCount, cuDeviceGetName, cuDeviceGetLuid, cuDeviceGet, cuDeviceTotalMem, cuDeviceGetExecAffinitySupport, cudaGetDeviceProperties
- CUresult cuDeviceGetUuid_v2 ( CUuuid* uuid, CUdevice dev )
-
返回设备的 UUID (11.4+)。
参数
- uuid
- - 返回的 UUID
- dev
- - 获取标识符字符串的设备
返回值
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_INVALID_DEVICE
描述
返回 16 个八位字节,用于标识设备dev在
指向的结构中uuid。如果设备处于 MIG 模式,则返回其 MIG UUID,该 UUID 唯一标识订阅的 MIG 计算实例。
注意请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅
cuDeviceGetAttribute, cuDeviceGetCount, cuDeviceGetName, cuDeviceGetLuid, cuDeviceGet, cuDeviceTotalMem, cudaGetDeviceProperties
- CUresult cuDeviceSetMemPool ( CUdevice dev, CUmemoryPool pool )
-
设置设备的当前内存池。
描述
内存池必须是指定设备的本地内存池。cuMemAllocAsync 从所提供流设备的当前内存池中分配内存。默认情况下,设备的当前内存池是其默认内存池。
注意使用 cuMemAllocFromPoolAsync 以指定从与流运行设备不同的设备进行异步分配。
另请参阅
cuDeviceGetDefaultMemPool, cuDeviceGetMemPool, cuMemPoolCreate, cuMemPoolDestroy, cuMemAllocFromPoolAsync
- CUresult cuDeviceTotalMem ( size_t* bytes, CUdevice dev )
-
返回设备上的总内存量。
参数
- bytes
- - 返回设备上可用的内存量,以字节为单位
- dev
- - 设备句柄
返回值
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_CONTEXT, CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_INVALID_DEVICE
描述
在*bytes设备上可用的总内存量dev以字节为单位。
注意请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅
cuDeviceGetAttribute, cuDeviceGetCount, cuDeviceGetName, cuDeviceGetUuid, cuDeviceGet, cuDeviceGetExecAffinitySupport, cudaMemGetInfo
- CUresult cuFlushGPUDirectRDMAWrites ( CUflushGPUDirectRDMAWritesTarget target, CUflushGPUDirectRDMAWritesScope scope )
-
阻塞直到远程写入对指定范围可见。
参数
- target
- - 操作的目标,请参阅 CUflushGPUDirectRDMAWritesTarget
- scope
- - 操作的范围,请参阅 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.nvda.net.cn/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 的支持。
注意请注意,此函数也可能返回来自先前异步启动的错误代码。