1

嗨,我使用的是 CAPS OpenACC 编译器,但编译器似乎无法将函数链接到标准 math.h。

实际上,在我的例子中,我在加速循环中的代码中使用了 sqrt 函数。当我编译代码时,抛出以下错误:

/tmp/cc8L0aKZ.o:compute_fluxes_XrxAnW.translated.i:function _flux_function_central: error: undefined reference to 'sqrt'

有人得到一些解决方案吗?

谢谢!

4

2 回答 2

1

所有加速器代码都必须使用常规指令进行标记。否则编译器不会为它生成设备代码。PGI 有一篇文章解释了如何处理这个问题。

您可以阅读这篇文章,或者尝试在代码中添加以下内容和其他顶级声明:

#pragma acc routine(sqrt) seq
于 2016-07-16T17:21:36.810 回答
0

请重试

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实际上与标准数学库链接)

于 2013-03-20T16:10:06.013 回答