--cuda-um-cpu-page-faults= Possible values are 'true' or 'false'. Track the CPU page faults that occur with Unified Memory. Applicable only when CUDA tracing is enabled. This feature may cause significant runtime overhead. Default is 'false'. Application scope.
--cuda-um-cpu-page-faults=
参数在 nsys
(NVIDIA System Profiler)中用于控制在性能分析期间是否追踪与统一内存(Unified Memory)相关的 CPU 页面错误(page faults)。这个参数对于调试和优化使用 Unified Memory 的 CUDA 应用程序非常有用,尤其是在涉及 CPU 和 GPU 之间的数据移动时。以下是对该参数的详细解释,包括用法、适用场景及其选择建议。
参数详解
-
使用方法:
--cuda-um-cpu-page-faults=<true|false>
<true>
: 启用追踪统一内存环境下 CPU 页面错误。这意味着,nsys 将记录在数据访问中发生的页面错误情况。<false>
: 禁用追踪统一内存环境下的 CPU 页面错误(默认设置)。在这种情况下,不会收集与页面错误相关的详细数据。
-
性能影响: 启用 CPU 页面错误的追踪可能会增加运行时开销,特别是在内存访问频繁的场景下。这是因为每次发生页面错误时,都会触发额外的监控和记录操作,因此需要仔细权衡是否启用该特性。
-
适用范围: 该参数仅在启用 CUDA 跟踪时有效。如果未启用 CUDA 跟踪,则此参数不会产生任何效果。
使用示例
假设您希望启用 CPU 页面错误的追踪,以便在分析期间收集相关数据:
nsys profile --cuda-um-cpu-page-faults=true ./my_cuda_application
适用场景
-
调试 Unified Memory 使用:
- 如果您的应用程序使用 Unified Memory,并且在访问数据时出现效率问题,启用页面错误追踪可以帮助确定何时、何种情况下发生了页面错误,进而分析造成性能影响的根本原因。
-
性能分析:
- 对于在 CPU 和 GPU 之间频繁交换数据的应用程序,追踪 CPU 页面错误可以提供有关数据访问模式的有用信息。这为优化数据在内存中的布局和移动提供了指导。
-
解决页面错误引起的性能瓶颈:
- 如果发现应用程序的性能低于预期,并怀疑页面错误是罪魁祸首,这项功能可以帮助您确认页面错误的发生频率,以及它们对性能的实际影响。
-
内存驱动问题:
- 在使用 Unified Memory 时,如果遇到与内存驱动相关的异常或故障,启用页面错误追踪可以帮助捕捉到重要的调试信息。
选择建议
-
选择
true
:- 如果您正在调试或优化使用 Unified Memory 的应用程序,且想要详细了解 CPU 页错误的发生和影响时,启用页面错误追踪。
-
选择
false
:- 如果您希望尽量减少运行时开销,并且不是特别关注页面错误的详细数据。这对于性能要求高的应用程序尤为重要。
通过有效设置 --cuda-um-cpu-page-faults
参数,您可以深入了解应用程序在使用统一内存时的内存访问情况和潜在问题,从而进行有效的性能调优。