翻译自PGI Compiler User's Guide

1.6. 使用PGI编译器进行并行编程

PGI编译器支持多种样式的并行编程:

  • 使用pgf77,pgf95,pgfortran,pgcc或pgc +++的-⁠Mconcur选项的 自动共享内存并行程序(Automatic shared-memory parallel programs )的 编译。此类并行程序可以在共享内存并行(shared-memory parallel,SMP)系统上运行,例如双核或多处理器工作站。
  • 使用pgf77,pgf95,pgfortran,pgcc或pgc +++的-⁠mp选项 的 OpenMP共享内存并行程序 的编译。这种并行程序可以在SMP系统上运行。使用OpenMP 指令编译的并行程序通常可以在双核工作站或SMP服务器系统上的大量处理器上实现显著的加速。使用 OpenMP一节包含用户控制的并行编程的完整说明。
  • 使用基于分布式进程之间通信的MPI消息传递库进行分布式计算。
  • 使用低级模型(例如CUDA Fortran)或高级模型(例如PGI加速器模型或OpenACC)来加速计算,以针对多核GPU或其他附加的加速器为目标。

前两种并行程序统称为SMP并行程序。

在单个硅芯片上,当今的CPU集成了两个或多个完整的处理器内核-功能单元,寄存器,一级缓存,二级缓存等。这些CPU被称为多核处理器。出于线程或OpenMP并行性的目的,这些内核用作两个或更多不同的处理器。但是,这些处理核心位于系统主板的单个插槽的单个芯片上。出于PGI软件许可的目的,将多核处理器视为单个CPU。

1.6.1. 运行共享内存并行程序

在执行SMP并行程序时,默认情况下,它仅使用一个处理器。要在多个处理器上运行,请将NCPUS环境变量设置为所需的处理器数量。有关如何设置环境变量的信息,请参阅Setting Environment Variables.

注意:如果将NCPUS设置为大于物理处理器数量的数字,则程序执行速度可能会非常慢。

1.7. 平台特定的注意事项

以下列表是PGI编译器和工具支持的平台:

  • 64-bit Linux – 在x86-64兼容处理器上运行的64位Linux操作系统上受支持。
  • 64-bit Windows – 在运行x64兼容处理器的64位Windows操作系统上受支持。
  • 64-bit macOS – 在基于Intel的64位Mac系统上运行的64位macOS操作系统上受支持。

以下各节描述了在各种平台上使用PGI编译器所需的特定注意事项:Linux,Windows和macOS。

1.7.1. 在Linux上使用PGI编译器

Linux 头文件

Linux系统头文件包含许多GNU gcc扩展。PGI支持许多这些扩展,因此允许PGI C和C ++编译器编译GNU编译器可以编译的大多数程序。一些不可与PGI编译器相互操作的头文件已被重写。这些文件包含在 $PGI/linux86-64/include 和 $PGI/linux86-64/include --⁠⁠gcc* 目录下, 比如 sigset.h, asm/byteorder.h, stddef.h, asm/posix_types.h 等等。此外,PGI的stdarg.h版本支持更新版本的Linux。

如果您使用的是PGI C或C ++编译器,请确保在系统版本的文件之前 找到(我们)提供的这些文件。缺省情况下会发生此层次结构,除非您显式的添加-⁠I选项引用系统的include目录。

在Linux上运行并行程序

当每线程堆栈大小设置为默认值(2MB)时,在Linux系统上运行自动并行程序或OpenMP程序可能会遇到困难。如果发生无法解释的故障,请尝试将环境变量OMP_STACKSIZE设置为较大的值,例如8MB。有关设置环境变量的信息,请参阅Setting Environment Variables

如果您的程序仍然失败,则您可能在Linux中遇到主进程堆栈大小的8 MB硬限制。您可以通过发出以下命令来解决此问题:

在csh中:

% limit stacksize unlimited

在 bash, sh, zsh, 或者 ksh 中,使用:

$ ulimit -s unlimited
	

1.8. 用户自定义的编译器设置 Site-Specific Customization of the Compilers

如果您使用的是PGI编译器,并且希望所有用户都可以访问特定的库或其他文件,则可以使用 特定的文件 来自定义编译器的设置。

1.8.1. 使用 siterc 文件

PGI编译器驱动程序使用名为 siterc 的文件来启用 用户自定义的PGI编译器设置。siterc文件位于PGI安装目录的bin子目录中。使用siterc,您可以控制编译器驱动程序如何调用编译工具链中的各种组件。

1.8.2. 使用用户 rc 文件

除了siterc文件之外,用户rc文件还放在给定用户的主目录中,该目录由用户的HOME环境变量指定。您可以使用这些文件来控制各自的PGI编译器。所有这些文件都是可选的。在Linux和macOS上,这些文件名为.mypgf77rc,.mypgf90rc,.mypgccrc和.mypgc ++ rc。在Windows上,这些文件名为mypgf77rc,mypgf90rc,mypgf95rc,mypgfortranrc和mypgccrc。以下示例显示了如何使用这些rc文件针对特定目的 定制安装。

表3.  Examples of Usine siterc and User rc Files

目的 将标记的行添加到特定的文件中

对所有的linux86-64 的编译提供如下文件夹的库: /⁠opt/newlibs/64

Make available to all linux86-64 compilations the libraries found in /⁠opt/newlibs/64

set SITELIB=/opt/newlibs/64;
to /opt/pgi/linux86-64/19.10/bin/siterc

向所有linux86-64编译中添加新的库路径: /opt/local/fast

Add to all linux86-64 compilations a new library path: /opt/local/fast

append SITELIB=/opt/local/fast;
to /opt/pgi/linux86-64/19.10/bin/siterc

使用linux86-64编译时,更改-⁠Mmpi以链接到/opt/mympi/64/libmpix.a

With linux86-64 compilations, change -⁠Mmpi to link in /opt/mympi/64/libmpix.a

set MPILIBDIR=/opt/mympi/64;
set MPILIBNAME=mpix;
to /opt/pgi/linux86-64/19.10/bin/siterc
对于linux x86-64编译,请始终添加-⁠DIS64BIT-⁠DAMD

With linux86-64 compilations, always add -⁠DIS64BIT -⁠DAMD

set SITEDEF=IS64BIT AMD;
to /opt/pgi/linux86-64/19.10/bin/siterc

为linux86-64 or linux86构建一个F90或F95可执行文件,使得可以在相对路径./REDIST解析PGI共享对象

Build an F90 or F95 executable for linux86-64 or linux86 that resolves PGI shared objects in the relative directory ./REDIST

set set RPATH=./REDIST;
to ~/.mypgfortranrc
Note.This only affects the behavior of PGFORTRAN for the given user.

PGI 用户手册之 Site-Specific Customization of the Compilers的更多相关文章

  1. Site Isolation Design Document

    This design document covers technical information about how Site Isolation is built.  For a general ...

  2. 大神的vim配置

    大神的vim配置,O(∩_∩)O spf13-vim : Steve Francia's Vim Distribution __ _ _____ _ ___ _ __ / _/ |___ / __ _ ...

  3. zookeeper集群的搭建以及hadoop ha的相关配置

    1.环境 centos7 hadoop2.6.5 zookeeper3.4.9 jdk1.8 master作为active主机,data1作为standby备用机,三台机器均作为数据节点,yarn资源 ...

  4. Hadoop的学习--安装配置与使用

    安装配置 系统:Ubuntu14.04 java:1.7.0_75 相关资料 官网 下载地址 官网文档 安装 我们需要关闭掉防火墙,命令如下: sudo ufw disable 下载2.6.5的版本, ...

  5. (三)Spark-Hadoop集群搭建-Java&Python版Spark

    Spark-Hadoop集群搭建 视频教程: 1.优酷 2.YouTube 配置java 启动ftp [root@master ~]# /etc/init.d/vsftpd restart 关闭 vs ...

  6. 在Ubuntu上搭建Hadoop群集

    前面我搭建的Hadoop都是单机伪分布式的,并不能真正感受到Hadoop的最大特点,分布式存储和分布式计算.所以我打算在虚拟机中同时开启3台机器,实现分布式的Hadoop群集. 1.准备3台Ubunt ...

  7. hadoop2.6.4 搭建伪分布式

    安装jdk1.7 http://www.cnblogs.com/zhangXingSheng/p/6228432.html  ------------------------------------- ...

  8. 攻城狮在路上(陆)-- hadoop分布式环境搭建(HA模式)

    一.环境说明: 操作系统:Centos6.5 Linux node1 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 ...

  9. 安装hadoop+zookeeper ha

    安装hadoop+zookeeper ha 前期工作配置好网络和主机名和关闭防火墙 chkconfig iptables off //关闭防火墙 1.安装好java并配置好相关变量 (/etc/pro ...

  10. ubuntu14.04 安装 hadoop2.4.0

    转载:ubuntu搭建hadoop-Ver2.6.0完全分布式环境笔记 自己在搭建hadoop平台时,碰到一些困难,按照该博文解决了问题,转载一下,作为记录. 2 先决条件 确保在你集群中的每个节点上 ...

随机推荐

  1. Git介绍下载安装以及基本使用

    目录 一.git介绍 二.下载安装git软件 三.基本使用 四.制作忽略文件 五.Git.Gitee.GitHub.Gitlab.bitbucket的区别 六.基础代码操作分类 一.git介绍 git ...

  2. npm+react linux 开荒

    安装npm 从 https://nodejs.org/dist/ 找到下载包,并不是版本越高越好,得看项目的需要. 解压之后,将解压路径bin添加到PATH里. 完成后可配置npm源 npm inst ...

  3. react快速创建组件

    安装ES7插件  组件页面输入rcc

  4. 2020icpc沈阳H

    优化转移DP Problem - H - Codeforces 题意 Aloha 要骑单车,可以单独花费 \(r\) 元骑 1 次,也可以购买某一种单车卡,第 \(i\) 种单车卡 \(c_i\) 元 ...

  5. Mongo 常用命令

    1.登入 docker exec -it  mongo mongo  数据库 db.auth("账号","密码") docker exec -it  mongo ...

  6. vue-cli 根据不同的环境打包

    根据项目需要,通过vue-cli中的npm run build 打包到不同的环境,例如测试环境,预发布环境,线上环境,根据process.env分别进行接口的调用 vue-cli 中build中bui ...

  7. winform Message应用

    今天遇到了一个问题,winform 中使用自定义控件时,希望在点击自定义控件时设置控件为选中状态.而且这个自定义控件在一个窗体中被创建多个. 但在自定义控件中添加子控件后,导致鼠标点击事件只能响应在子 ...

  8. Lazarus 开发环境使用技巧

    Lazarus 开发环境使用技巧 1.代码补全 按下键盘的Ctrl+W键!输入变量后按下这个键就OK啦- 2.自动完成 自动完成的快捷键大多数都冲突了,解决方法是打开 工具(T)->选项...- ...

  9. Linux 中设置静态的IP

    Topic (What i going to write) Setting the static Ip address in linux Main Information Firstly use CD ...

  10. 最大流模板(EK,Dinic

    一.EK EK算法:用bfs找增广路直到找不到为止.找到则更新最大流和残余网络,找不到则结束. 残余网络:对于一条走过的边,其正向边权值减少相应值,反向边权值增加相应值(用于反悔). 增广路:从所求起 ...