Ошибка неправильной команды при создании Tensorflow из источника

Я создаю shadoworflow из источника с помощью bazel, как описано здесь: https://www.tensorflow.org/install/install_sources

Следуя документу установки, я успешно скомпилирую следующее:

bazel build -c opt --copt=-mavx --copt=-mavx2 --copt=-mfma --copt=-mfpmath=both \
--cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0"--config=cuda \
-k //tensorflow/tools/pip_package:build_pip_package

сочетание принятого ответа здесь и примечание в документации по установке", чтобы добавить --cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0" в команду сборки для gcc 5 и более поздних версий.

однако import tensorflow as tf приводит к ошибке

illegal instruction (core dumped), exiting python.

Я дополнительно попробовал: conda update libgcc безрезультатно.

Как я могу построить shadoworflow из источника с gcc 5.0?

Ответ 1

В сообщении об ошибке сообщается, что ваша программа была скомпилирована с инструкциями, которые у вашего процессора нет, и посмотрите на свою строку сборки, что заставляет меня подозревать -mavx2 и -mfma, которые AFAIK реализованы только в довольно недавних (и высокопроизводительных) end). Обратите внимание: gcc будет скомпилировать только с флагами для инструкций, которые ваш процессор не поддерживает, но программа не будет запускаться на вашем компьютере.

Чтобы убедиться, что ваш процессор поддерживает эти флаги, запустите в bash gcc -march=native -Q --help=target | grep enabled и убедитесь, что на выходе содержатся все флаги сборки, которые вы хотите использовать (за исключением -mfpmath, который не отображается как включен или отключен, так как он позволяет выводить список результатов. Для этого вам нужно будет проверить полный вывод команды gcc -march=...).

Чтобы ответить на ваш окончательный комментарий, нет возможности "включить" эти инструкции, они реализованы на аппаратном обеспечении, либо они доступны на вашем процессоре, либо нет.