gpt4 book ai didi

python - 在 CPU 上运行 Tensorflow 时抑制 OpenMP 调试消息

转载 作者:太空宇宙 更新时间:2023-11-03 15:33:57 26 4
gpt4 key购买 nike

在 Linux 上运行包含 import tensorflow(在没有 GPU 支持的情况下安装)的 Python 程序时,即使没有调用 tensorflow 模块中的函数,也会将一堆 OpenMP 调试消息写入标准输出.以下是摘录:

OMP: Info #212: KMP_AFFINITY: decoding x2APIC ids.
OMP: Info #210: KMP_AFFINITY: Affinity capable, using global cpuid leaf 11 info
OMP: Info #154: KMP_AFFINITY: Initial OS proc set respected: 0-3
OMP: Info #156: KMP_AFFINITY: 4 available OS procs
OMP: Info #157: KMP_AFFINITY: Uniform topology

在导入 tensorflow 之前设置 os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3' 不会消除这些消息,我该如何抑制它们(从 Python)?

最佳答案

底线:KMP_WARNINGS envvar 设置为假值(0FALSEoff)。

(如果您使用多进程设置,请确保在生成子进程之前执行此操作,以便它们继承它。)


谷歌搜索 “Affinity capable, using global cpuid leaf”(带引号——即作为一个完整的短语)找到 https://github.com/catboost/catboost/blob/master/contrib/libs/cxxsupp/openmp/i18n/en_US.txt .它是 OpenMP 实现的一部分。此代码不是 tensorflow 的一部分(并且在 https://github.com/tensorflow/tensorflow 中搜索专门针对名为“openmp”的短语或子模块引用一无所获)但这是可以理解的,因为 OpenMP 是编译器实现的一部分(此文件明确声称是LLVM 的一部分——即 clang)。这段代码可能不完全是您的程序正在使用的,而是它的另一个版本,但我们可以假设一般逻辑是相同的,因此我们可以使用这段代码进行导航。

现在,searching for references to the entity containing this phrase (即 AffUseGlobCpuidL11 -- 这是消息的 ID),then for a definition of KMP_INFORM , then for a definition of __kmp_msg最终找到the code doing the logging . It says它只会使消息静音 if ( severity != kmp_ms_fatal && __kmp_generate_warnings == kmp_warnings_off )。查看对 __kmp_generate_warnings 的引用以找到它的分配位置找到 https://github.com/catboost/catboost/blob/15712cfa704413d51618455326c30f5764956be5/contrib/libs/cxxsupp/openmp/kmp_settings.c#L944并寻找 __kmp_stg_parse_warnings 发现 https://github.com/catboost/catboost/blob/15712cfa704413d51618455326c30f5764956be5/contrib/libs/cxxsupp/openmp/kmp_settings.c#L4514这表明 name"KMP_WARNINGS"

此时,我认为应该记录这个名称。所以谷歌搜索会更快地告诉我用户应该如何设置“KMP_WARNINGS”以及它的允许值是什么。我很失望——no official documentation comes up . Another result虽然建议它是一个环境变量,但有效值为:“使用“0”、“FALSE”、“.F”、“off”、“no”作为假值,“1”、“TRUE”、 “.T.”、“on”、“yes”作为真值。 源代码还使用 kmp_warnings_low 作为可能的值,但名称 __kmp_stg_parse_bool提示不行,用户只能提供一个“true”和“false”的值,没有别的。上面的过滤条件表明,除了 kmp_warnings_off 之外什么都不会产生影响,并且 https://github.com/catboost/catboost/blob/15712cfa704413d51618455326c30f5764956be5/contrib/libs/cxxsupp/openmp/kmp_global.c#L116表示如果用户未提供任何内容,则 low 是默认值。

关于python - 在 CPU 上运行 Tensorflow 时抑制 OpenMP 调试消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56085015/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com