cupy.cuda.memory_hooks.DebugPrintHook#
- class cupy.cuda.memory_hooks.DebugPrintHook(file=<_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>, flush=True)[source]#
打印调试信息的内存钩子。
这个内存钩子在后处理阶段(即每个方法被调用后)输出钩子函数中涉及的
malloc
和free
方法的输入参数的调试信息。示例
基本用法是与
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_preprocess(self, **kwargs)#
从 GPU 设备分配内存前调用的回调函数。
- free_preprocess(self, **kwargs)#
将内存释放回内存池前调用的回调函数。
- malloc_preprocess(self, **kwargs)#
从内存池获取内存前调用的回调函数。
- __eq__(value, /)#
返回 self==value。
- __ne__(value, /)#
返回 self!=value。
- __lt__(value, /)#
返回 self
- __le__(value, /)#
返回 self<=value。
- __gt__(value, /)#
返回 self>value。
- __ge__(value, /)#
返回 self>=value。
属性
- name = 'DebugPrintHook'#