经济文库 - 千万精品文档,你想要的都能搜到,下载即用。

PGI C C++ Fortran编译器的使用.pdf

左转弯遇见你22 页 281.314 KB 访问 1122.97下载文档
PGI C C++ Fortran编译器的使用.pdfPGI C C++ Fortran编译器的使用.pdfPGI C C++ Fortran编译器的使用.pdfPGI C C++ Fortran编译器的使用.pdfPGI C C++ Fortran编译器的使用.pdfPGI C C++ Fortran编译器的使用.pdf
当前文档共22页 2.97
下载后继续阅读

PGI C C++ Fortran编译器的使用.pdf

PGI C/C++、Fortran编译器的使用 李会民 hmli@ustc.edu.cn 中国科学技术大学 超级计算中心 2015年4月16日 . 李会民 (中国科大超算中心) PGI编译器的使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2015年4月16日 1 / 22 . 1 PGI C/C++ Fortran编译器简介 2 PGI编译器编译举例 PGI C/C++编译器编译举例 PGI Fortran编译器编译举例 3 PGI C/C++编译器重要编译选项 一般选项 优化选项 调试选项 预处理选项 链接选项 C/C++语言选项 Fortran语言选项 平台相关选项 4 调试 5 联系信息 . 李会民 (中国科大超算中心) PGI编译器的使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2015年4月16日 2 / 22 . PGI C/C++ Fortran编译器简介 PGI C/C++ Fortran编译器是一种针对多种CPU与操作系统的高性能编译 器,可用于开发复杂且要进行大量计算的程序。当前安装的版本为: 2014 v14.10,安装在 / o p t / p g i / l i n u x 8 6 − 6 4 / 1 4 . 1 0 2010 v10.6,安装在 / o p t / p g i / l i n u x 8 6 − 6 4 / 1 0 . 6 官方手册目录在其doc子目录下 编译命令: 编译C、C++源程序的命令分别: p g c c 、pgCC 编译Fortran 77源程序的命令: p g f 7 7 编译Fortran 90的源程序的命令: p g f 9 0 、 p g f 9 0 1 、 p g f 9 0 2 、 pgf90_ex、pgf95和 pg f o rt r a n 与NVIDIA CUDA库配合,可以编译Fortran-CUDA程序 . 李会民 (中国科大超算中心) PGI编译器的使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2015年4月16日 3 / 22 . PGI C/C++ Fortran编译器简介 用户要使用,可以采用以下两种方式之一 运行mpi − s e l e c t o r −menu命令设置,需要重新登录才生效 在自己的 ~ / . b a s h r c 之类环境设置文件中添加以下代码设置:  PATH=/opt/pgi/linux86−64/14.10/bin:$PATH MANPATH=$MANPATH:/opt/pgi/linux86−64/10.6/man export PATH MANPATH   需重新登录或者source相应的设置文件才能生效 . 李会民 (中国科大超算中心) PGI编译器的使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2015年4月16日 4 / 22 . PGI C/C++编译器编译举例 将C程序yourprog.c编译为可执行文件yourprog: pgcc -o yourprog yourprog.c 将C++程序yourprog.cpp编译为可执行文件yourprog: pgCC -o yourprog yourprog.cpp 将OpenMP指令并行的C程序yourprog-omp.c编译为可执行文 件yourprog-omp: pgcc -o yourprog-omp -mp yourprog.c . 李会民 (中国科大超算中心) PGI编译器的使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2015年4月16日 5 / 22 . PGI Fortran编译器编译举例 将Fortran 77程序yourprog.for编译为可执行文件yourprog: pgf77 -o yourprog yourprog.for 将Fortran 90程序yourprog.f90静态编译为可执行文件yourprog: pgf90 -o yourprog -static yourprog.f90 将OpenMP指令并行的Fortran 90程序yourprog-omp.f90编译为可执行 文件yourprog-omp: pgf90 -o yourprog-omp -mp yourprog.f90 . 李会民 (中国科大超算中心) PGI编译器的使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2015年4月16日 6 / 22 . PGI C/C++编译器重要编译选项 PGI编译器选项非常多,下面仅仅是列出一些本人认为常用的关于 编译C程序的 p g c c 命令的重要选项 编译C++程序的pgCC命令有稍微不同,建议仔细查看PGI相关资料 建议仔细查看编译器手册中关于程序优化的部分,多加测试,选择 适合自己程序的编译选项以提高性能 . 李会民 (中国科大超算中心) PGI编译器的使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2015年4月16日 7 / 22 . 一般选项 I -#:显示编译器、汇编器、链接器的调用信息。 -c:仅编译成对象文件(.o文件)。 -defaultoptions和-nodefaultoptions:是否使用默认选项,默认为使用。 -flags:显示所有可用的编译选项。 -help[=option]:显示帮助信息,option可以为groups、asm、debug、 language、linker、opt、other、overall、phase、phase、prepro、 suffix、switch、target和variable。 -Minform=level:控制编译时错误信息的显示级别。level可以 为fatal、file、severe、warn、inform,默认为-Minform=warn。 -noswitcherror:显示警告信息后,忽略未知命令行参数并继续进行 编译。默认显示错误信息并且终止编译。 -o file:指定生成的文件名。 -show:显示现有pgcc命令的配置信息。 . 李会民 (中国科大超算中心) PGI编译器的使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2015年4月16日 8 / 22 . 一般选项 II -silent:不显示警告信息,与-Minform=severe等同。 -v:详细模式,在每个命令执行前显示其命令行。 -V:显示编译器版本信息。 -w:编译时不显示任何警告,只显示错误。 . 李会民 (中国科大超算中心) PGI编译器的使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2015年4月16日 9 / 22 . 优化选项 I -fast:编译时选择针对目标平台的普通优化选项。 用 p g c c ␣ − f a s t ␣ − h e l p 可以查看等价的开关。优化级别至少为O2, 参看-O选项。 -fastsse:对支持SSE和SSE2指令的CPU(如Intel Xeon CPU)编译时 选择针对目标平台的优化选项。用 p g c c ␣ − f a s t s s e ␣ − h e l p 可以查 看等价的开关,优化级别至少为O2,参看-O选项。 -fpic或-fPIC:编译器生成地址无关代码,以便可用于生成共享对象 文件(动态链接库)。 -Kpic或-KPIC:与-fpic或-fPIC相同,为了与其余编译器兼容。 -Minfo [=option[,option,…]]:显示有用信息到标准错误输出,选项 可为all、autoinline、inline、ipa、loop或opt、mp、time或stat。 -Mipa[=option[,option,…]]和-Mnoipa:启用指定选项的过程间分析 优化,默认为-Mnoipa。 . 李会民 (中国科大超算中心) PGI编译器的使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2015年4月16日 10 / 22 . 优化选项 II -Mneginfo=option[,option…]:使编译器显示为什么特定优化没有实 现的信息。选项包括concur、loop和all。 -Mnoopenmp:当使用-mp选项时,忽略OpenMP并行指令。 -Mnosgimp:当使用-mp选项时,忽略SGI并行指令。 -Mpfi:生成概要导向工具,此时将会包含特殊代码收集运行时的统 计信息以用于子序列编译。-Mpfi必须在链接时也得使用。当程序运 行时,会生成概要导向文件pgfi.out。 -Mpfo:启用概要导向优化,此时必须在当前目录下有概要文件 pgfi.out。 -Mprof[=option[,option,…]]:设置性能功能概要选项。此选项可使 得结果执行生成性能概要,以便PGPROF性能概要器分析。 -mp[=option]:打开对源程序中的OpenMP并行指令的支持。 -O[level]:设置优化级别。level可为0、1、2、3、4,其中4与3相同。 -pg:使用gprof风格的基于抽样的概要刨析。 . 李会民 (中国科大超算中心) PGI编译器的使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2015年4月16日 11 / 22 . 调试选项 -g:包含调试信息。 . 李会民 (中国科大超算中心) PGI编译器的使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2015年4月16日 12 / 22 . 预处理选项 I -C:预处理时保留C源文件中的注释。 -Dname[=def]:预处理时定义宏name为def。 -dD:打印源文件中已定义的宏及其值到标准输出。 -dI:打印预处理中包含的所有文件信息,含文件名和定义时的行号。 -dM:打印预处理时源文件已定义的宏及其值,含定义时的文件名 和行号。 -dN:与-dD类似,但只打印源文件已定义的宏,而不打印宏值。 -E:预处理每个.c文件,将结果发送给标准输出,但不进行编译、汇 编或链接等操作。 -Idir:指明头文件的搜索路径。 -M:打印make的依赖关系到标准输出。 -MD:打印make的依赖关系到文件file.d,其中file是编译文件的根名 字。 . 李会民 (中国科大超算中心) PGI编译器的使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2015年4月16日 13 / 22 . 预处理选项 II -MM:打印make的依赖关系到标准输出,但忽略系统头文件。 -MMD:打印make的依赖关系到文件file.d,其中file是编译的文件的 根名字,但忽略系统头文件。 -P:预处理每个文件,并保留每个file.c文件预处理后的结果到file.i。 -Uname:去除预处理中的任何name的初始定义。 . 李会民 (中国科大超算中心) PGI编译器的使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2015年4月16日 14 / 22 . 链接选项 -Bdynamic:在运行时动态链接所需的库。 -Bstatic:静态链接所需的库。 -Bstatic_pgi :动态链接系统库时静态链接PGI库。 -g77libs:允许链接GNU g77或 g c c 命令生成的库。 -lstring:指明所需链接的库名。如库为libxyz.a,则可用-lxyz指定。 -Ldir:指明库的搜索路径。 -m:显示链接拓扑。 -Mrpath和-Mnorpath:默认为-rpath,以给出包含PGI共享对象的路 径。用-Mnorpath可以去除此路径。 -pgf77libs:链接时添加pgf77运行库,以允许混合编程。 -r:生成可以重新链接的对象文件。 -Rdirectory:对共享对象文件总搜索directory目录。 -pgf90libs:链接时添加pgf90运行库,以允许混合编程。 -shared:生成共享对象而不是可执行文件,必须在编译每个对象文 件时使用-fpic选项。 -sonamename:生成共享对象时,用内在的DT_SONAME代替指定 的name。 李会民 (中国科大超算中心) PGI编译器的使用 2015年4月16日 15 / 22 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C/C++语言选项 -B:源文件中允许C++风格的注释,指的是以//开始到行尾内容为注 释。除非指定-C选项,否则这些注释被去除。 -c8x或-c89:对C源文件采用C89标准。 -c9x或-c99:对C源文件采用C99标准。 . 李会民 (中国科大超算中心) PGI编译器的使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2015年4月16日 16 / 22 . Fortran语言选项 I -byteswapio或-Mbyteswapio:对无格式Fortran数据文件在输入输出时 从大端(big-endian)到小端(little-endian)交换比特,或者相反。此 选项可以用于读写Sun或SGI等系统中的无格式的Fortran数据文件。 -i2:将INTEGER变量按照2比特处理。 -i4:将INTEGER变量按照4比特处理。 -i8:将默认的INTEGER和LOGICAL变量按照4比特处理。 -i8storage:对INTEGER和LOGICAL变量分配8比特。 -Mallocatable[=95|03]:按照Fortran 95或2003标准分配数组。 -Mbackslash和-Mnobackslash:将反斜线(\)当作正常字符(非转义符) 处理,默认为-Mnobackslash。-Mnobackslash导致标准的C反斜线转 义序列在引号包含的字串中重新解析。-Mbackslash则导致反斜线被 认为和其它字符一样。 -Mextend:设置源代码的行宽为132列。 . 李会民 (中国科大超算中心) PGI编译器的使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2015年4月16日 17 / 22 . Fortran语言选项 II -Mfixed、-Mnofree和-Mnofreeform:强制对源文件按照固定格式进 行语法分析,默认.f或.F文件被认为固定格式。 -Mfree和-Mfreeform:强制对源文件按照自由格式进行语法分析,默 认.f90、.F90、.f95或.F95文件被认为自由格式。 -Mi4和-Mnoi4:将INTEGER看作INTEGER*4。 -Mnoi4将INTEGER看作INTEGER*2。 -Mnomain:当链接时,不包含调用Fortran主程序的对象文件。 -Mr8和-Mnor8:将REAL看作DOUBLE PRECISION,将实(REAL)常 数看作双精度(DOUBLE PRECISION)常数。默认为否。 -Mr8intrinsics [=float]和-Mnor8intrinsics:将CMPLX看作DCMPLX, 将REAL看作DBLE。添加float选项时,将FLOAT看作DBLE。 -Msave和-Mnosave:是否将所有局部变量添加SAVE声明,默认为 否。 . 李会民 (中国科大超算中心) PGI编译器的使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2015年4月16日 18 / 22 . Fortran语言选项 III -Mupcase和-Mnoupcase:是否保留名字的大小写。-Mnoupcase导致 所有名字转换成小写。注意,如果使用-Mupcase,那么变量名X与变 量名x不同,并且关键字必须为小写。 -Mcray=pointer:支持Cray指针扩展。 -module directory:指定编译时保存生成的模块文件的目录。 -r4:将DOUBLE PRECISION变量看作REAL。 -r8:将REAL变量看作DOUBLE PRECISION。 . 李会民 (中国科大超算中心) PGI编译器的使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2015年4月16日 19 / 22 . 平台相关选项 -Kieee和-Knoieee:浮点操作是否严格按照IEEE 754标准。使 用-Kieee时一些优化处理将被禁止,并且使用更精确的数值库。默 认为-Knoieee,将使用更快的但精确性低的方式。 -Ktrap=[option,[option]…]:控制异常发生时CPU的操作。选项可 为divz、fp、align、denorm、inexact、inv、none、ovf、unf,默认 为none。 -Msecond_underscore和-Mnosecond_underscore:是否对已 有_的Fortran函数名添加第二个_。与g77编译命令兼容时使用,因 为g77默认符号后添加第二个_。 -mcmodel=small|medium:使内存模型是否限制对象小 于2GB(small)或允许数据块大于2GB(medium)。medium时暗 含-Mlarge_arrays选项。 -tp target:target可以为nehalem-64等,默认与编译时的平台一致。 . 李会民 (中国科大超算中心) PGI编译器的使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2015年4月16日 20 / 22 . debug调试 调试命令为pgdbg,基本语法为: pgdbg ␣ [ ␣ p g d b g _ o p t i o n s . . . ␣ ] ␣ [ ␣ t a r g e t ␣ [ ␣ t a r g e t _ a r g s . . . ␣ ] ␣ ] m p i r u n ␣ [ ␣ m p i _ o p t i o n s . . . ␣ ] ␣ −dbg=pgdbg ␣ t a r g e t ␣ [ ␣ t a r g e t _ a r g 手册参见:http://scc.ustc.edu.cn/zlsc/tc4600/pgi/pgdbg14ug.pdf . 李会民 (中国科大超算中心) PGI编译器的使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2015年4月16日 21 / 22 . 联系信息 中国科大超算中心: 办公室:科大东区新图书馆一楼东侧126室 电话:0551-63602248 信箱:sccadmin@ustc.edu.cn 主页:http://scc.ustc.edu.cn 李会民: 电话:0551-63600316 信箱:hmli@ustc.edu.cn 主页:http://hmli.ustc.edu.cn . 李会民 (中国科大超算中心) PGI编译器的使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2015年4月16日 22 / 22 .

相关文章