随着计算技术和存储技术的飞速发展,高性能计算机使得科学家能够构造高精度的数学模型,进行大规模的模拟计算,产生了太字节(TB,1TB=1012Byte)甚至千万亿字节(PB,1PB=1024TB)量级的科学数据集。并行可视化通过一系列复杂的算法将数据实时或交互地绘制成高精度的图像,通过交互地调整可视化参数,有效地结合科学家的专业领域知识,快速验证科学猜想并获得新的科学发现,已广泛应用于气候模拟、工程仿真、生物医药等领域。
并行可视化主要包括4种基本技术:①数据流线化将数据划分为相互独立的子块,并依次处理这些子块,通常结合有效的缓存机制,减少内存交换,例如离核渲染。②任务并行化将一个算法分解为多个独立的子任务,平行处理这些子任务。③管道并行化同时处理面向不同数据子块的多个独立的任务模块。④数据并行化是将数据分块后,进行平行处理,通常称为单程序多数据流模式,具有较高的并行性和可扩展性。例如,三维向量场的流线并行可视化的关键是并行处理粒子追踪,其基本思想是对三维向量场数据进行划分,并分配到不同的计算节点,每个计算节点在自身的数据中独立进行粒子跟踪,节点之间需要进行通信以交换在分配数据之外的粒子。采用的划分和分配方案,需与数据的访问一致,即尽可能让节点只使用自身的数据进行粒子跟踪,减少数据交换,如层次粒子跟踪法。
并行可视化的图形绘制常采用大量的计算节点提高可视化系统的交互速度,根据绘制流水线中图元排序的位置,通常可分为首排序、中排序和末排序三类。首排序算法在图元分配前进行排序,基本流程包括首先将图像空间(绘制屏幕)分割为不相交的区域,分配到不同计算节点上,然后每个计算节点独立绘制各自分配到的图像区域,最后每个计算节点的绘制图像拼接为最终图像。首排序算法降低了计算节点之间的通讯开销,但计算节点绘制的数据量可能会超过其内存大小,同时,在用户交互时,每个计算节点需要重新读取与分配到的图像区域相关的数据。中排序算法的数据分配发生在绘制流水线的几何处理和扫描转换阶段,在并行可视化中较少使用。末排序算法首先将数据空间分割为子块,分配到不同的计算节点上,然后每台计算节点独立绘制各自分配到的数据,最后所有的计算节点将各自绘制的图像汇总并合并成最终图像,即图元排序在数据分配后的图像合成阶段完成。末排序算法具有良好的可扩展性和均衡的工作负载,其不足在于图像合成阶段,直接传送需要相互发送大量的图像数据。二分交换合成法以传统的二叉树的形式进行图像合成,对于N个计算节点,仅需NlogN次通讯。为了使二分交换合成法不受2的指数次方计算节点数的限制,2-3交互合成法构造2-3树,在树的每一层的节点之间使用直接传送法进行数据交换,在相同通讯开销下,对计算节点数目没有限制。三维标量场的并行可视化通常将数据分割成均匀大小的子块,并结合多分辨率表示方法,使用首排序或末排序算法,实现交互地可视化。
传统的并行可视化基本上是一种后处理模式,即科学模拟计算输出海量数据结果,存储在磁盘上,在计算结束后,读取磁盘中的数据进行可视化。数据传输是整个可视化过程的瓶颈,I/O占据了绝大部分的计算时间。原位可视化是指在计算过程中产生的数据不经过存储而直接在计算模拟的同一节点上进行实时可视化的过程,是一种针对模拟计算产生的超大规模数据的可视化模式。它将模拟计算和可视化紧密结合,其计算生成的数据在原位被缩减和处理(如绘制成图片或抽取特征进行数据过滤)。缩减后的数据通常比原始数据小多个数量级,极大地降低了数据传输和存储的成本,提高了可视化效率。