cupy.cuda.memory_hooks.DebugPrintHook#

class cupy.cuda.memory_hooks.DebugPrintHook(file=<_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>, flush=True)[源代码][源代码]#

打印调试信息的内存钩子。

此内存钩子在后期处理时输出涉及的 mallocfree 方法的输入参数的调试信息(即在每次方法调用之后)。

示例

基本用法是与 with 语句一起使用。

代码示例:

>>> import cupy
>>> from cupy.cuda import memory_hooks
>>>
>>> cupy.cuda.set_allocator(cupy.cuda.MemoryPool().malloc)
>>> with memory_hooks.DebugPrintHook():
...     x = cupy.array([1, 2, 3])
...     del x  

输出示例:

{"hook":"alloc","device_id":0,"mem_size":512,"mem_ptr":150496608256}
{"hook":"malloc","device_id":0,"size":24,"mem_size":512,"mem_ptr":150496608256,"pmem_id":"0x7f39200c5278"}
{"hook":"free","device_id":0,"mem_size":512,"mem_ptr":150496608256,"pmem_id":"0x7f39200c5278"}

输出格式为 JSONL (JSON Lines),其中 hook 是钩子点的名称,device_id 是 CUDA 设备 ID,size 是请求分配的内存大小,mem_size 是四舍五入后要分配的内存大小,mem_ptr 是内存指针,pmem_id 是池化内存对象 ID。

变量:
  • file – 输出类文件对象,用于重定向。

  • flush – 如果 True,此钩子在打印结束时强制刷新文本流。默认值是 True

方法

__enter__(self)#
__exit__(self, *_)#
alloc_postprocess(self, **kwargs)[源代码][源代码]#

从GPU设备分配内存后调用的回调函数。

关键字参数:
  • device_id (int) – CUDA 设备 ID

  • mem_size (int) – 圆整后的内存分配字节大小

  • mem_ptr (int) – 获取的内存指针。如果分配过程中发生错误,则为0。

alloc_preprocess(self, **kwargs)#

从GPU设备分配内存之前调用的回调函数。

关键字参数:
  • device_id (int) – CUDA 设备 ID

  • mem_size (int) – 要分配的圆整内存字节大小

free_postprocess(self, **kwargs)[源代码][源代码]#

回调函数在将内存释放回内存池后调用。

关键字参数:
  • device_id (int) – CUDA 设备 ID

  • mem_size (int) – 内存字节大小

  • mem_ptr (int) – 要释放的内存指针

  • pmem_id (int) – 池化内存对象ID。

free_preprocess(self, **kwargs)#

在将内存释放回内存池之前调用的回调函数。

关键字参数:
  • device_id (int) – CUDA 设备 ID

  • mem_size (int) – 内存字节大小

  • mem_ptr (int) – 要释放的内存指针

  • pmem_id (int) – 池化内存对象ID。

malloc_postprocess(self, **kwargs)[源代码][源代码]#

从内存池中检索内存后调用的回调函数。

关键字参数:
  • device_id (int) – CUDA 设备 ID

  • size (int) – 请求分配的内存字节大小

  • mem_size (int) – 圆整后的内存分配字节大小

  • mem_ptr (int) – 获取的内存指针。如果 malloc 中发生错误,则为 0。

  • pmem_id (int) – 池化内存对象ID。如果在 malloc 中发生错误,则为0。

malloc_preprocess(self, **kwargs)#

从内存池中检索内存之前调用的回调函数。

关键字参数:
  • device_id (int) – CUDA 设备 ID

  • size (int) – 请求分配的内存字节大小

  • mem_size (int) – 要分配的圆整内存字节大小

__eq__(value, /)#

返回 self==value。

__ne__(value, /)#

返回 self!=value。

__lt__(value, /)#

返回 self<value。

__le__(value, /)#

返回 self<=value。

__gt__(value, /)#

返回 self>value。

__ge__(value, /)#

返回 self>=value。

属性

name = 'DebugPrintHook'#