您好,我使用的是CAPS OpenACC编译器,但是编译器似乎不能将函数链接到标准的math.h。
实际上,在我的例子中,sqrt函数在加速循环中的代码中使用。当我编译代码时,抛出了下面的错误:
/tmp/cc8L0aKZ.o:compute_fluxes_XrxAnW.translated.i:function _flux_function_central: error: undefined reference to 'sqrt'有人有什么解决方案吗?
谢谢!
发布于 2016-07-17 01:21:37
所有加速器代码都必须使用routine指令进行标记。否则,编译器不会为它生成设备代码。PGI有一个article解释了如何处理这个问题。
您可以阅读这篇文章,或者尝试在代码中添加以下代码和其他顶级声明:
#pragma acc routine(sqrt) seq发布于 2013-03-21 00:10:06
请使用以下命令重试
caps capsmc --openacc-target CUDA --io-report -Xnvcc -arch=sm_13 -c --force gcc -std=c99 -L/usr/include/math.h **-lm** compute_fluxes.c -o cf.13(-lm实际上链接到标准数学库)
https://stackoverflow.com/questions/15330713
复制相似问题