OpenACC 未解析的外部函数

OpenACC unresolved extern function

我正在尝试使用 OpenACC 优化问题,但是,有一些基本功能被设置为例程。我面临的主要问题是 calloc 函数,它在最后显示以下错误:

ptxas fatal : Unresolved extern function 'calloc'

使用的编译命令为:

pgcc acc.c -acc -Minfo=accel -ta=nvidia:cc60,nordc -o acc

我之前尝试过不使用 nordc 标志,但是出现了这个错误:

nvlink error : Undefined reference to 'calloc' in '/tmp/pgccqWXdW9NTZXUL.o'

nvlink error : Undefined reference to 'rand' in '/tmp/pgccqWXdW9NTZXUL.o

许多系统调用在设备上不可用。虽然您可以将 'calloc' 替换为可用的 'malloc',但我强烈建议不要在设备代码中进行分配。除了非常慢之外,设备堆也非常小(~32MB)。如果您可以重构您的算法以不在设备上动态分配数据,您会过得更好。

对于 "rand",您需要致电 'cuRand'。如果您使用的是 PGI,我们会在“$PGI/2018/examples/CUDA-Libraries/curand”目录下提供有关如何调用 cuRand 的示例。请注意 'rand' 不是线程安全的,因此不应在并行上下文、主机或设备中使用。