数据中心/云端

使用 NVIDIA Nsight 系统加速数据中心和 HPC 性能分析

当 GPU 启动线程、调度内核和从内存加载时, CPU 异步地向其提供数据、访问网络通信、管理系统资源等等。这只是运行应用程序所需的硬件活动的一小部分——由不同组件组成的管弦乐队以完美的并行方式运行。作为一名开发人员,你是一个硬件管弦乐队的指挥,旨在为最高性能进行协调。

NVIDIA Nsight 系统是一个系统范围的评测工具,可以帮助调整您的硬件管弦乐队。它使应用程序开发人员能够调查相关性、依赖性、瓶颈和资源分配,以确保硬件组件协调工作。它在统一的时间线上可视化吞吐量和性能指标,自动检测性能限制因素,并建议如何解决这些问题

Screenshot of Nsight Systems timeline view showing detailed CPU and GPU performance metrics.
图 1 。 NVIDIA Nsight Systems 是一款具有多种可视化功能的全系统评测工具,可帮助 HPC 开发人员实现更高的 CPU 和 GPU 性能

对于根除单机效率低下的问题, Nsight 系统跟踪是一种有效的方法。但这种工作流程是如何扩展的呢?多节点环境对现代计算工作负载至关重要。多节点评测是针对这些环境的一种分析技术,用于识别可能影响节点的瓶颈和其他性能问题,以及如何协调这些节点。

多节点评测对于高性能计算( HPC )和数据中心工作流,其中具有大量节点的分布式系统用于解决复杂的科学、工程和人工智能问题。通过使用多节点评测技术, HPC 开发人员可以优化其系统的性能,并实现更快、更高效的计算。

在 500 个节点和 5000 个 GPU 的规模上,性能评测似乎令人望而生畏。网络结构和存储设备带来的复杂性只会进一步加剧这一挑战

现已在中公开预览Nsight 系统 2023.2,多节点分析增强了用于大规模计算的优化工具。基于基本的 GPU 、 CPU 、 DPU 和网络评测功能, Nsight Systems 现在提供了一个数据分析框架,可以并行处理集群大小的多节点系统的性能数据

Python 取样

Python 在多节点系统中的受欢迎程度激增。用于处理大型数据集的内置库,以及人工智能和深度学习中的用例,使该语言成为首选。但是优化 GPU 加速的 Python 代码可能很困难。与低级语言相比,它的解释性质和高级抽象以易用性换取性能,再加上繁琐且容易出错的手动采样。当试图理解 CPU 和 GPU 工作之间的关系时,这会变得更加困难,这样您就可以将优化的重点放在最大限度地提高[Z1K1’的使用率上

为了加快 Python 评测,这是多节点性能的一个关键方面, Nsight Systems 现在提供了自动 Python 调用堆栈采样。采样频率可以在 1 赫兹和 2 千赫之间调谐,并且它支持所有架构。它还可以对 CUDA API 调用事件的调用堆栈进行采样

Nsight Systems dashboard view of Python profiling.
图 2:Nsight 系统中的 Python 调用堆栈采样提供了线程调用堆栈的统计细分

节点间通信的网络度量

作为数据在服务器硬件单元之间移动的主要方式,了解网络中的节点间通信将有助于诊断瓶颈。 Nsight Systems 现在可以从NVIDIA Quantum-2 Infiniband交换机,提供高带宽、低延迟的通信

Nsight Systems dashboard view of network sampling.
图 3 。 Nsight Systems 时间线中的 Quantum InfiniBand 开关度量采样

NVIDIA ConnectX 智能网络接口卡 (SmartNICs) 为网络操作提供先进的硬件卸载和加速。 Nsight Systems 监控 NIC 吞吐量,绘制发送和接收的字节数。延长的 NIC 等待时间有力地表明节点间网络需要优化。

Nsight Systems dashboard view of network throughput.
图 4 。 Nsight Systems 分析的一个列中四个 NIC 的数据吞吐量

多节点分析

Network 和 Python metric collection 支持新的多节点评测工作流,该工作流公开整个硬件堆栈以进行优化。数据中心规模的评测通常从单节点代理运行开始,以确保应用程序按预期运行。单个节点上的问题仍然会在多节点级别上出现,但当环境不那么复杂时更容易解决。在此阶段, Nsight Systems 将在统一的时间线上分析 GPU 、 CPU 、 DPU 和 Python 指标,并确定改进措施

当单个节点的性能令人满意时,扩展到几个节点的代理运行将检查网络指标和消息传递接口( MPI )如何影响应用程序。使用 Nsight Systems 多报告视图,您可以在统一的时间线上查看单独的节点跟踪,以可视化它们的关系。

Nsight Systems dashboard view of multi-node profiling.
图 5 。使用 Nsight Systems 多报告视图,您可以看到在不同节点上同时收集的两个跟踪

然后,当前面的步骤完成后,全面的多节点评测就开始了。从集群或多节点系统收集指标会产生令人难以置信的数据量,这些数据可用于监控各种统计数据,包括集群级利用率、排名进度、网络排名计算等。 Nsight Systems 将自动检测本地性能抑制,但也会将它们关联起来,从而得出集群范围的结论,而不是逐个级别的问题。

这些结果是使用分析脚本或“配方”得出的,这些脚本可以自定义以回答特定问题。 Nsight Systems 2023.2 包括几个预加载的配方,例如用于分析 CUDA GPU 内核利用率和 GPU 度量的配方。当优化需求通过运行配方浮出水面时,通过跟踪性能问题是如何在节点中传播的,回到它们的来源,解决它们变得很简单。

最终输出通过嵌入式 Jupyter 笔记本电脑呈现,该笔记本电脑作为选项卡集成在 Nsight Systems 中。 Jupyter 笔记型电脑可以方便地使用表格和图形进行可视化,并与团队成员进行协作。

Nsight Systems dashboard view of a performance heat map.
图 6 。 Jupyter Notebook 生成的多节点 GPU 利用热图
Nsight Systems dashboard view of work distribution.
图 7 。 512 列中的时间分布

开始使用 Nsight Systems

Nsight Systems 2023.2 多节点评测、 Python 评测和网络评测现已可用。下载 NVIDIA Nsight Systems开始

了解有关 NVIDIA GTC 2023 会话的多节点评测工作流程的更多信息,大规模优化:调查和解决多节点工作负载的隐藏瓶颈。您也可以观看视频,使用 NVIDIA Nsight Systems 优化多节点系统工作负载.

要了解 CUDA 开发工具的扩展方式,请查看从宏观到微观: CUDA 开发工具可以发现并解决任何规模的问题.

探索更多NVIDIA GTC 2023 次 NVIDIA Nsight 开发者工具会议.

 

Tags