Я разрабатываю код на PGC++ для графического ускорения кода.Открытые параллельные ядра OpenACC
- Я использую OpenBabel, который имеет зависимость от Eigen.
- Я попытался с помощью #pragma согла ядра
- Я попытался с помощью #pragma согласно рутина
- Моей команды компиляции: «PGC++ -acc -т = тесла -Minfo = все -I/дома/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 called in a compute region must have acc routine information: OpenBabel::OBMol::SetTorsion(OpenBabel::OBAtom *, OpenBabel::OBAtom *, OpenBabel::OBAtom *, OpenBabel::OBAtom *, double) (main.cpp: 66) PGCC-S-0155-Accelerator region ignored; see -Minfo messages (main.cpp) bondRot::two(std::vector>, OpenBabel::OBMol, int, OpenBabel::OBMol): 11, include "bondRot.h" 0, Accelerator region ignored 66, Accelerator restriction: call to 'OpenBabel::OBMol::SetTorsion(OpenBabel::OBAtom *, OpenBabel::OBAtom *, OpenBabel::OBAtom *, OpenBabel::OBAtom *, double)' with no acc routine information PGCC/x86 Linux 15.10-0: compilation completed with severe errors
ПРИМЕЧАНИЕ: строкой 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;
}
От первичного поиска на Google, я получил идею, что это ошибка, которая происходит из-за «задней зависимости» от моль (Объект OBMol). Если кто-нибудь знает решение для него, пожалуйста, помогите мне.
Благодаря мат, я добавил #pragma согла рутина библиотек и эти ошибки теперь исправлено. Но я хотел спросить, есть ли способ, которым я могу использовать std :: string на CUDA? –
Я не эксперт CUDA, поэтому не знаю точно, но я не верю, что CUDA поддерживает std :: string. Я просмотрел документы Thrust и Kokkos, которые часто используются как альтернативы std :: vector, но ничего не видели о std :: string. –