总结如下:AVX,SSE4.1,SSE4.2,MFA是X86 CPU上不同类型的扩展指令集。其中许多包含处理矩阵或向量操作的优化指令。
注意:并不是SSE4.2是取代SSE4.1的较新版本的指令。SSE 4=SSE4.1(一组47条指令)+SSE4.2(一组7条指令)。
在TensorFlow编译的上下文中,如果您的计算机支持AVX 2和AVX,以及SSE4.1和SSE4.2,则应该为所有人设置这些优化标志。
不要只使用SSE4.2,认为它更新,它应该是SSE4.1的超级种子。
对于任何系统来说,最好的选择可能是:(--copt=-march=native默认打开当前cpu支持的所有优化)
bazel build -c opt --copt=-march=native --copt=-mfpmath=both //tensorflow/tools/pip_package:build_pip_package
-march=native启用您的cpu支持的所有选项,因此它将使-mavx512f -mavx2 -mavx -mfma -msse4.2多余。
(同时,-mavx2已启用-mavx and -msse4.2)。此外,如果您使用的CPU不支持这些选项之一(如FMA),则使用-mfma会产生错误的二进制文件。
显式指定编译选项:
bazel build -c opt –copt=-msse4.1 –copt=-msse4.2 –copt=-mavx –copt=-mavx2 –copt=