《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大部分时间在等待数据。

相关实践学习
基于阿里云DeepGPU实例,用AI画唯美国风少女
本实验基于阿里云DeepGPU实例,使用aiacctorch加速stable-diffusion-webui,用AI画唯美国风少女,可提升性能至高至原性能的2.6倍。
相关文章
|
并行计算 异构计算
《OpenACC并行程序设计:性能优化实践指南》一 3.9 增加GPU任务并行
本节书摘来自华章出版社《OpenACC并行程序设计:性能优化实践指南》一 书中的第3章,第3.9节,作者:[美] 罗布·法伯(Rob Farber),更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1333 0
|
并行计算 安全 程序员
《OpenACC并行程序设计:性能优化实践指南》一 1.1 简单的数据并行循环
本节书摘来自华章出版社《OpenACC并行程序设计:性能优化实践指南》一 书中的第1章,第1.1节,作者:[美] 罗布·法伯(Rob Farber),更多章节内容可以访问云栖社区“华章计算机”公众号查看。
3138 0
|
程序员 C++
《OpenACC并行程序设计:性能优化实践指南》一 1.2 简单的任务并行示例
本节书摘来自华章出版社《OpenACC并行程序设计:性能优化实践指南》一 书中的第1章,第1.2节,作者:[美] 罗布·法伯(Rob Farber),更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1446 0
|
测试技术 异构计算
《OpenACC并行程序设计:性能优化实践指南》一 导读
这是一本关于并行编程的书,不仅仅介绍OpenACC语法或从文档中收集的信息,更介绍了如何编写实际的、高性能的以及可移植的程序,这些程序可以运行在从CPU到GPU的大量设备上。具体而言,书中演示了使用PGI、Cray和PathScale等供应商提供的编译器编译示例代码,并在Intel x86处理器、Cavium 96核64位ARMv8处理器芯片集和NVIDIA GPU上运行。
2217 0
|
并行计算
《OpenACC并行程序设计:性能优化实践指南》一 3.11 小结
本节书摘来自华章出版社《OpenACC并行程序设计:性能优化实践指南》一 书中的第3章,第3.11节,作者:[美] 罗布·法伯(Rob Farber),更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1088 0
|
异构计算
《OpenACC并行程序设计:性能优化实践指南》一 3.8 优化GPU内核
本节书摘来自华章出版社《OpenACC并行程序设计:性能优化实践指南》一 书中的第3章,第3.8节,作者:[美] 罗布·法伯(Rob Farber),更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1032 0
|
异构计算
《OpenACC并行程序设计:性能优化实践指南》一 2.4 优化循环
本节书摘来自华章出版社《OpenACC并行程序设计:性能优化实践指南》一 书中的第2章,第2.4节,作者:[美] 罗布·法伯(Rob Farber),更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1223 0
|
并行计算 异构计算
《OpenACC并行程序设计:性能优化实践指南》一 3.10 使用Score-P和Vampir记录OpenACC运行时事件
本节书摘来自华章出版社《OpenACC并行程序设计:性能优化实践指南》一 书中的第3章,第3.10节,作者:[美] 罗布·法伯(Rob Farber),更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1492 0
|
测试技术 调度 C++
《OpenACC并行程序设计:性能优化实践指南》一 1.6 控制并行资源
本节书摘来自华章出版社《OpenACC并行程序设计:性能优化实践指南》一 书中的第1章,第1.6节,作者:[美] 罗布·法伯(Rob Farber),更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1260 0
|
程序员 C++ 异构计算
《OpenACC并行程序设计:性能优化实践指南》一 2.2 描述并行度
本节书摘来自华章出版社《OpenACC并行程序设计:性能优化实践指南》一 书中的第2章,第2.2节,作者:[美] 罗布·法伯(Rob Farber),更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1373 0