没有人否认,分布式集群技术让高性能计算在不断突破峰值纪录的同时,迅速走向普通大众,上世纪80-90年代还是巴统组织的禁运技术,现在已经高校、科研等领域的普通生产工具。因而有人认为,既然集群技术能够以scale out的方式,用低性能设备累加出高性能表现,那么scale up的大型服务器已经没有用武之地。但是事实真是这样吗?
重卡之于轻卡
集群技术的思想很简单,就是用 “N台轻型卡车协同完成一台重卡的运载任务”。但是10台轻卡并不等于一台重卡,现实中有许多无法分割的大型货物离不开重卡,同样,高性能计算中也有很多计算任务,不能有效分布并行化,而离不开高扩展、高性能的大服务器,这些服务器在高性能计算中被称为胖节点。当前高性能的胖节点有比例不断增大的趋势,这主要源于Open-MP计算程序的广泛应用,以及胖节点在完成大型计算任务时的优势。
大型服务器在高性能计算应用中与中低端服务器的关键区别就是多处理器(8颗以上)共享大容量内存(通常为4路及以下服务器的2倍以上)在进行大模型计算时,大内存允许中间数据存储在内存中,而不需要和硬盘交换数据,可以减少I/O频度,明显提高计算速度。有时I/O问题是大问题求解的杀手,因此从技术上看,大型服务器设备具有更大优势。但是,真正导致高性能计算离不开大服务器的,是广泛应用的Open-MP程序。
大服务器与Open-MP
基于Open-MP开发编译的应用在CAE、计算化学、生命科学、石油勘探、环境科学等行业领域随处可见。Open-MP是一个共享存储方式的并行编程标准,它采用“制导语句”的方式实现,即在原有的串行程序中插入一些指导并行的语句,因此,Open-MP非常适合将原有的串行程序改造为并行程序。
当前GCC、Intel、PGI、MS VS.net等主流编译工具均提供对Open-MP的支持。但是Open-MP只适用于硬件共享存储的计算设备,如多核芯片、多处理器节点等,而不能跨节点运行,因此Open-MP程序离不开多处理器共享容量大内存的大型服务器。
- 第1页:重卡之于轻卡