openacc - (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
在代码中没有任何改变,所以它可能与编译器有关。我今天安装了一个新程序,我本可以触摸一些我不应该触摸的东西。
解决方案
该消息应该只是一个警告。池分配器将被绕过,而是为每个分配直接调用 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 驱动程序?硬件有什么变化吗?
推荐阅读
- regex - 正则表达式在找到模式的最终实例后捕获文本
- php - 使用php从html表单嵌套xml输出
- git - Git 搜索问题
- java-8 - Dropwizard 测试 - ResourceTestRule 抛出 NoClassDefFoundError: ch/qos/logback/core/filter/Filter
- ios - 未收到来自 Firebase 的通知
- java - 如何将 csrf 令牌添加到 html 表单?
- javascript - 用于转换 Observable 的 rxjs 运算符
- > 到可观察的
- jmeter - 如何对 JMeter 中的值进行硬编码
- regex - 谷歌分析目标的正则表达式
- python - tkinter 中的 matplotlib pick_event