以下记录为本人在使用PGI社区版编译器遇到的问题,包含两类问题
1,PGI编译器本身存在你的bug。
2,在其他编译器编译运行没问题,在PGI中出现问题。
版本(18.11社区版)
1,(bug)内置函数,EOSHIFT,当偏移量为0的时候,数组会重置为0,图例中对这段代码分别使用gfortran,ifort和pgfortran编译运行,前两个没有问题。
2,PGI对有些变量声明分配内存比较敏感。假如我定义变量A(n),当n为0时,pgfortran编译不通过。
3,程序中需要openmp并行时,使用其他编译器运行没有问题,使用pgi编译,加入指令 -mp=allcores.
运行结果会出现segment fault错误,原因未知!
4,程序循环中如果有累加数,就需要使用下面语句
!$acc loop reduction(+:a)
这句话本身没有问题,但是如果在循环前用了data模块
!$acc& create(a)
千万不能create 变量a,不然计算时会出现segment fault错误