cupy.cuda.memory_hooks.DebugPrintHook#
- class cupy.cuda.memory_hooks.DebugPrintHook(file=<_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>, flush=True)[源代码][源代码]#
打印调试信息的内存钩子。
此内存钩子在后期处理时输出涉及的
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<value。
- __le__(value, /)#
返回 self<=value。
- __gt__(value, /)#
返回 self>value。
- __ge__(value, /)#
返回 self>=value。
属性
- name = 'DebugPrintHook'#