首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于 GPU 的 OpenPOWER 架构的性能增强

基于 GPU 的 OpenPOWER 架构的性能增强

IBM、NVIDIA 和 Mellanox 合作推出的加速 OpenPOWER 系统提供了新的可伸缩性和性能潜力。这些系统拥有                GPU(协处理器)来提高系统的性价比。在加速的系统中,一部分应用程序在处理器上运行,剩余部分在协处理器或 GPU 上运行。
要将工作引入到 GPU 上,程序员应在应用程序内调用 CUDA 函数(用于在 GPU 上声明数组,将数据从 CPU 复制到 GPU,以及从 GPU                复制到 CPU 等)。这并不轻松,因为需要修改代码、感知 CUDA 操作,以及编译。尽管 OpenACC                指令(通过基于指令的引入)让工作变得更轻松,但它仍需要程序员理解应用程序和它的流,然后决定可将应用程序的哪些部分引入到 GPU。
启用了 CUDA 的                ESSLESSL(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每个节点的核心数20CPU 频率4.02 GHzGPUNVIDIA Tesla P100每个节点的 GPU 数4ESSL5.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/binPATH
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 的情况下)
返回列表