【发布时间】:2014-09-23 06:17:39
【问题描述】:
为什么下面的代码不允许我通过函数intfun将var设置为10?
#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的值?
【问题讨论】:
-
去掉所有花哨的 OpenACC pragma 并问自己一个问题“
intfun如何在调用者的范围内修改 value 传递的参数”。希望你能得到它不能得到的答案。没有编译器魔法和编译指示可以改变这一点...... -
确实,请看我编辑的帖子。