cupy.cuda.memory_hooks.LineProfileHook#
- class cupy.cuda.memory_hooks.LineProfileHook(max_depth=0)[source]#
代码行 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'>)[source]#
打印行内存分析报告。
- __eq__(value, /)#
Return self==value.
- __ne__(value, /)#
Return self!=value.
- __lt__(value, /)#
Return self<value.
- __le__(value, /)#
Return self<=value.
- __gt__(value, /)#
Return self>value.
- __ge__(value, /)#
Return self>=value.
属性
- name = 'LineProfileHook'#