您好我使用的是CAPS OpenACC编译器,但似乎编译器无法将这些函数链接到标准math.h。
实际上,在我的例子中,sqrt函数在加速循环中的代码中使用。当我编译代码时,会抛出以下错误:
/tmp/cc8L0aKZ.o:compute_fluxes_XrxAnW.translated.i:function _flux_function_central: error: undefined reference to 'sqrt'
有人得到一些解决方案吗?
谢谢!
答案 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
实际上与标准数学库链接)