混合精度在计算方法中结合了不同的数值精度。NVIDIA Volta架构和Turing架构的GPU引入了TensorCore,它在单精度数学管道上提供了显著的吞吐量加速。通过将梯度张量和激活张量上的存储需求和内存流量减半,可以以较低的精度对深度学习网络进行训练,以实现高吞吐量。以下Nvidia工具可以让您分析您的模型是否最大限度地利用TensorCore。
Nvidia Nsight Systems为开发人员提供了一个全系统的性能分析工具,提供了一个完整和统一的视图,说明他们的应用程序如何利用计算机的CPU和GPU。该工具使开发人员能够可视化应用程序的算法,以确定优化和优化算法的最大机会。
开发人员可以使用NVTX(NVIDIA工具扩展库)注释源代码,在nsight系统的时间线查看器中轻松突出显示函数调用。在识别出瓶颈之后,可以使用nsight计算对单个内核进行分析。
Nsight Compute是CUDA应用程序的下一代交互式内核分析器,可从CUDA 10.0工具包获得。它通过用户界面和命令行工具为内核提供了详细的性能指标和API调试。
您可以收集关于每个执行的内核的低级统计信息,并比较多个运行。它可以直接在命令行上打印结果,或者将结果存储在报告文件中。
您可以使用命令行接口直接使用profiler启动一个训练脚本,它让您了解是否使用了张量核。表1显示了关键参数。
Command Line Option | Description |
---|---|
–csv | 为输出指定逗号分隔的值 |
–nvtx | 启用NVTX支持(这意味着如果python代码使用NVTX注释进行插装,那么分析器将支持指定范围内的数据收集 |
-o | 指定内核protobuf报告的输出文件 |
–metrics | 指定要收集的指标 |
sm_uu inst_executed_pipe_hmmafp32_sum metric显示执行了hmma指令,在每次内核启动时捕获nvtx堆栈。非零值表示使用了一些TensorCore。
举例:
nvprof和nvvp分析工具已被CUDA开发人员广泛用于分析。
您可以在VisualProfiler中分析应用程序。探查器最初显示时间线。然后使用菜单选项 “Run->Collect Metrics and Events” 再选择“Metrics->Multiprocessor” 下的 “Tensor-Precision Function Unit Utilization” ,如图所示:
下面的图显示了在可视分析器中使用TensorCore的内核。
此外,nvprof还支持tensor_precision_fu_utilization度量,它显示了模型每个内核中TensorCore的利用率水平。这个指标首先出现在9.0版CUDA工具包中。
tensor_precision_fu_utilization:在0到10的尺度上执行Tensor Core指令的多处理器功能单元的利用率。
如果要查看哪个内核正在使用tensorCore,请使用以下命令行选项:
./nvprof -m tensor_precision_fu_utilization ./app_name
这将返回执行Tensor cores指令的多处理器函数单元的利用率级别,范围从0到10。任何显示非零值的内核都使用Tensor cores。
注意,只有通过nvprof的volta体系结构才支持度量和事件的分析。图灵体系结构nvprof只支持跟踪功能。使用nsight compute代替在Turing上显示分析度量。