
PGI 2010 及更高版本都包含 PGI Accelerator? Fortran 和支持 x64+NVIDIA Linux 系统的 C99 编译器,可以在 Linux、Mac OS X 和 Windows 下运行;利用支持 CUDA 的 NVIDIA GPU,所有基于 Intel 和 AMD x64 处理器的系统均支持 PGFORTRAN 和 PGCC Accelerator 编译器。
概述
利用 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 2011 并未实现 PGI Fortran 和 C Accelerator 编程模型白皮书 v.1.2中的所有指令。
问 售价是多少?
答 可以在价格部分了解 PGI Accelerator 编译器的许可证价格信息。如果您现在已持有 PGI 许可证,您可以按照标准的 PGI 产品升级策略升级您的许可证。
问 如何试用该产品?
答 要试用 PGI Accelerator 编译器,请遵循以下三步:
根据您的操作系统下载相应的软件程序包。
查看 PGI 安装指南 或 PGI Visual Fortran 安装指南并配置您的环境。
获取许可证密钥 。提供以下选项:
您持有当前的 PGI Linux 订阅——您需要重新获得您的已升级永久许可证密钥。
您的 PGI Linux 订阅已过期——您可以选择生成 15 天试用版密钥(如下方选项3所述),您也可以通过更新永久许可证密钥,以继续持有您当前的订阅并获得加速器功能。
您未持有 PGI 许可证——您可以生成 15 天试用版许可证密钥。15天试用到期后,这些试用版密钥和使用它们来编译的所有可执行文件将不再有效。
请联系 PGI 销售以了解更多有关调换、升级或续订的信息。
-----------------------------------------------------------------------------------------------------------------------------------------
PGI 9.0 版本包含 PGI Accelerator™ Fortran 和支持 x64+NVIDIA Linux 系统的 C99 编译器;在支持 CUDA 的 NVIDIA GPU 的帮助下,所有基于 Intel 和 AMD x64 处理器的系统均支持 PGF95 和 PGCC accelerator 编译器。
概述
利用 PGI Accelerator 编译器,编程人员可以将 OpenMP 风格的编译器指令添加到现有的符合行业标准的高级别 Fortran 和 C 语言程序中,并使用合适的编译器选项对其重新编译,从而提升 x64+GPU 平台上 Linux 应用程序的运行速度。
以下是 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 建议有兴趣学习使用 PGI 工具编程加速器的所有用户,先去阅读由 Michael Wolfe 编写的 PGInsider 文章:The PGI Accelerator Programming Model on NVIDIA GPUs—Part 1。这篇文章不仅可作为深入的教程,其中还包含一些同时使用 Fortran 和 C 语言编写的示例程序。
常见问题解答
请参阅 PGI Accelerator 编程的用户论坛以了解更多问题与解答。
问 PGI Accelerator 编译器支持哪几种编程语言?
答 目前 PGI 已向 PGF95™ Fortran 和 PGCC® ANSI C99 编译器提供 GPU 加速器支持。虽然从技术角度上来说添加 C++ 语言支持是可行的,不过目前我们尚未将该功能列入研发计划中。我们乐意接收您的反馈意见。
问 PGI Accelerator 编译器可以在哪些操作系统上运行?
答 PGI 9.0 版本只支持64位的 Linux 操作系统。PGI 目前致力于为 Windows 和 Mac OS X 操作系统提供这种相同的编程模型支持,预计在2009年年底前可以发布应用于这两个平台的产品。
问 哪些加速器可作为 PGI Accelerator 编译器的目标对象?
答 PGI Accelerator 编译器用于所有计算能力大于等于1.2的支持 CUDA 的 NVIDIA GPU 加速器 。PGI 正在研究支持其它加速器的可行性。
问 是否需要安装 CUDA 软件?
答 目前您必须从 NVIDIA 下载并安装 CUDA 软件。此外,您必须在 $PGI/9.0/bin/ 安装目录下创建或编辑一个名为 'sitenvrc' 的文件。详细信息请参阅 PGI Server/PGI Workstation 安装指南的 7.2 章节。
问 该编译器是否支持 IEEE 标准浮点运算?
答 目前提供的 GPU 加速器支持大部分 IEEE 浮点标准。不过,该编译器不支持所有舍入模式,并且在某些操作中,尤其是平方根、指数、对数及其它超越函数,可能无法得出
全精度结果。这属于硬件局限性,编译器无法克服。
问 PGI Accelerator 编译器是否支持双精度?
答 支持。不过请注意:虽然目前最新的 GPU 加速器确实支持双精度,不过与单精度相比,性能明显偏低。
问 可否从使用 PGI 编译的代码中调用 CUDA 内核函数?
答 PGI 正致力于设计一项功能,允许您直接从您的 C 或者 Fortran 语言程序中调用以 CUDA、PTX 或其它语言编写的内核函数。待设计成功,我们将发布该功能。
问 该编译器可否支持同一程序中包含两个或两个以上 GPU?
答 与 CUDA 一样,您可以利用多个线程(每个线程依附于不同的 GPU 并在该 GPU 上运行其内核)来使用两个或两个以上 GPU。当前版本不支持从同一加速器区域自动控制两个或两个以上 GPU。
问 是否打算像 OpenMP 那样,将您的指令向标准委员会公开?
答 一旦从我们的指令和编程模型获取经验,我们就将开放指令以进行规范化研究。
问 可否在一台未安装加速器的计算机上运行我的程序?
答 可以。PGI Accelerator 编译器可生成 PGI Unified Binary? 技术可执行文件,从而在有无加速器的情况下皆可运行。
问 是否需要为每个不同的 GPU 模型重建我的应用程序?
答 生成的 GPU 编码所使用的技术就是用于图形应用程序和游戏的相同技术;也就是说,该程序使用可移植的中间格式,该格式由驱动程序在运行时动态转译和重新优化。供应商会根据您计算机中特定的 GPU 模型提供这些驱动程序。即使您升级 GPU 卡,或在一台具有不同 GPU 模型的计算机上使用该程序,您的程序仍能继续工作,从而保护了您的投资。
问 可否使用 GPU 编码中的函数或过程调用?
答 现有的 GPU 不支持函数调用。该编译器仅当函数调用可以内联时,才会支持它们。
问 您的编译器中何时将支持 <我最喜欢的功能>?
答 无法对某些功能提供支持是因为硬件限制。另外一些功能目前不支持是因其无法实现令人满意的性能。还有些功能预计在未来实现。您的反馈意见可影响我们工作安排的优先级。
问 此版本是否支持所有特定指令?
答 PGI 9.0 版本并未实现 PGI Fortran 和 C Accelerator 编程模型白皮书中的所有指令。将要
实现的指令列表如下:
- 加速器数据区域(Accelerator Data Region)指令及其相关声明数据语句
- 更新指令
- 循环调度指令语句
- 运行时例程
- acc_shutdown
- acc_on_device
问 什么是 Extended Preview?
答 在 PGI 9.0 中对 x64+NVIDIA Linux 系统启用了该功能。目前向 PGI Linux 被许可方免费提供 PGI Accelerator Extended Preview Program 及其包含的当前订阅。Extended Preview Program 一直延续到2009年12月31日。加速器功能将于那天停止运行(不过 x64 功能将不受影响)。如果自那日后您希望重新获得加速器功能,您必须升级到支持加速器的许可证。
问 升级价格是多少?
答 将在近期发布 PGI Accelerator 编译器的升级和新许可证定价。此外,购买任何新的 PGI Linux 许可证或续订您已过期的 PGI 订阅服务,您就能够参与 Extended Preveiw Program。请联系 PGI 销售以了解更多详情。
问 如何试用该产品?
答 如果您想在 Extended Preview 计划期间试用 PGI Accelerator 编译器,请执行以下三个步骤:
- 下载任意一款 PGI 9.0 64 位 Linux 软件程序包 (PGI Workstation, PGI Server or PGI CDK)。
- 请详细阅读 PGI Workstation/PGI Server 安装指南或 PGI CDK 安装指南 ,然后配置您的环境。
- 获取许可证密钥。 提供以下选项:
- 您持有当前的 PGI Linux 订阅——您需要检查 9.0 版本更新以获得永久许可证密钥。
- 您的 PGI Linux 订阅已过期——您可以选择生成 15 天试用版密钥(如下方选项5所述),您也可以通过更新永久许可证密钥,以继续持有您当前的订阅并获得 Extended Preview 加速器功能。续订您的订阅,您同样可以享受任何许可证升级
优惠。
- 您目前持有 PGI 非 Linux 订阅——您可以选择生成 15 天试用版密钥(如下方选项5所述),您也可以调换或升级您的许可证来包含 Linux 支持。
- 您的 PGI 非 Linux 订阅已过期——您可以选择生成 15 天试用版密钥(如下方选项5所述),您也可以按选项2所述——更新许可证密钥以继续持有当前订阅,然后按选项3所述——调换或升级您的许可证。
- 您未持有 PGI 许可证——您可以生成 15 天试用版许可证密钥。15天试用到期后,这些试用版密钥和使用它们来编译的所有可执行文件将不再有效。
请联系 PGI 销售以了解更多有关调换、升级或续订的信息。
|