GPU 性能可变性分析框架

大家读完觉得有帮助记得关注和点赞!!!

抽象。

分析来自 GPU 分析器的大规模性能日志通常需要数 TB 的内存和数小时的运行时间,即使是基本摘要也是如此。这些限制会阻止及时洞察,并阻碍将性能分析集成到自动化工作流程中。现有的分析工具通常按顺序处理数据,这使得它们不适合跟踪复杂性和容量不断增长的 HPC 工作流。我们引入了一个分布式数据分析框架,该框架可随数据集大小和计算可用性而扩展。我们的系统没有将数据集视为单个实体,而是将其划分为可独立分析的分片,并在 MPI 等级之间并发处理它们。这种设计减少了每个节点的内存压力,避免了中央瓶颈,并支持对高维跟踪数据的低延迟探索。我们将该框架应用于来自真实 HPC 和 AI 工作负载的端到端 Nsight Compute 跟踪,展示了其诊断性能变化的能力,并揭示了内存传输延迟对 GPU 内核行为的影响。

1.介绍

GPU 具有并行处理能力,是高性能计算 (HPC) 工作负载的关键加速器。对 GPU 驱动的应用程序进行高效分析对于识别性能瓶颈、管理资源和优化 GPU 利用率至关重要。但是,高级分析工具生成的性能日志会迅速增长到 TB,使将整个数据集加载到单节点内存的传统顺序分析方法不堪重负。当前的方法严重依赖增量处理或重复的基于磁盘的作,严重限制了可扩展性和效率。

为了克服这些限制,我们提出了一个专为 GPU 性能日志设计的分布式数据驱动分析框架。我们的解决方案将大型 SQLite3 表划分为较小的分片,跨多个 MPI 等级并发处理。这允许每个节点仅分析一小部分数据,从而显著降低每个节点的内存需求和计算延迟,从而实现对大量 GPU 数据集的可扩展、高效分析。

2.背景

2.1.Nvidia Nsight 分析

NVIDIA Nsight 分析(Nsight Systems 和 Nsight Compute)跟踪 CPU-GPU 交互、内核执行、内存传输和硬件使用情况。使用 Gueroudji 等人的数据集,将分析数据组织到 CUPTI 表中(表 1)。(Gueroudji 等人,2024).在数据集中,

(1) ACTIVITY_KIND_KERNEL记录内核启动、时间戳、设备和流 ID 以及资源使用情况;

(2) ACTIVITY_KIND_MEMCPY记录内存传输、时间戳、大小、方向和流 ID;

(3) TARGET_INFO_GPU报告 GPU 属性,例如内存大小、带宽、SM 数量和计算能力。

Profiling Rank内核MEMCPY图形处理器# 已加入
第 0 名842054107045493 分钟
第 1 名842054107099493 分钟
第 2 名8420541070545493 分钟
第 3 名842054107045493 分钟

表 1.分析 Ranks 和关联的 SQLITE 表。KERNEL、MEMCPY、GPU 分别定义为 CUPTI_ACTIVITY_KIND_KERNEL、

CUPTI_ACTIVITY_KIND_MEMCPY

TARGET_INFO_GPU 表。# 每次“左”加入后加入的实体的大致数量

3.设计与实施

我们设计了一个两阶段管道,包括 (i) 提取和分片执行跟踪的数据生成阶段,以及 (ii) 整合和分析数据以揭示异常行为的数据聚合阶段。

数据生成我们的管道识别基本的 SQLite3 表并提取内核时间戳以定义数据集边界。我们将整个时间范围均匀划分为N非重叠分片,每个分片按时间戳对内核执行进行分箱。鉴于PMPI 排名,我们选择块分区而不是循环分区,因为数据集是静态的,并且工作负载的可预测性很高。数据块分区将连续的分片分配给每个等级,从而减少查询开销,提高数据局部性,并实现高效的 SQL 查询执行。每个排名都独立处理其分配的分片,并将查询结果保存到名称一致的 parquet 文件中,从而促进无缝的下游聚合。

数据聚合我们通过定义一个全局字典来开始聚合,其中时间戳作为键和固定的用户定义持续时间 (我⁢n⁢t⁢e⁢r⁢v⁢一个⁢l=1⁢s默认情况下)。每个等级都会加载其分配的NPparquet 文件,将样本映射到相应的时间分片。随后P排名以循环方式协作计算统计指标(最小值、最大值、标准偏差),从而均匀平衡工作负载并最大限度地减少争用。这些共享的统计数据有助于识别异常,我们使用四分位距 (IQR) 从中选择前 5 个异常分片(惠利,2014)方法。

4.初步结果

为了评估我们的管道,我们使用了德克萨斯州高级计算中心 (TACC) 的 Lonestar6 超级计算机。Lonestar6 超级计算机有 560 个计算节点,每个节点配备两个 AMD EPYC 7763 处理器(总共 128 个内核)和 256 GB DDR4 内存。有 84 个 GPU 节点,每个节点具有相同的 CPU 和 3 个 NVIDIA A100 GPU(每个 40 GB HBM2)

所有等级的 Memory Stall Duration  绘制了所有四个等级的内存停顿持续时间,y 轴上是停顿持续时间,x 轴上是经过的运行时间(以秒为单位)。该图显示了在多个 rank之间同时发生的持续内存停顿,这表明存在同步问题或内存带宽争用。根据目视检查,我们选择 Rank 2 进行详细分析。

内存停顿与内核执行关系 我们从 Rank 2 中分离出前 5% 的最高可变性区间,以分析内存停顿和内核执行之间的关系。该图证实了 Device-to-Host 和 Host-to-Device 传输占主导地位,这表明由于批处理效率低下导致了频繁的乒乓模式。相比之下,稀疏的设备到设备传输表明 GPU 内部作不频繁,突出了通过共享内存重用或平铺进行优化的机会。

开销 比较了不同 MPI 配置中两个阶段的持续时间:数据生成和数据聚合。我们发现,随着 MPI 秩数量的增加,数据生成和聚合时间都会减少。这证明我们的管道是 可扩展以处理大量数据。

5.结论

我们开发了一个分布式框架,通过将 SQLite3 表分区为分片来并发分析 GPU 性能日志,从而减少内存使用和延迟。分析了 93M 个样本,我们确定了导致内存停顿的时间戳和实体。未来的工作将侧重于通过消除中间 I/O 瓶颈来提高可扩展性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/912059.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/912059.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis主从复制原理

一、Redis主从复制概述 Redis主从复制(Master-Slave Replication)是Redis实现高可用性和读写分离的基础架构。通过主从复制,数据可以从一个Redis服务器(主节点)复制到一个或多个Redis服务器(从节点&#x…

将ONNX模型转换为(OPENMV可用的格式)TensorFlow Lite格式

将ONNX模型转换为TensorFlow Lite格式 在深度学习模型部署过程中,我们常常需要将模型从一种格式转换为另一种格式,以适应不同的硬件平台和应用场景。本文将详细介绍如何将ONNX格式的模型转换为TensorFlow Lite格式,以便在移动设备或嵌入式设…

EXILIUM×亚矩云手机:重构Web3虚拟生存法则,开启多端跨链元宇宙自由征途

在链游与元宇宙赛道竞争加剧的当下,EXILIUM凭借其去中心化开放世界、链上资产确权与玩家自治经济系统,成为Web3原住民逃离“中心化牢笼”的首选之地。然而,其多链交互门槛高、跨设备身份管理复杂、链上安全风险频发等问题,让普通玩…

用3个字符表示2字节二进制数据

把1字节二进制数据&#xff0c;用可打印字符表示&#xff0c;可用十六进制。这样一来&#xff0c;1字节变2字节&#xff0c;2倍。 2字节的二进制数据&#xff0c;可以用3个字符来表示&#xff0c;1.5倍。 2562略小于413&#xff0c;65536<68921 需要准备41个符号 包括&…

第 3 章:神经网络如何学习

第 3 章&#xff1a;神经网络如何学习 在第二章中&#xff0c;我们详细了解了神经网络的静态结构&#xff1a;由神经元组成的层&#xff0c;以及连接它们的权重和偏置。现在&#xff0c;我们将进入整个教程最核心的部分&#xff1a;神经网络是如何从数据中"学习"的&…

RocketMQ 消息长轮询

文章目录 问题所在&#xff1a;消费者如何高效地获取消息&#xff1f;解决方案&#xff1a;长轮询 (Long Polling - “等待与观察”模式)长轮询 vs. 短轮询&#xff08;可视化对比&#xff09;为什么这个机制对 RocketMQ 这么好&#xff1f;关键的配置参数 让我们用一个简单易懂…

TensorFlow Serving学习笔记3: 组件调用关系

一、整体架构 TensorFlow Serving 采用模块化设计&#xff0c;核心组件包括&#xff1a; Servables&#xff1a;可服务对象&#xff08;如模型、查找表&#xff09;Managers&#xff1a;管理 Servable 生命周期&#xff08;加载/卸载&#xff09;Loaders&#xff1a;负责 Ser…

视图、索引介绍

目录 1、视图 1.1、什么是视图 1.2、创建视图 1.3、使用视图 1.4、修改视图 1.5、删除视图 1.6、视图的优点 2、MySQL存储结构 2.1、MySQL中的页 3、索引 3.1、索引的数据结构 3.2、B树 和 B树 3.3、B树在MySQL索引中的应用 3.4、索引分类 1、视图 1.1、什么是视…

QT6(46)5.2 QStringListModel 和 QListView :列表的模型与视图的界面搭建与源代码实现

&#xff08;154&#xff09;理论讲解 &#xff1a; 例题程序的界面搭建 &#xff1a; &#xff08;155&#xff09;以下开始完善代码 &#xff0c;先准备要给 model 的源数据&#xff0c;一些字符串 &#xff1a; 给出该头文件&#xff0c;以全面展示其内容&#xff1a; #i…

C++设计模式(GOF-23)——03 C++观察者模式(Observer / Event、发布-订阅模式、事件模式)

文章目录 一、观察者模式概述二、传统代码 vs 观察者模式对比1. 传统实现&#xff08;紧耦合&#xff09;2. 观察者模式实现&#xff08;松耦合&#xff09; 三、Mermaid 类图说明四、核心设计要点1. 接口分层设计2. 通知机制实现3. 扩展性验证 五、应用场景与注意事项适用场景…

海外 AI 部署:中国出海企业如何选择稳定、安全的云 GPU 基础设施?

2025年&#xff0c;中国 AI 企业在模型训练、产品落地和创新应用上不断刷新人们的认知。DeepSeek-R1、Qwen3 等国产大模型密集亮相&#xff0c;国内大模型产业热潮持续升温。与此同时&#xff0c;一个现实的问题也在被越来越多企业关注&#xff1a;模型虽然训练得起&#xff0c…

AI绘画工具实测:Stable Diffusion本地部署指

对于想要深度体验AI绘画的创作者来说&#xff0c;本地部署Stable Diffusion能带来更自由的创作空间。本文将详细介绍Windows系统下的部署流程&#xff0c;帮助你在个人电脑上搭建专业的AI绘画环境。 硬件准备与基础环境配置 部署前需确认电脑配置&#xff1a;建议NVIDIA显卡&…

macOS - 快速上手使用 YOLO

文章目录 一、关于 yolo二、安装三、命令行使用官方示例yolo cfgyolo predict 四、Python 调用results 数据 一、关于 yolo YOLO(YOLO&#xff08;You Only Look Once&#xff09;是一种流行的物体检测和图像分割模型&#xff0c;由华盛顿大学的约瑟夫-雷德蒙&#xff08;Jose…

<script setup> 语法糖

下面&#xff0c;我们来系统的梳理关于 Vue 3 <script setup> 语法糖 的基本知识点&#xff1a; 一、<script setup> 核心概念 1.1 什么是 <script setup>&#xff1f; <script setup> 是 Vue 3 中 Composition API 的编译时语法糖&#xff0c;它通过…

MYSQL-InnoDB逻辑存储结构 详解

InnoDB逻辑存储结构 段—区—页—行 表空间&#xff1a; 默认情况下InnoDB有一个共享表空间ibdata1&#xff0c;所有数据放入这个表空间&#xff0c;如果开启了innodb_file_per_table&#xff08;默认ON&#xff09;&#xff0c;每张表都可以放到一个单独的表空间&#xff0…

[特殊字符] Python 批量合并 Word 表格中重复单元格教程(收货记录案例实战)

在日常办公中&#xff0c;Word 表格中常出现重复的“供应商名称”或“物料编码”&#xff0c;会导致表格冗余且视觉混乱。这时候&#xff0c;用 Python 自动合并重复单元格可以大幅提升表格专业度和可读性。本篇给大家演示如何用 python-docx 实现该功能。 ✅ 功能概览 自动读取…

从零构建Node.js服务托管前端项目

下面是一个完整的指南&#xff0c;教你如何从零开始构建一个Node.js服务来托管前端项目&#xff0c;并代理API请求到其他服务器。 1. 项目初始化 # 创建项目目录 mkdir node-proxy-server cd node-proxy-server# 初始化npm项目 npm init -y# 安装必要依赖 npm install expres…

Lynx vs React Native vs Flutter 全面对比:三大跨端框架实测分析

一文看懂三大热门跨端技术的历史渊源、架构机制、开发体验、包体积对比与性能评估。 我陪你用实测数据带你理性选型&#xff0c;不踩坑&#xff0c;不盲信。 1. 框架简介&#xff1a;它们是谁&#xff1f;来自哪里&#xff1f;干嘛用&#xff1f; 框架名称所属公司发布时间初衷…

CKESC的ROCK 180A-H 无人机电调:100V 高压冗余设计与安全保护解析

一、核心技术参数与性能指标 电压范围&#xff1a;支持 12~26S 锂电&#xff08;适配 110V 高压系统&#xff09;电流特性&#xff1a; 持续工作电流&#xff1a;90A&#xff08;特定散热条件&#xff09;瞬时耐流&#xff08;1 秒&#xff09;&#xff1a;220A&#xff0c;3 …

优化 ArcPy 脚本性能

使用并行处理 如果硬件条件允许&#xff0c;可以使用 Python 的并行处理模块&#xff08;如 multiprocessing&#xff09;来同时处理多个小任务。这样可以充分利用多核处理器的优势&#xff0c;提高脚本的执行效率。 import multiprocessing def process_raster(raster):arcpy…