OpenACC使用math.h库

时间:2013-03-11 03:27:51

标签: gpu openacc

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

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

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

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

谢谢!

2 个答案:

答案 0 :(得分:1)

所有加速器代码必须使用例程指令进行标记。否则编译器不会为它生成设备代码。 PGI有article解释如何处理这个问题。

您可以阅读该文章,或者只是尝试在代码中添加以下其他顶级声明:

#pragma acc routine(sqrt) seq

答案 1 :(得分: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实际上与标准数学库链接)