自适应交叉近似(Adaptive Cross Approximation)技术解析
1. 分布式内存处理概述
在分布式内存系统中高效运行需要了解系统的CPU和网络配置。这里讨论的实现方案是针对集群类型的系统,该系统有多个计算节点,每个节点配备多核CPU和大容量内存池,并通过高速网络连接。节点间的通信使用OpenMPI消息传递库,它是消息传递接口(MPI)标准的高性能实现。
与共享内存系统相比,分布式内存平台的优势在于有更大的潜在内存池和更多的处理器。为有效利用内存空间,需将问题分解成小块并相对均匀地分布到各个节点。但这意味着处理过程中,每个节点可能需要其他节点的数据,这些数据要通过网络传输。由于网络速度远低于节点的直接内存访问速度,程序员必须分析和修改核心算法,尽可能减少数据传输。为有效利用每个节点的多核资源,算法还需有合适的并行化策略,让线程保持忙碌,避免因等待数据而闲置。
2. 并行化策略
使用MPI时,应用程序会在所有计算节点上同时启动,每个节点都有多个处理核心。在这种情况下,每个进程类似于共享内存实现中的线程。为有效利用每个节点的核心,设计应用程序有两种可行途径:
1. 单线程程序在每个节点上多次启动,并行化仅在MPI级别进行。
2. 多线程程序在每个节点上启动一次,并行化在MPI级别和进程级别同时进行,这称为混合方法。
开发过程中对两种方法都进行了实验,发现混合方法的整体性能最佳。在进程级别,所有高级ACA操作由单个线程执行,矩阵填充由单独的工作线程池完成,BLAS函数由Intel MKL并行执行。这种方法避免了进程间昂贵的MPI通信,也避免了同一数据在每个节点的内存中多次存储。同时,对相关算法进行了调整,
超级会员免费看
订阅专栏 解锁全文
1126

被折叠的 条评论
为什么被折叠?



