用Python访问GPU硬件规范?

2024-04-26 05:57:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用Numba或类似的Python CUDA pacakge访问各种NVidia GPU规范。可用设备内存、二级缓存大小、内存时钟频率等信息

通过阅读this question,我了解到我可以通过Numba的CUDA设备接口访问一些信息(但不是全部)

from numba import cuda

device = cuda.get_current_device()
attribs = [s for s in dir(device) if s.isupper()]
for attr in attribs:
    print(attr, '=', getattr(device, attr))

试验机上的输出:

ASYNC_ENGINE_COUNT = 4
CAN_MAP_HOST_MEMORY = 1
COMPUTE_CAPABILITY = (5, 0)
MAX_BLOCK_DIM_X = 1024
MAX_BLOCK_DIM_Y = 1024
MAX_BLOCK_DIM_Z = 64
MAX_GRID_DIM_X = 2147483647
MAX_GRID_DIM_Y = 65535
MAX_GRID_DIM_Z = 65535
MAX_SHARED_MEMORY_PER_BLOCK = 49152
MAX_THREADS_PER_BLOCK = 1024
MULTIPROCESSOR_COUNT = 3
PCI_BUS_ID = 1
PCI_DEVICE_ID = 0
UNIFIED_ADDRESSING = 1
WARP_SIZE = 32

如您所见,我缺少了许多列出的字段here,例如TOTAL_CONSTANT_MEMORYMAX_SHARED_MEMORY_PER_BLOCKMEMORY_CLOCK_RATEMAX_THREADS_PER_MULTI_PROCESSOR

如何在Python中查看这些值


Tags: 内存信息fordeviceblockmaxcudagrid
1条回答
网友
1楼 · 发布于 2024-04-26 05:57:53

所有这些值都通过__getattr__method延迟设置为设备对象。您可以使用类似于this method的方法访问它们。您需要的不是设备,而是枚举本身:

from numba.cuda.cudadrv import enums
from numba import cuda

device = cuda.get_current_device()
attribs= [name.replace("CU_DEVICE_ATTRIBUTE_", "") for name in dir(enums) if name.startswith("CU_DEVICE_ATTRIBUTE_")]
for attr in attribs:
    print(attr, '=', getattr(device, attr))

相关问题 更多 >