(OpenACC) 池分配器:指定的池大小对于该设备当前文件来说太大

(OpenACC) pool allocator: Specified pool size too big for this device Current file

我每次尝试 运行 应用程序时都会收到此错误,尽管它编译得很好:

池分配器:指定的池大小对于这个设备来说太大

当前文件:/home/marco/Desktop/tools.c 功能:PTC3D 行:330

此文件已编译:-ta=tesla:cc35,cc50,cc60,cc70,cc70,cc75,cc80

奇怪的是,我只是在重新启动 PC 后才收到此错误,而在此之前我从未收到过此错误。

我编译:

CC = nvc

CFLAGS = -c -acc -ta=tesla:managed:cuda11.0 -Minfo=accel -w -O3 -DTEST_CASE=3

LDFLAGS = -lm -acc -ta=tesla:managed:cuda11.0

代码中没有任何更改,所以可能与编译器有关。我今天安装了一个新程序,我可以触摸一些我不应该触摸的东西。

该消息应该只是一个警告。池分配器将是 by-passed,而 CUDA 统一内存 API 例程将直接为每次分配调用。如果你有很多小的分配,你可能会看到一些性能下降,因为 API 调用有相对高的开销,但不应该损害功能。

默认的 CUDA 统一内存池大小为 1GB,但可以通过设置环境变量 NVCOMPILER_ACC_POOL_SIZE 进行修改。您可以尝试将大小设置为更小的值以查看它是否修复了消息。可以在以下位置找到完整的详细信息:https://docs.nvidia.com/hpc-sdk/compilers/hpc-compilers-user-guide/index.html#acc-mem-unified

消息开始出现的确切原因尚不清楚,但很可能与硬件相关,或者可能是 CUDA 驱动程序问题。您使用的是什么设备和 CUDA 驱动程序?硬件有什么变化吗?

我解决了进入软件和更新,在其他驱动程序中,设置推荐的驱动程序:NVIDIA 驱动程序元数据包。