考虑更自由— 不用禁锢在别人的roadmap里. PGI 编译器和工具提供了性能和功能帮助你在最新的多核CPU上开发高性能并行应用,包含了最近发布的SPEC OMP 2012基准套件性能,还包含GCC4.7的1.5倍性能。具备一个理想的跨Linux、Windows和OS X的用户界面,并且支持Intel 和AMS CPU,PGI为您的用户和系统提供了完整的HPC解决方案,从笔记本电脑和移动工作站到全球最大的超级计算机。
考虑更快速 — PGI 加速编译器是您通向多核CPU和GPU及加速器组合的高性能异构系统的桥梁。PGI提供业界对GPU和加速器应用开发最全面的支持,包括了OpenACC指令、CUDA Fortran和CUDA-X86. 如今,PGI已经为NVIDIA最新的开普勒GPU提供全面的支持,并且即将支持AMD GPU和Intel Xeon Phi。PGI 是HPC开发者将应用移植到加速系统上的首先编译器。
考虑更深远 — PGI正不遗余力地开发编译器和工具帮助您在未来可以基于ARM CPU上开发更节能的高性能系统。将HPC应用移植到这些系统上需要高效的Fortran、C和C++优化编译器,并利用OpenMP和OpenACC,结合MPI和并行调试工具。当几年内基于ARM的HPC系统面市,你今天在X86系统上利用PGI开发的代码可以很轻易地利用PGI编译器和工具移植到这些系统上。
考虑PGI — 全球5000个地方,超过2万5千名用户使用PGI,PGI已经成为受人尊敬的HPC软件供应商。常言道,用的人越多越安全。当你选择PGI,你就正在加入HPC里最大的用户社群。PGI承诺为客户提供优质的服务和为全球最快的计算机提供高质量的编译器和产品。
概述
利用 PGI Accelerator 编译器,编程人员可以将 OpenMP 风格的编译器指令添加到现有的符合行业标准的高级别 Fortran 和 C 语言程序中,并使用合适的编译器选项对其重新编译,从而提升 x64+GPU 平台上 Linux、Mac OS X 和 Windows 应用程序的运行速度。
以下是 Fortran 矩阵乘法循环的示例,用于编译加速器。
!$acc region
do k = 1,n1
do i = 1,n3
c(i,k) = 0.0
do j = 1,n2
c(i,k) = c(i,k) + a(i,j) * b(j,k)
enddo
enddo
enddo
!$acc end region
工作方式
迄今为止,研究 GPU 加速器的 C 和 C++ 语言开发人员必须依赖于其程序的语言扩展。Fortran 应用程序对于 GPU 的使用极其有限。x64+GPU 编程人员必须细致地编程,既要理解并指定数据使用量信息,又要手动构建调用序列,以管理 x64 主机与 GPU 之间的所有数据移动。
PGI Accelerator 编译器自动分析整个程序的结构和数据,按照用户指令划分指定给 x64 CPU 与指定给 GPU 的应用程序部分,定义并生成优化的循环映射,以便自动使用并行核、硬件线程功能和现代 GPU 的 SIMD 矢量功能。PGI Accelerator 编译器不仅能通过指令和编译指示来指定需要加速的编码或函数区域,还支持用户指令,帮助编程人员细粒度控制循环映射、内存分配以及 GPU 内存分级优化。PGI Accelerator 编译器生成统一的 x64+GPU 对象文件和可执行文件,这些文件管理所有经过 GPU 设备的数据移动。同时还充分利用所有现有的主机端工具——链接器、库管理器和 makefile——无需更改当前标准的 HPC Linux/x64 编程环境。
常见问题解答:
问 PGI Accelerator 编译器支持哪几种编程语言?
答 目前 PGI 已向 PGFORTRAN? Fortran 2003 和 PGCC? ANSI C99 编译器提供 GPU 加速器支持。虽然从技术角度上来说添加 C++ 语言支持是可行的,不过目前我们尚未将该功能列入研发计划中。我们乐意接收您的反馈意见。
问 PGI Accelerator 编译器可以在哪些操作系统上运行?
答 PGI 2010 和更高版本都支持 64-位和 32-位 Linux、64-位和 32-位 Windows 以及 32-位 Mac OS X。64-位 Mac OS X 支持在 NVIDIA 发布针对 Mac OS X 的 64-位 CUDA SDK 后才能实现。PGI 9.0 仅支持 64-位 Linux。
问 哪些加速器可作为 PGI Accelerator 编译器的目标对象?
答 PGI Accelerator 编译器用于所有计算能力大于等于1.0的支持 CUDA 的 NVIDIA GPU 加速器 。PGI 正在研究支持其它加速器的可行性。
问 是否需要安装 CUDA 软件?
答 PGI Accelerator 编译器依赖若干 NVIDIA CUDA Software Development Kit(SDK)的组件。从 PGI 2010 版本开始,NVIDIA CUDA SDK 的所有必要组件都包含于 PGI 安装程序包中。在您产品的 PGI 安装指南中提供更多详细信息。
问 该编译器是否支持 IEEE 标准浮点运算?
答 目前提供的 GPU 加速器支持大部分 IEEE 浮点标准。不过,该编译器不支持所有舍入模式。在某些操作中,尤其是平方根、指数、对数及其它超越函数,可能无法得全精度结果。这属于硬件局限性,编译器无法克服。
问 PGI Accelerator 编译器是否支持双精度?
答 支持。
问 可否从使用 PGI 编译的代码中调用 CUDA 内核函数?
答 PGI 正致力于设计一项功能,允许您直接从您的 C 或者 Fortran 语言程序中调用以 CUDA、PTX 或其它语言编写的内核函数。待设计成功,我们将发布该功能。
问 该编译器可否支持同一程序中包含两个或两个以上 GPU?
答 与 CUDA 一样,您可以利用多个线程(每个线程依附于不同的 GPU 并在该 GPU 上运行其内核)来使用两个或两个以上 GPU。当前版本不支持从同一加速器区域自动控制两个或两个以上 GPU。
问 是否打算像 OpenMP 那样,将您的指令向标准委员会公开?
答 PGI 积极参与 OpenMP Accelerator 小组委员会,和其他供应商和用户并肩工作,定义将实现高级别可迁移加速器编程的编程模型和指令集。该小组委员会先着手处理 PGI 指令,完成后 PGI 将支持作为结果的标准。
问 可否在一台未安装加速器的计算机上运行我的程序?
答 可以。PGI Accelerator 编译器可生成 PGI Unified Binary?技术可执行文件,从而在有无加速器的情况下皆可运行。
问 是否需要为每个不同的 GPU 模型重建我的应用程序?
答 生成的 GPU 编码所使用的技术就是用于图形应用程序和游戏的相同技术;也就是说,该程序使用可移植的中间格式,该格式由驱动程序在运行时动态转译和重新优化。供应商会根据您计算机中特定的 GPU 模型提供这些驱动程序。即使您升级 GPU 卡,或在一台具有不同 GPU 模型的计算机上使用该程序,您的程序仍能继续工作,从而保护了您的投资。
问 可否使用 GPU 编码中的函数或过程调用?
答 现有的 GPU 不支持函数调用。该编译器仅当函数调用可以内联时,才会支持它们。
【下载】下载PGI Accelerator编译器
【中文讲座】OpenACC培训——5小时内将程序加速5倍 暖身培训,用实际的编程案例了解OpenACC
【中文讲座】OpenACC初级培训 OpenACC与CUDA的关系如何?让PGI工程师告诉你
【英文讲座】用OpenACC进行GPU编程 这是8月份NVIDIA与PGI共同举办的网络培训,手把手让你加速程序
【英文讲座】OpenACC高级培训 PGI最有经验的工程师的编程指导,无论您是用C编程或者Fortran编程
OpenACC资源集锦
【教程】PVF12.8 下使用openacc
【教程】[网友原创]Windows下PGI compiler环境配置
【教程】编写第一个OpenACC程序
【问题集锦】 在CUDA Fortran中调用CUBLAS
【问题集锦】下了pgi编译器,但是怎么来个例子下手实验呢
如何组建高性能计算系统