Устанавливаю tensorflow на Убунту из стандартного пакета: "pip install tensorflow". Запускаю пример из книжки:
$ python mnist_training.py
Using TensorFlow backend.
2018-06-24 16:12:35.542752: I tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
Epoch 1/5
60000/60000 [==============================] - 4s 66us/step - loss: 0.2575 - acc: 0.9259
Epoch 2/5
60000/60000 [==============================] - 4s 64us/step - loss: 0.1047 - acc: 0.9688
Epoch 3/5
60000/60000 [==============================] - 4s 65us/step - loss: 0.0696 - acc: 0.9794
Epoch 4/5
60000/60000 [==============================] - 4s 65us/step - loss: 0.0494 - acc: 0.9850
Epoch 5/5
60000/60000 [==============================] - 4s 65us/step - loss: 0.0383 - acc: 0.9888
10000/10000 [==============================] - 0s 34us/step
Test set accuracy: 0.9797
На одну итерацию уходит 65 микросекунд. Процессор моего ноутбука поддерживает совмещённое умножение-сложение (FMA) и 256-битные векторные регистры (AVX2), которые не задействованы в этой версии tensorflow. Чтобы их включить, надо пересобрать tensorflow с текстов. Процедура сборки долгая, компиляция в моём случае заняла порядка шести часов.
Пробуем пересобранную версию:
$ python mnist-training.py
Using TensorFlow backend.
Epoch 1/5
60000/60000 [==============================] - 3s 54us/step - loss: 0.2577 - acc: 0.9252
Epoch 2/5
60000/60000 [==============================] - 3s 52us/step - loss: 0.1044 - acc: 0.9685
Epoch 3/5
60000/60000 [==============================] - 3s 53us/step - loss: 0.0690 - acc: 0.9796
Epoch 4/5
60000/60000 [==============================] - 3s 52us/step - loss: 0.0507 - acc: 0.9850
Epoch 5/5
60000/60000 [==============================] - 3s 53us/step - loss: 0.0385 - acc: 0.9886
10000/10000 [==============================] - 0s 27us/step
Test set accuracy: 0.9767
Скорость улучшилась до 53 микросекунд на итерацию, или на 18%. Мелочь, а приятно.
$ python mnist_training.py
Using TensorFlow backend.
2018-06-24 16:12:35.542752: I tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
Epoch 1/5
60000/60000 [==============================] - 4s 66us/step - loss: 0.2575 - acc: 0.9259
Epoch 2/5
60000/60000 [==============================] - 4s 64us/step - loss: 0.1047 - acc: 0.9688
Epoch 3/5
60000/60000 [==============================] - 4s 65us/step - loss: 0.0696 - acc: 0.9794
Epoch 4/5
60000/60000 [==============================] - 4s 65us/step - loss: 0.0494 - acc: 0.9850
Epoch 5/5
60000/60000 [==============================] - 4s 65us/step - loss: 0.0383 - acc: 0.9888
10000/10000 [==============================] - 0s 34us/step
Test set accuracy: 0.9797
На одну итерацию уходит 65 микросекунд. Процессор моего ноутбука поддерживает совмещённое умножение-сложение (FMA) и 256-битные векторные регистры (AVX2), которые не задействованы в этой версии tensorflow. Чтобы их включить, надо пересобрать tensorflow с текстов. Процедура сборки долгая, компиляция в моём случае заняла порядка шести часов.
Пробуем пересобранную версию:
$ python mnist-training.py
Using TensorFlow backend.
Epoch 1/5
60000/60000 [==============================] - 3s 54us/step - loss: 0.2577 - acc: 0.9252
Epoch 2/5
60000/60000 [==============================] - 3s 52us/step - loss: 0.1044 - acc: 0.9685
Epoch 3/5
60000/60000 [==============================] - 3s 53us/step - loss: 0.0690 - acc: 0.9796
Epoch 4/5
60000/60000 [==============================] - 3s 52us/step - loss: 0.0507 - acc: 0.9850
Epoch 5/5
60000/60000 [==============================] - 3s 53us/step - loss: 0.0385 - acc: 0.9886
10000/10000 [==============================] - 0s 27us/step
Test set accuracy: 0.9767
Скорость улучшилась до 53 микросекунд на итерацию, или на 18%. Мелочь, а приятно.

no subject
Date: 2018-06-25 17:42 (UTC)256-битные векторные регистры
512 - это AVX-512
no subject
Date: 2018-06-25 18:09 (UTC)Спасибо за подсказку.