使用工程和科学子程序库 (ESSL) 就地加速功能,实现基于 GPU 的 OpenPOWER 架构的性能增强

IBM、NVIDIA 和 Mellanox 合作推出的加速 OpenPOWER 系统提供了新的可伸缩性和性能潜力。这些系统拥有 GPU(协处理器)来提高系统的性价比。在加速的系统中,一部分应用程序在处理器上运行,剩余部分在协处理器或 GPU 上运行。

要将工作引入到 GPU 上,程序员应在应用程序内调用 CUDA 函数(用于在 GPU 上声明数组,将数据从 CPU 复制到 GPU,以及从 GPU 复制到 CPU 等)。这并不轻松,因为需要修改代码、感知 CUDA 操作,以及编译。尽管 OpenACC 指令(通过基于指令的引入)让工作变得更轻松,但它仍需要程序员理解应用程序和它的流,然后决定可将应用程序的哪些部分引入到 GPU。

启用了 CUDA 的 ESSL

ESSL(Engineering and Scientific Subroutine Library 工程和科学子程序库)和 Parallel ESSL 是最新的数学子程序的集合,它们专为改善基于 IBM ® POWER ® 处理器的服务器上的工程和科学应用程序性能而设计。ESSL 和 Parallel ESSL 通常用在航空宇宙、汽车、电子、石油、公用事业和科学研究行业中。

为了实现对启用了 GPU 的加速 OpenPOWER 架构的支持,ESSL 的新版本(例如 V5.5)现已启用 GPU。这个 ESSL 版本将一个数学函数子集引入到 GPU,以提高计算速度,然后收集回 CPU 上的结果。该过程是无缝的,而且对用户透明。不需要修改应用程序和编译过程。只有在链接阶段,才需要链接启用了 CUDA 的 ESSL(例如 libesslsmpcuda.so)而不是 ESSL(例如 libessl.so)。本文将演示如何通过基于 CUDA 的 ESSL 来挖掘基于 GPU 的 OpenPOWER 架构性能的过程,以及获得的性能提升。

系统配置

为了演示启用了 CUDA 的 ESSL 的优势,我们使用了 IBM S822LC。表 1 提供了该系统的规格。

表 1. S822LC 系统细节
操作系统 RHEL 7.3
每个节点的核心数 20
CPU 频率 4.02 GHz
GPU NVIDIA Tesla P100
每个节点的 GPU 数 4
ESSL 5.5

示例程序

Crossroads/NERSC-9 DGEMM 计算基准测试(版本:1.0.0)

Crossroads/NERSC-9 Memory Bandwidth 基准测试是一个简单的单节点多线程稠密矩阵乘法基准测试。该代码旨在演示一个系统在持续计算情况下的高浮点计算速率。

编译

图 1. Makefile 显示了启用了 CPU 的 ESSL 库的链接

点击查看大图

图 2. Makefile 显示了启用了 CPU 和 GPU 的 ESSL 库的链接

点击查看大图

执行

本节将描述 DGEMM 基准测试的环境设置和执行。

环境设置

为执行设置了以下环境变量。

export PATH=/usr/local/cuda/bin:$PATH
export OMP_NUM_THREADS=20
export OMP_PLACES={0:20:8}
export OMP_WAIT_POLICY=active
export OMP_PROC_BIND=TRUE
unset  CUDA_VISIBLE_DEVICES
export CUDA_VISIBLE_DEVICES=0,1,2,3

运行命令

可执行程序/二进制程序 (mt-dgemm) 接受矩阵的大小作为输入参数。以下命令可对一个 4096 X 4096 矩阵执行矩阵乘法。
./mt-dgemm 4096

结果

在本节中,详细给出了对 DGEMM 执行以下操作时 DGEMM 代码的性能:

  • 不使用 ESSL 进行编译
  • 链接到 ESSL
  • 链接到启用了 CUDA 的 ESSL(参见表 2)

启用了 GPU 的 ESSL 的性能比仅支持 CPU 的 ESSL 版本高 5 到 6 倍

表 2. 性能比较 [矩阵大小 (N) = 4096]
时间(以秒为单位) GFLOPS 计算的 FLOPS
不使用 ESSL 1287.04 3.20 4124175237120
ESSL SMP – 仅支持 CPU 8.67 475.22 4124175237120
ESSL SMP – 启用 CUDA
(使用 4 个 GPU)
1.62 2535.28 4124175237120
图 3. 通过 NVIDIA Visual Profiler (NVVP) 利用 GPU(使用 libesslcudasmp 的情况下)

点击查看大图

参考资料

  • 参阅以下文档了解 如何使用 ESSL SMP CUDA 库
  • 要获取基准测试代码,请联系 Joan McComb,他是 ESSL 开发主管。
是白的 我是一个勤奋的爬虫~~
{{uname}}

-----------到底了-----------