我正在尝试使用OpenACC优化问题,但是有一些设置为例程的基本功能。我面临的主要问题是calloc
函数,该函数最后显示以下错误:
ptxas致命:未解决的外部函数'calloc'
用于编译的命令是:
pgcc acc.c -acc -Minfo=accel -ta=nvidia:cc60,nordc -o acc
我以前尝试不使用nordc标志,但是,出现此错误:
nvlink错误:“ / tmp / pgccqWXdW9NTZXUL.o”中对“ calloc”的未定义引用
nvlink错误:'/ tmp / pgccqWXdW9NTZXUL.o中对'rand'的未定义引用
答案 0 :(得分:0)
许多系统调用在设备上不可用。虽然您可以将'calloc'替换为可用的'malloc',但我强烈建议不要在设备代码中进行分配。除了非常慢之外,设备堆还很小(〜32MB)。如果您可以重构算法而不在设备上动态分配数据,那将更好。
对于“ rand”,您需要调用“ cuRand”。如果您使用的是PGI,我们将在“ $ PGI / 2018 / examples / CUDA-Libraries / curand”目录下提供有关如何调用cuRand的示例。请注意,“ rand”不是线程安全的,因此不应在并行上下文,主机或设备中使用。