首页 > 解决方案 > (OpenACC) 池分配器:指定的池大小对于这个设备来说太大了 当前文件

问题描述

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

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

当前文件:/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

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

标签: openacc

解决方案


该消息应该只是一个警告。池分配器将被绕过,而是为每个分配直接调用 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 驱动程序?硬件有什么变化吗?


推荐阅读