Почему следующий код не позволяет мне установить var
в 10
с помощью функции intfun
?
#include <iostream>
void intfun(int * variable){
#pragma acc parallel deviceptr(variable) num_gangs(1) num_workers(1)
{
*variable = 10;
}
}
int main(){
int var;
#pragma acc enter data create(var)
#pragma acc host_data use_device(var)
{
intfun(&var);
}
#pragma acc exit data copyout(var)
std::cout << var << std::endl;
}
Сборник:
pgcpp -acc main.cpp
Исполнение:
PGCC-S-0155-Compiler failed to translate accelerator region (see -Minfo messages): Unknown variable reference (main.cpp: 5)
PGCC/x86 Linux 14.9-0: compilation completed with severe errors
Как заставить intfun
установить значение параметра int var
на устройстве?
intfun
изменить аргумент, переданный value в области действия вызывающей стороны. Надеюсь, вы придете к ответу, что не может. Никакая магия и прагмы компилятора не могут это изменить.... - person talonmies   schedule 23.09.2014