在包含import tensorflow
(未安装GPU支持)的Linux上运行Python程序时,即使从未调用过tensorflow模块的功能,也会将一堆OpenMP调试消息写入stdout。这是摘录:
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)?
答案 0 :(得分:1)
当另一个答案告诉我做什么但又不完全是如何做时,我决定添加我的答案。
如果要禁止显示这些警告,可以通过将KMP_WARNINGS环境变量设置为false值来实现。在代码中,您可以执行以下操作;在脚本中,您需要先导入os,然后设置environ变量,如下所示:
import os
os.environ["KMP_WARNINGS"] = "FALSE"
任何false值在这里都可以使用,只要它的字符串格式"0"
,"off"
和"no"
也可以使用。
答案 1 :(得分:0)
底线:将KMP_WARNINGS
envvar设置为错误值(0
,FALSE
,off
或no
)。
(如果使用多进程设置,请确保在生成子进程之前执行此操作,以使它们继承它。)
使用Google搜索"Affinity capable, using global cpuid leaf"
(带引号-即完整短语)可找到https://github.com/catboost/catboost/blob/master/contrib/libs/cxxsupp/openmp/i18n/en_US.txt。它是OpenMP实施的一部分。这段代码不是张量流的一部分(并且在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,并寻找https://github.com/catboost/catboost/blob/15712cfa704413d51618455326c30f5764956be5/contrib/libs/cxxsupp/openmp/kmp_settings.c#L4514的no official documentation comes up,这表明__kmp_stg_parse_warnings
是name
。 / p>
在这一点上,我认为应该记录该名称。因此,对其进行谷歌搜索将更快地告诉我用户应该如何设置“ KMP_WARNINGS”以及允许的值是多少。我很失望-Another result。 https://github.com/catboost/catboost/blob/15712cfa704413d51618455326c30f5764956be5/contrib/libs/cxxsupp/openmp/kmp_global.c#L116暗示它是一个envvar,有效值为:“使用” 0“,” FALSE“,”。F。“,” off“,” no“作为假值,” 1“ ,“ TRUE”,“。T。”,“ on”,“ yes”作为真实值。” 源代码还使用"KMP_WARNINGS"
作为可能的值,但名称kmp_warnings_low
表示否,用户只能提供“ true”和“ false”值,而不能提供其他任何值。上面的过滤条件表明,__kmp_stg_parse_bool
以外的任何内容都不会产生影响,http://localhost:8080/contact-api/contacts则说kmp_warnings_off
是默认值(如果用户未提供任何内容)。