ParaView是一款开源的通用数据分析和可视化工具,用于处理各种类型的科学和工程数据集。它可读取多种数据格式,常见的如VTK、CSV、XDMF等。同时,ParaView也是一个跨平台的工具,不仅支持Windows、Linux和Mac OS等操作系统,还可以在多种计算机架构上运行,如x86、POWER、ARM等。支持这些并行架构意味着ParaView可以并行处理庞大的数据集,收集各进程上的结果,并将其可视化。在可视化方面,ParaView提供了许多通用的可视化技术用于显示和分析工程数据集,如切片、等值面、流线、轮廓、高级渲染等。本文主要介绍ParaView在神工坊平台上的使用,通过对算例热点函数的性能加速分析,发现增加GPU数量对数据I/O、数据生成和数据提取操作的并行加速效果非常可观。
1 什么是可视化
2、等值面(Isosurface)是将数据集中 特定数值的表面提取出来,以显示数据的连续性或离散性。根据需求,设置不同的等值面数值。如下图所示。
3、流线(Streamlines)是根据数据集中的矢量场信息,绘制流线以显示流体或气体的流动路径和速度。可以根据需要调整流线的密度和长度。如下图所示。
高级渲染(Advanced Rendering)即是提供各种高级的渲染技术,如体绘制、体积渲染、阴影、反射等,以增强可视化效果和表达能力。
2 如何在神工坊平台上使用ParaView进行并行渲染?
首先,用户需要在神工坊平台上运行ParaView实例,具体操作如下图(点击登录神工坊平台)。神工坊目前已经为用户完成并行运行模式的配置,用户只需要选择适合的CPU和GPU数量即可开始体验。
3 GPU性能加速对比分析
本文通过展示水下机器人算例流场的可视化过程,对GPU性能加速效果进行对比。该算例描绘的是水下机器人在静水域中,上方四个螺旋桨旋转引起的流场演化过程。源数据为某时间步,整个流场的速度场。我们对速度场在某一平面进行切片并且叠加上四个螺旋桨的涡量等值面。可视化结果如下图所示。
上图为在每个处理器上,等值面绘制过程中每个步骤的耗时。
下面将展示不同资源配置下,切片和等值面绘制在数据I/O、生成、提取、渲染上的耗时,从而说明增加GPU对上述四个部分的加速效果。
3.1 数据I/O
GPU数量操作 | 1 | 2 | 4 | 8 |
X3R::RD | 69.23s | 31.60s (119%) | 22.64s(205%) | 12.44s (456%) |
3.2 数据生成
GPU数量操作 | 1 | 2 | 4 | 8 |
Execute Slice | 17.39s | 8.66s(101%) | 4.42s(293%) | 2.17s(701%) |
Execute Contour | 38.42s | 20.23s(89.9%) | 10.15s(377%) | 6.5s(491%) |
3.3 数据提取
GPU数量操作 | 1 | 2 | 4 | 8 |
Slice Update | 0.661s | 0.363s(82%) | 0.332s(99%) | 0.147s(350%) |
Contour Update | 2.935s | 1.619s(81%) | 1.221s(140%) | 0.843s(248%) |
3.4 数据渲染
GPU数量操作 | 1 | 2 | 4 | 8 |
Slice Still Render | 0.22s | 0.28s | 0.25s | 0.34s |
Contour Still Render | 1.05s | 0.88s | 0.9s | 0.98s |
4 结论
综上所述,通过对这些热点函数的性能分析,可以看到增加GPU数量对数据I/O、数据生成和数据提取操作的并行加速效果非常可观。考虑到本次展示的数据集较小,仅为6000万网格,可以推断,选用更为精细的数据集则加速效果更为明显。