14 points par xguru 2021-01-18 | 2 commentaires | Partager sur WhatsApp

Apple Matrix Coprocessor

  • Processeur dédié aux matrices, jamais mentionné lors de la présentation du M1

  • Les matrices sont largement utilisées dans le traitement d’image, le machine learning, la reconnaissance vocale/écrite, la reconnaissance faciale, la compression, ainsi que le traitement audio/vidéo

  • Ce n’est pas le Neural Engine qui s’en charge ? Quelle différence avec le Neural Engine ?

→ Le GPU ou le Neural Engine sont des accélérateurs

→ Il est inefficace que le CPU travaille pour remplir l’espace mémoire que ces accélérateurs vont utiliser

→ Dans ce cas, un coprocesseur observe les instructions et prend ce travail en charge à la place

→ Pour utiliser cela, il faut définir un jeu d’instructions distinct

→ ARM a longtemps refusé l’ajout d’instructions personnalisées, mais a commencé à proposer des extensions possibles à partir de 2019

→ C’est probablement pour cette raison que les instructions AMX n’apparaissent pas dans la documentation officielle

  • Alors, quelle différence avec le SIMD Vector Engine intégré à ARM ?

→ SIMD : Single Instruction Multiple Data

→ Une méthode offrant de hautes performances lorsqu’on exécute la même opération sur plusieurs données

→ Cela est lié aux opérations matricielles

→ Mais le SIMD est intégré au CPU comme l’ALU ou la FPU, tandis qu’un coprocesseur est externe

→ Autrefois, le 8087 d’Intel (FPU) avait plus de transistors encore que le 8086, ce qui rendait leur intégration difficile à l’époque. Avec les progrès technologiques, le nombre de transistors a augmenté, les FPU ont été intégrées au CPU, et ce type de coprocesseur a disparu

  • On ne sait pas clairement pourquoi AMX n’a pas été intégré au cœur Firestorm

→ Il était probablement plus simple de le séparer afin qu’il puisse travailler en parallèle du CPU,

→ et Apple souhaitait peut-être aussi garder à l’extérieur ce qui ne relève pas du standard ARM.

  • Alors pourquoi AMX a-t-il été caché ?

→ AMX n’apparaît pas dans la documentation officielle, alors comment cela a-t-il été découvert ?

→ Dougal Johnson l’a mis au jour par rétro-ingénierie

→ Apple fournit diverses fonctions via Accelerate, son framework pour les opérations matricielles

⇨ vImage : traitement d’image de haut niveau, conversion de formats et manipulation d’images

⇨ BLAS : algèbre linéaire (opérations sur matrices et vecteurs)

⇨ BNNS : réseaux de neurones et apprentissage

⇨ vDSP : traitement numérique du signal, comme la transformée de Fourier, et opérations mathématiques pour l’image ou l’audio

⇨ LAPACK : fonctions d’algèbre linéaire de haut niveau, équations linéaires, etc.

→ Cette bibliothèque Accelerate accélère les calculs en utilisant AMX

→ Si Apple avait rendu ces instructions publiques, l’écosystème ARM se serait fragmenté (ce que ni ARM ni Apple ne souhaitent)

→ Apple ne les publie pas, mais les expose via un framework, ce qui permet d’offrir de hautes performances tout en gardant la possibilité de modifier le jeu d’instructions à tout moment

⇨ C’est possible parce qu’Apple contrôle à la fois le matériel et le logiciel

⇨ Les développeurs n’ont qu’à passer par Accelerate et bénéficient ainsi automatiquement des améliorations futures

  • Quels sont les avantages de l’Apple Matrix Coprocessor ?

→ Selon une comparaison de Nod Labs avec NEON, le jeu d’instructions SIMD standard d’ARMv8.6, AMX est plus de deux fois plus rapide

→ Cela ne signifie pas qu’AMX est supérieur en tout, mais au moins en machine learning et en calcul haute performance (HPC), AMX semble avoir l’avantage

2 commentaires

 
godrm 2021-01-19

Avec la disparition d'OpenCL et au-delà de l'accélération Metal, Apple n'a pas particulièrement mis en avant Accelerate,

mais la bibliothèque s'enrichissait chaque année, donc c'est surprenant d'apprendre qu'un coprocesseur dédié à l'accélération matérielle a été intégré.

 
xguru 2021-01-18

Il s’agit d’un article de suivi de l’ingénieur qui a écrit les deux textes ci-dessous. Je vous recommande de les lire aussi.

→ Explication en vidéo sur YouTube : https://youtu.be/71LlixEBK0o

→ Explication en vidéo sur YouTube : https://youtu.be/F5sIQZvlJc8