496 字
2 分钟
CUDA检查工具-cuda-memcheck
2023-03-27

CUDA检查工具-cuda-memcheck#

cuda-memcheck是CUDA工具包中的一个功能正确性检查套件。它包含多个可以执行不同类型检查的工具。这些工具可以精确地检测和归因CUDA应用程序中的越界和未对齐的内存访问错误。具体包括 memcheck、 racecheck、initcheck、 synccheck 共 4 个工具。它们可由可执行文件 cuda-memcheck 调用:

Terminal window
$ cuda-memcheck --tool memcheck [options] app_name [options]
$ cuda-memcheck --tool racecheck [options] app_name [options]
$ cuda-memcheck --tool initcheck [options] app_name [options]
$ cuda-memcheck --tool synccheck [options] app_name [options]
$ export PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True

memcheck:用于内存访问错误和泄漏检测 racecheck:共享内存数据访问危险检测工具 initcheck:未初始化的设备全局内存访问检测工具 synccheck:用于线程同步危险检测 具体参数信息可以参考官网:CUDA-MEMCHECK :: CUDA Toolkit Documentation (nvidia.com)

注意:此工具已在 CUDA 11.6 中被弃用,并在12.0 及更高版本中被删除。Compute Sanitizer 已取代它的位置,用法差不多,但是提供了额外的功能,如改进的性能和对 Microsoft hardware-accelerated GPU scheduling 的支持,以及对内存检查之外的功能的更广泛支持。

简单使用#

​ 如下有问题代码编译后,使用 cuda-memcheck ./test.out 或者compute-sanitizer ./test.out执行后则会得到一大段输出以及

image-20240605154949504

========= ERROR SUMMARY: 2 errors

NVIDIA Compute Sanitizer#

Compute Sanitizer 是一套工具,可以对代码的功能正确性执行不同类型的检查。 主要有四种工具:

  • memcheck:内存访问错误和泄漏检测。
  • racecheck:共享内存数据访问危险检测工具。
  • initcheck:未初始化设备全局内存访问检测工具。
  • synccheck:线程同步危险检测。
Terminal window
$ nvcc -o mempool.exe mempool_example.cu -arch=sm_70
$ ./mempool.exe
After populateMemory 1: bucket 0, 1 .. 62: 0 1 .. 62
After populateMemory 2: bucket 0, 1 .. 63: 0 1 .. 63
$compute-sanitizer --tool memcheck ./mempool.exe
========= COMPUTE-SANITIZER
After populateMemory 1: bucket 0, 1 .. 62: 0 1 .. 62
After populateMemory 2: bucket 0, 1 .. 63: 0 1 .. 63
========= ERROR SUMMARY: 0 errors

Reference:#

【1】https://blog.csdn.net/qq_33598781/article/details/136136951

【2】https://blog.csdn.net/kunhe0512/article/details/137119826

【3】CUDA-MEMCHECK :: CUDA Toolkit Documentation (nvidia.com)

【4】Hardware Accelerated GPU Scheduling - DirectX Developer Blog (microsoft.com)

CUDA检查工具-cuda-memcheck
https://tuoyuangui.github.io/website/posts/typora/cuda/cuda检测工具/
作者
椭圆规/tuoyuangui
发布于
2023-03-27
许可协议
CC BY-NC-SA 4.0