【问题标题】:OpenACC unresolved extern functionOpenACC 未解析的外部函数
【发布时间】:2019-09-03 05:40:51
【问题描述】:

我正在尝试使用 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' 的引用

【问题讨论】:

    标签: linker openacc


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-05-10
      • 2010-12-02
      • 2020-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-20
      • 2013-11-03
      • 2013-03-04
      相关资源
      最近更新 更多