程序链接错误undefined reference to 'slave_accr_ajust_in_data_float_5D'



  • 在使用openacc程序对Collide.c进行优化的时候,使用了annotate(dimension(flags(Xed-Xst+2, Yed-Yst+2, 19), nodes(2, Xed-Xst+2, Yed-Yst+2, nz, 2)))语句来指定维度,然后make的时候遇到如下错误
    0_1533121071264_ab86bf4f-4ecd-494d-98c8-62ebfb5d4d63-image.png
    若有人知道的话,请指点一下。



  • 用OpenACC编译了其中的模块就要最后用OpenACC链接



  • @夜深忽梦少年事 嗯,我是用openACC链接的,截图也能看出来。



  • 啊, 你在ACC的代码段里面调了accr_adjust_in_data_float_5D? 但是这个函数没有对应的从核函数, 所以就炸了...
    然后就是.
    如果那个函数是你自己写的你可能加个acc routine的pragma, 不然就只能换思路了.



  • nodes是一个动态指针,给它开辟空间的时候调用了float_5D那个函数,如果要用到openacc中的话,就需要指定它的维度,因此而导致这样的错误。但该函数貌似封装起来了,所以程序里没有具体的函数实现,这样的话也不能使用routine语句来指定,有点不知道该怎么办了……还比较好奇的是,flags和nodes是类似的,为啥copyin(flags)的时候却不会报错,copy(nodes)的时候就会有问题……


登录后回复