cupy.cuda.memory_hooks.LineProfileHook#
- class cupy.cuda.memory_hooks.LineProfileHook(max_depth=0)[源代码][源代码]#
代码行 CuPy 内存分析器。
这个分析器使用 traceback 模块显示逐行的 GPU 内存消耗。但是,请注意它只能追踪 CPython 级别,不能追踪 Cython 级别。参考。 cython/cython#1755
示例
代码示例:
from cupy.cuda import memory_hooks hook = memory_hooks.LineProfileHook() with hook: # some CuPy codes hook.print_report()
输出示例:
_root (4.00KB, 4.00KB) lib/python3.6/unittest/__main__.py:18:<module> (4.00KB, 4.00KB) lib/python3.6/unittest/main.py:255:runTests (4.00KB, 4.00KB) tests/cupy_tests/test.py:37:test (1.00KB, 1.00KB) tests/cupy_tests/test.py:38:test (1.00KB, 1.00KB) tests/cupy_tests/test.py:39:test (2.00KB, 2.00KB)
每行显示:
{filename}:{lineno}:{func_name} ({used_bytes}, {acquired_bytes})
其中 used_bytes 是从CuPy内存池使用的内存字节数,acquired_bytes 是CuPy内存池从GPU设备实际获取的内存字节数。_root 是用于显示总内存使用量的堆栈跟踪的根节点。
- 参数:
max_depth (int) – 最大深度以跟随堆栈跟踪。默认值是 0(无限制)。
方法
- __enter__(self)#
- __exit__(self, *_)#
- alloc_postprocess(self, **kwargs)#
从GPU设备分配内存后调用的回调函数。
- free_postprocess(self, **kwargs)#
回调函数在将内存释放回内存池后调用。
- free_preprocess(self, **kwargs)#
在将内存释放回内存池之前调用的回调函数。
- malloc_postprocess(self, **kwargs)#
从内存池中检索内存后调用的回调函数。
- print_report(file=<_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>)[源代码][源代码]#
打印行内存分析报告。
- __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 = 'LineProfileHook'#