【问题标题】:How to run TensorFlow for SSE4.1 SSE4.2 AVX AVX2 FMA on Python with Spyder on MacOs如何在 MacOs 上使用 Spyder 在 Python 上为 SSE4.1 SSE4.2 AVX AVX2 FMA 运行 TensorFlow
【发布时间】:2019-09-28 19:21:27
【问题描述】:

我正在尝试运行代码:

from keras.datasets import imdb as im
from keras.preprocessing import sequence as seq
from keras.models import Sequential
from keras.layers import Embedding
from keras.layers import LSTM
from keras.layers import Dense

train_set, test_set = im.load_data(num_words = 10000)
X_train, y_train = train_set
X_test, y_test = test_set

X_train_padded = seq.pad_sequences(X_train, maxlen = 100)
X_test_padded = seq.pad_sequences(X_test, maxlen = 100)

model = Sequential()
model.add(Embedding(input_dim=10000, output_dim=128))
model.add(LSTM(units=128))
model.add(Dense(units=1, activation='sigmoid'))
model.compile(loss='binary_crossentropy',
                  optimizer='sgd',
                  metrics=['accuracy'])
scores = model.fit(X_train_padded,y_train)
                   

当我运行代码时,它会给我一条消息:

I tensorflow/core/platform/cpu_feature_guard.cc:145] 此 TensorFlow 二进制文件通过 Intel(R) MKL-DNN 进行了优化,可在性能关键操作中使用以下 CPU 指令:SSE4.1 SSE4.2 AVX AVX2 FMA

要在非 MKL-DNN 操作中启用它们,请使用适当的编译器标志重建 TensorFlow。

I tensorflow/core/common_runtime/process_util.cc:115] 使用默认互操作设置创建新线程池:4. 使用 inter_op_parallelism_threads 调整以获得最佳性能。

我不明白问题出在哪里以及我接下来应该做什么。我安装了“tenserflow”包(1.14.0),但这并没有解决问题。

我已查看此参考资料,但我不知道我在寻找什么:

https://stackoverflow.com/questions/41293077/how-to-compile-tensorflow-with-sse4-2-and-avx-instructions

谁能帮帮我。谢谢。

我的配置:osx-64,MacOS Mojave v.10.14.6,带有 Spyder 和 Anaconda 的 Python 3.7,conda 版本:4.7.12

【问题讨论】:

  • 或许您可以忽略该消息。如果我们可以相信它的内容,它说:如果您希望非性能关键操作更快一点,请自行编译 TensorFlow。不过编译TensorFlow也不是那么容易,所以我想什么都不做也可以。

标签: tensorflow keras cpu compiler-optimization python-3.7


【解决方案1】:

您可以忽略该消息,一切都会正常。

据我从https://github.com/tensorflow/tensorflow/pull/24782/commits/7faefa4bb665e115cc744d7895a407338624993f 收集到的信息,当 TensorFlow 使用 MKL-DNN 支持(根据您的消息)编译时,MKL-DNN 将负责使用所有可用的 CPU 性能功能。因此,TensorFlow 没有被编译为使用它们并不重要。

【讨论】:

    【解决方案2】:

    这可能无法回答您提出的确切问题,但在运行类似任务时我收到了非常类似的错误消息。

    除了上面的错误信息,我还有以下错误信息:

    OMP:错误 #15:正在初始化 libiomp5.dylib,但发现 libiomp5.dylib 已初始化。 OMP:提示 这意味着 OpenMP 运行时的多个副本已链接到程序中。这是危险的,因为它会降低性能或导致不正确的结果。最好的办法是确保只有一个 OpenMP 运行时链接到进程中,例如通过避免在任何库中静态链接 OpenMP 运行时。作为不安全、不受支持、未记录的解决方法,您可以设置环境变量 KMP_DUPLICATE_LIB_OK=TRUE 以允许程序继续执行,但这可能会导致崩溃或静默产生不正确的结果。更多信息请见http://www.intel.com/software/products/support/

    错误已解决:

    conda install nomkl
    

    这是根据这个stackoverflow帖子

    【讨论】:

    • 您发布的错误消息和解决方案与原始问题无关。他们会出于错误的原因使消息静音。
    猜你喜欢
    • 2017-07-31
    • 1970-01-01
    • 1970-01-01
    • 2017-05-08
    • 2018-03-30
    相关资源
    最近更新 更多