我正在 PGC++ 上开发代码以图形化地加速代码。
- 我正在使用具有 Eigen 依赖性的 OpenBabel。
- 我试过使用#pragma acc kernel
- 我尝试过使用#pragma acc 例程
- 我的编译命令是:“pgc++ -acc -ta=tesla -Minfo=all -I/home/pranav/new_installed/include/openbabel-2.0/ -I/home/pranav/new_installed/include/eigen3/ -L/home/ pranav/new_installed/lib/openbabel/main.cpp /home/pranav/new_installed/lib/libopenbabel.so"
我收到以下错误
在计算区域中调用的 PGCC-S-0155-Procedures 必须具有 acc 例程信息:OpenBabel::OBMol::SetTorsion(OpenBabel::OBAtom *, OpenBabel::OBAtom *, OpenBabel::OBAtom *, OpenBabel::OBAtom *,双)(main.cpp:66) PGCC-S-0155-加速器区域被忽略;请参阅 -Minfo 消息 (main.cpp) bondRot::two(std::vector>, OpenBabel::OBMol, int, OpenBabel::OBMol): 11、包含“bondRot.h” 0,加速器区域被忽略 66、加速器限制:调用 'OpenBabel::OBMol::SetTorsion(OpenBabel::OBAtom *, OpenBabel::OBAtom *, OpenBabel::OBAtom *, OpenBabel::OBAtom *, double)' 没有 acc 例程信息 PGCC/x86 Linux 15.10-0:编译完成但出现严重错误
注意:第 66 行是“mol.SetTorsion(a[0],a[1],a[2],a[3],i*(3.14159265358979323846/180));” 在下面粘贴的预兆中。
我显示此错误的代码如下:
#pragma acc routine
public:bool two(vector<OBAtom *> a)
{
std::ostringstream bestanglei,bestanglej;
for(unsigned int i=0;i<=360;i=i+res)
{
for(unsigned int j=0;j<=360;j=j+res)
{
mol.SetTorsion(a[0],a[1],a[2],a[3],i*(3.14159265358979323846/180));
//cout<<i<<"\n";
}
}
return true;
}
从谷歌的主要搜索中,我知道这是由于 mol(OBMol 对象)的“反向依赖”而发生的错误。如果有人知道它的解决方案,请帮助我。