¿Hay una versión de TensorFlow no comstackda para instrucciones AVX?

Estoy tratando de hacer que Tensor aparezca en mi Chromebook, no es el mejor lugar, lo sé, pero solo quiero tener una idea de ello. No he trabajado mucho en el entorno de desarrollo de Python, o en ningún otro entorno de desarrollo, así que tened paciencia. Después de descubrir el pip, instalé TensorFlow e intenté importarlo, recibiendo este error:

Python 3.5.2 (default, Nov 23 2017, 16:37:01) [GCC 5.4.0 20160609] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import tensorflow as tf 2018-12-11 06:09:54.960546: F tensorflow/core/platform/cpu_feature_guard.cc:37] The TensorFlow library was compiled to use AVX instructions, but these aren't available on your machine. Aborted (core dumped) 

Después de algunas investigaciones, descubrí que mi procesador (un Intel Celeron N2840 (Arquitectura Bay Trail-M)) no es compatible con las instrucciones AVX, por lo que me preguntaba si habría una manera de usar una versión comstackda para algún otro conjunto de instrucciones. Cog me dice que puedo usar MMX y varios SSE (sea lo que sea lo que eso signifique).

PS Esto es una especie de duplicado del error TensorFlow al usar las instrucciones de AVX en Linux mientras se trabaja en Windows en la misma máquina pero no completamente. Además no puedo comentar porque no tengo 50 reputación.

PPS He examinado ¿Cómo comstackr Tensorflow con SSE4.2 y las instrucciones de AVX? y se asustó

Un enfoque de mejores prácticas sugerido por peter-cordes es ver qué gcc va a hacer de su ‘qué capacidades tiene su CPU’ emitiendo lo siguiente:

 gcc -O3 -fverbose-asm -march=native -xc /dev/null -S -o- | less 

Este comando proporcionará información (todo) acerca de las capacidades de su CPU desde la vista de gcc, quién hará la comstackción, por lo que la vista de gcc es importante.

¿Cuándo surge esto? Cuando un progtwig ofrece adaptarse a su cpu. Dang ¿Qué sé de mi cpu. Bueno, la línea anterior le dirá todo lo que necesita saber.

Dicho esto, en general, las personas / desarrolladores que promueven capacidades basadas en cpu declararán o sugerirán una lista de cosas que irán más rápido / mejor / más fuertes si su cpu tiene *. Y lo anterior te dará *. Lee con atención lo que ves. Si no lo tienes, no lo quieres, es decir

 -mno-avx(whatever you don't want;in my case it was avx) 

Mikael Fernandez Simalango para Ubuntu 16.04 LTS proporciona una buena descripción general de la instalación de CPU con capacidad en CPU (s) más antiguas. Asume un entorno python2.7 pero se traduce fácilmente a python3. El meollo de la cuestión es extraer qué extensiones de instrucciones de cpu están disponibles en su cpu particular que se utilizarán además de -march = native a través de / proc / cpuinfo, (pero tenga en cuenta que parece estar limitado a las marcas que acepta, por lo que puede ser mejor leer realmente las instrucciones anteriores y reflexionar)

 grep flags -m1 /proc/cpuinfo | cut -d ":" -f 2 | tr '[:upper:]' '[:lower:]' | { read FLAGS; OPT="-march=native"; for flag in $FLAGS; do case "$flag" in "sse4_1" | "sse4_2" | "ssse3" | "fma" | "cx16" | "popcnt" | "avx" | "avx2") OPT+=" -m$flag";; esac; done; MODOPT=${OPT//_/\.}; echo "$MODOPT"; } 

Ejecutando esto en mi caja antigua de salida:

 -march=native -mssse3 -mcx16 -msse4.1 -msse4.2 -mpopcnt 

Se hace parte de allí. Lo que no está claro es cómo decir “no esto” y “no eso”, lo que para las CPU antiguas sería, muy probablemente, -mno-avx.

Para una vieja CPU, que importa -march y Nephanth es muy útil para esto:

 gcc -march=native -Q --help=target|grep march 

produce

 -march= westmere 

lo que significa que mi respuesta a la pregunta ./compile debería ser o podría ser, y tenga en cuenta las comillas ‘westmere’ que también se encuentran en los documentos de gcc, por lo que el ” debe estar allí por una razón

 -march='westmere' -mssse3 -mcx16 -msse4.1 -msse4.2 -mpopcnt -mno-avx 

pero esto es probablemente mucho mejor (vea la discusión abajo):

 -march=native -mssse3 -mcx16 -msse4.1 -msse4.2 -mpopcnt -mno-avx 

El -mno-avx es una opción para gcc, y los resultados, después de muchas horas, en

 Python 3.5.2 (default, Nov 23 2017, 16:37:01) [GCC 5.4.0 20160609] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import tensorflow as tf >>> >>> tf.__version__ '2.0.0-alpha0' 

que se parece al éxito.

Replanteado: en cualquier orden, averigüe qué instrucciones admite (o no) su cpu e indique esas explícitamente.