《OpenACC并行程序设计:性能优化实践指南》一 3.6 第一个并行PIConGPU实现

简介: 本节书摘来自华章出版社《OpenACC并行程序设计:性能优化实践指南》一 书中的第3章,第3.6节,作者:[美] 罗布·法伯(Rob Farber),更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.6 第一个并行PIConGPU实现

下一步,用Vampir打开追踪文件trace.otf2,如图3-8所示。追踪缩略图(右上角)显示只选择了整个程序执行的0.2s,并且重复模式显示了模拟的大概2.5个迭代步骤。中间用颜色编码的活动是主时间轴,它显示了MPI、主机进程(进程1~4)和相应的CUDA上下文(线程1/1-4)。右下角的图例显示了颜色的含义。进程之间的黑线代表MPI消息。进程和线程之间的黑线代表CUDA内存拷贝。可以看出,MPI活动占据了大部分的程序执行时间,而CUDA活动所占时间很少。

screenshot

通过图3-8左上方的工具栏图标选择Vampir要显示的性能数据。有两组显示方式,时间轴显示和统计显示。“时间轴显示”展示沿着水平方向随着时间演化的活动,本例中的主时间轴显示了颜色编码的所有事件流活动(可以是进程、线程或CUDA流)。
默认情况下,颜色代码基于图3-8右下方的功能图例中所示的功能组。对一个事件流,进程时间轴显示调用上下文的时间。计数器时间轴显示与事件流相关联的性能计数器的值。例如,这个值可以是PAPI计数器,也可以是诸如内存分配之类的派生计数器,或者使用Vampir度量编译器创建的任何东西。性能监视器显示所有事件流的时间上下文计数器。
第二种组显示包含表示各种分析数据的统计显示。函数摘要实现函数或函数组之间的运行时间或调用次数的分布。信息摘要提供所有数据传输的统计(主机与设备或MPI进程间数据传输)。其他是进程摘要,例如信息度量、I/O摘要和调用关系。Vampir特性详细说明可以在手册里找到。
Vampir区别于其他标准分析工具的最重要特性,是可以在程序执行时间轴上以任意时间间隔放大。如图3-8右上方缩略视图所示的轨迹摘要(所选间隔由两条黑色条表示)。包含统计信息的所有显示一直会被更新到当前显示的时间间隔。因此,Vampir可以对应程序的任何阶段和极高时间分辨率进行应用程序分析。通过右键单击显示来配置Vampir如何显示信息。左键单击显示中的任何东西都会出现上下文视图,将会显示所选项目的详细信息(包含开始/结束时间、持续时间、函数名称、文件名、行号、消息大小等)。
图3-8所示的追踪文件记录了第一次尝试使用MPI并行化单GPU PIConGPU代码以增加模拟面积(弱扩展)运行的结果。追踪显示了首次并行尝试的常见问题:顺序任务执行。这种情况下,可以看到MPI活动和CUDA存储器拷贝占据主机执行时间,而GPU使用率相当低。
MPI活动占据很多时间的原因是用了很长时间传递相当小的消息(可以使用消息摘要来分析)。这也说明在GPU上PIConGPU计算时间很快,不能隐藏MPI传输时间。为了减少传输时间,唯一的方案就是传输延时。这种情况下,用Inifinband网络替换集群中的1GB以太网可提供了更快的MPI通信。
另一个问题是相当长的时间用于同步GPU与主机间的数据拷贝(在设备上启动一组内核之前主机进程右边的条)。对于这种情况,计算和数据传输更好地重叠交织将增加总吞吐量。GPU利用率低本身不是问题,而是主机影响不能为GPU提供足够的计算量,因此GPU大部分时间在等待数据。

相关实践学习
在云上部署ChatGLM2-6B大模型(GPU版)
ChatGLM2-6B是由智谱AI及清华KEG实验室于2023年6月发布的中英双语对话开源大模型。通过本实验,可以学习如何配置AIGC开发环境,如何部署ChatGLM2-6B大模型。
相关文章
|
网络协议 Linux 网络架构
【Cisco Packet Tracer】划分子网
【Cisco Packet Tracer】划分子网
302 0
|
11月前
|
存储 人工智能 自然语言处理
AI经营|多Agent择优生成商品标题
商品标题中关键词的好坏是商品能否被主搜检索到的关键因素,使用大模型自动优化标题成为【AI经营】中的核心能力之一,本文讲述大模型如何帮助商家优化商品素材,提升商品竞争力。
1239 62
AI经营|多Agent择优生成商品标题
|
分布式计算 API 对象存储
Ray是一个开源的分布式计算框架,用于构建和扩展分布式应用。它提供了简单的API,使得开发者可以轻松地编写并行和分布式代码,而无需担心底层的复杂性。
Ray是一个开源的分布式计算框架,用于构建和扩展分布式应用。它提供了简单的API,使得开发者可以轻松地编写并行和分布式代码,而无需担心底层的复杂性。
2209 11
|
边缘计算 人工智能 测试技术
什么是虚拟机技术?
拟机技术作为现代计算环境中的重要组成部分,极大地丰富了我们对资源管理和系统部署的理解与实践。本文将深入探讨虚拟机的定义、工作原理、应用场景、优势、主要技术以及未来发展趋势,帮助读者全方位地理解虚拟机这一强大技术。
629 7
|
机器学习/深度学习 PyTorch 算法框架/工具
【机器学习】Softmax回归探索
【机器学习】Softmax回归探索
487 8
|
应用服务中间件 Go 数据安全/隐私保护
[grpc]使用mTLS加密认证
[grpc]使用mTLS加密认证
190 0
|
JavaScript 前端开发 开发者
【JavaScript】JavaScript中call、apply与bind的区别:进阶特性与应用场景
【JavaScript】JavaScript中call、apply与bind的区别:进阶特性与应用场景
275 0
|
图形学 Python 容器
【PyQt5桌面应用开发】3.Qt Designer快速入门(控件详解)
【PyQt5桌面应用开发】3.Qt Designer快速入门(控件详解)
2751 0
|
存储 Python
Python系列(4)—— 全局变量
Python系列(4)—— 全局变量
|
并行计算 程序员 API
Python多进程编程:利用multiprocessing模块实现并行计算
Python多进程编程:利用multiprocessing模块实现并行计算
1171 0