Intel Intrinsics no es más que una biblioteca que facilita el acceso a una serie de conjuntos de instrucciones de Intel, como SSE (Streaming SIMD Extensions), AVX, etc. - para los programadores de C. El objetivo es poder utilizar estos conjuntos de instrucciones para la paralelización, etc. sin tener que hacer programación en ensamblador de bajo nivel a mano.
La plataforma ARM tiene conjuntos de instrucciones similares que sirven para muchos de los mismos propósitos. Por ejemplo, NEON es la alternativa de ARM a SSE en Intel. NEON proporciona instrucciones SIMD que se pueden aprovechar para aumentar la paralelización.
Y similar al Intel Intrinsics, tienes el ARM Compiler Intrinsics, que sirve para el mismo propósito. Puedes incluir "arm_neon.h" en tu programa C para poder utilizar las instrucciones NEON con una interfaz C sin tener que recurrir a la programación en ensamblador de bajo nivel.
No obstante, cabe señalar que las instrucciones disponibles en Intel y ARM no son idénticas. Por tanto, al igual que ocurre con los "programas ordinarios", no se pueden utilizar instrucciones SIMD para Intel en ARM (o viceversa) directamente. En la práctica, los programadores de software suelen utilizar bibliotecas de software con operaciones de alto nivel ya preparadas que son capaces de aprovechar tanto las instrucciones Intel como las ARM. Un buen ejemplo es la biblioteca de procesamiento de imágenes "Simd" ( https://github.com/ermig1979/Simd ) que ofrece operaciones de alto nivel con implementaciones optimizadas independientes para SSE, AVX, VMX, VSX y NEON (es decir, Intel, PowerPC y ARM).
Por lo que veo, el crecimiento de las nuevas funciones de paralización es muy elevado tanto en plataformas Intel como ARM: es esencial para ofrecer un rendimiento de nueva generación a algunos usuarios. En los chips ARM más recientes se tiene acceso, por ejemplo, al conjunto de instrucciones SVE (Scalable Vector Extensions, que es esencialmente un conjunto de instrucciones SIMD aún mejor para los procesadores ARM de 64 bits). No hay ninguna ventaja inherente a las plataformas Intel o ARM en términos de proporcionar nuevos y mejorados conjuntos de instrucciones SIMD para los programadores en el futuro.
Los propios procesadores de Apple (por ejemplo, en iPhones y iPads) han tenido el conjunto de instrucciones NEON durante muchos años. Las CPU A5 y posteriores también tienen el conjunto NEON avanzado. Las nuevas CPU A11 incorporan las instrucciones SVE, y las últimas CPU A12 añaden soporte SIMD para números complejos.
1 votos
Los comentarios no son para extender la discusión; esta conversación ha sido movido al chat .