运行 群集上的 pgc++ 程序
Running pgc++ programs on Cluster
我试图运行集群上的以下OPenACC程序:
#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
#pragma acc parallel loop
for (int i=0; i<1000; i++)
{
//cout << i << endl;
printf("%d ", i);
}
return 0;
}
上述代码的 PBS 脚本:
#PBS -e errorlog1.err
#PBS -o logfilehello.log
#PBS -q rupesh_gpuq
#PBS -l select=1:ncpus=1:ngpus=1
tpdir=`echo $PBS_JOBID | cut -f 1 -d .`
tempdir=$HOME/scratch/job$tpdir
mkdir -p $tempdir
cd $tempdir
cp -R $PBS_O_WORKDIR/* .
module load nvhpc-compiler
#module load cuda10.1
#module load gcc10.3.0
#module load nvhpc-21.11
#module load nvhpc-pgicompiler
#module load gcc920
pgc++ sssp.cpp
./a.out > output.txt
rm *.out
mv * $PBS_O_WORKDIR/.
rmdir $tempdir
~
将上述作业提交给que后,出现如下错误日志:
"sssp.cpp", line 2: catastrophic error: cannot open source file "iostream" #include <iostream>
^
1 catastrophic error detected in the compilation of "sssp.cpp". Compilation terminated.
我在 pgcc 上尝试了 运行ning C 程序,它们运行良好。 运行 pgc++ 上的 c++ 程序抛出错误。可能是什么原因?
What could be the reason?
为了与 g++ 互操作,pgc++(又名 nvc++)使用 g++ STL 和系统 header 文件。由于这些 header 的位置可能会有所不同,因此在安装时会创建一个配置文件“localrc”来存储这些位置。
这里可能发生的情况是,在安装时,选择了单个系统安装,因此生成的 localrc 是针对安装编译器的系统,而不是远程系统。
如果是这种情况,请考虑使用“网络”选项 re-installing。在这种情况下,localrc 的创建会延迟到第一次编译器调用,并为每个系统生成一个唯一的 localrc。
另一种可能是localrc 文件创建失败,原因不明。可能是权限问题。要检查,您可以 运行 'makelocalrc' 实用程序查看是否发生任何错误。
请注意,对于较新版本的 nvc++,我们不再使用 pre-generated 配置文件,而是在每次调用编译器时确定这些配置项。之前的担忧是生成配置所涉及的开销,但这已不再是一个问题。
我试图运行集群上的以下OPenACC程序:
#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
#pragma acc parallel loop
for (int i=0; i<1000; i++)
{
//cout << i << endl;
printf("%d ", i);
}
return 0;
}
上述代码的 PBS 脚本:
#PBS -e errorlog1.err
#PBS -o logfilehello.log
#PBS -q rupesh_gpuq
#PBS -l select=1:ncpus=1:ngpus=1
tpdir=`echo $PBS_JOBID | cut -f 1 -d .`
tempdir=$HOME/scratch/job$tpdir
mkdir -p $tempdir
cd $tempdir
cp -R $PBS_O_WORKDIR/* .
module load nvhpc-compiler
#module load cuda10.1
#module load gcc10.3.0
#module load nvhpc-21.11
#module load nvhpc-pgicompiler
#module load gcc920
pgc++ sssp.cpp
./a.out > output.txt
rm *.out
mv * $PBS_O_WORKDIR/.
rmdir $tempdir
~
将上述作业提交给que后,出现如下错误日志:
"sssp.cpp", line 2: catastrophic error: cannot open source file "iostream" #include <iostream>
^
1 catastrophic error detected in the compilation of "sssp.cpp". Compilation terminated.
我在 pgcc 上尝试了 运行ning C 程序,它们运行良好。 运行 pgc++ 上的 c++ 程序抛出错误。可能是什么原因?
What could be the reason?
为了与 g++ 互操作,pgc++(又名 nvc++)使用 g++ STL 和系统 header 文件。由于这些 header 的位置可能会有所不同,因此在安装时会创建一个配置文件“localrc”来存储这些位置。
这里可能发生的情况是,在安装时,选择了单个系统安装,因此生成的 localrc 是针对安装编译器的系统,而不是远程系统。
如果是这种情况,请考虑使用“网络”选项 re-installing。在这种情况下,localrc 的创建会延迟到第一次编译器调用,并为每个系统生成一个唯一的 localrc。
另一种可能是localrc 文件创建失败,原因不明。可能是权限问题。要检查,您可以 运行 'makelocalrc' 实用程序查看是否发生任何错误。
请注意,对于较新版本的 nvc++,我们不再使用 pre-generated 配置文件,而是在每次调用编译器时确定这些配置项。之前的担忧是生成配置所涉及的开销,但这已不再是一个问题。