14 pontos por xguru 2021-01-18 | 2 comentários | Compartilhar no WhatsApp

Apple Matrix Coprocessor

  • Um processador dedicado a matrizes que nunca foi mencionado no anúncio do M1

  • Matrizes são muito usadas em processamento de imagem, machine learning, reconhecimento de voz/escrita, reconhecimento facial, compressão e processamento de mídia de áudio/vídeo

  • Isso não é trabalho do Neural Engine? Qual é a diferença em relação ao Neural Engine?

→ GPU e Neural Engine são accelerators (aceleradores)

→ É ineficiente que a CPU trabalhe para preencher o espaço de memória que os aceleradores vão usar

→ Nesse momento, o coprocessador observa as instruções (spy) e processa isso no lugar

→ Para usar isso, é preciso definir um conjunto de instruções separado

→ A ARM vinha recusando a inclusão de instruções customizadas, mas desde 2019 começou a oferecer extensões que tornam isso possível

→ Esse provavelmente é o motivo de as instruções AMX não aparecerem na documentação oficial

  • Então qual é a diferença em relação ao SIMD Vector Engine presente na ARM?

→ SIMD: Single Instruction Multiple Data

→ Uma forma de obter alto desempenho ao executar a mesma operação em vários dados

→ Está relacionado a operações com matrizes

→ Mas o SIMD, como a ALU e a FPU, é embutido na CPU, enquanto o coprocessador é externo

→ O antigo Intel 8087 (FPU) tinha mais transistores do que o 8086, então naquela época era difícil colocá-los juntos. Com a evolução tecnológica, o número de transistores aumentou e a FPU passou a ser embutida na CPU, fazendo esse modelo desaparecer

  • Não está claro por que o AMX não foi colocado dentro do núcleo Firestorm

→ Talvez tenha sido mais fácil deixá-lo separado para trabalhar em paralelo com a CPU,

→ e, do ponto de vista da Apple, ela também pode ter preferido manter fora da CPU elementos que não fazem parte do padrão ARM.

  • Então por que o AMX ficou escondido?

→ Se o AMX não aparece na documentação oficial, como descobriram sua existência?

→ Dougal Johnson descobriu isso por meio de engenharia reversa

→ A Apple oferece várias funções por meio do Accelerate, seu framework para operações matriciais

⇨ vImage : processamento de imagem de alto nível. Conversão de formatos e manipulação de imagens

⇨ BLAS : álgebra linear (operações com matrizes e vetores)

⇨ BNNS : redes neurais e treinamento

⇨ vDSP : processamento digital de sinais, como transformada de Fourier. Operações matemáticas para processamento de imagem ou áudio

⇨ LAPACK : funções de álgebra linear de alto nível, equações lineares etc.

→ Essa biblioteca Accelerate acelera os cálculos usando o AMX

→ Se as instruções em si fossem divulgadas, o ecossistema ARM teria se fragmentado (nem a ARM nem a Apple querem isso)

→ Ao não divulgar isso e expor apenas o framework, a Apple consegue oferecer alto desempenho e, ao mesmo tempo, manter a liberdade de alterar o conjunto de instruções a qualquer momento

⇨ Isso é possível porque a Apple controla hardware e software ao mesmo tempo

⇨ Se o desenvolvedor trabalhar apenas por meio do Accelerate, também poderá se beneficiar de melhorias futuras

  • Quais são as vantagens do Apple Matrix Coprocessor?

→ Segundo uma comparação da Nod Labs com o NEON, a instrução SIMD padrão do ARMv8.6, o AMX é mais de 2 vezes mais rápido

→ Isso não significa que o AMX seja melhor em tudo, mas pelo menos em machine learning e computação de alto desempenho (HPC) ele leva vantagem

2 comentários

 
godrm 2021-01-19

O OpenCL desapareceu e, fora a aceleração via Metal, eles também não destacavam tanto o Accelerate,

mas vinham aumentando as bibliotecas a cada ano, então é surpreendente saber que colocaram um coprocessador dedicado para aceleração por hardware.

 
xguru 2021-01-18

Este é um texto de acompanhamento do engenheiro que escreveu os dois textos abaixo. Recomendo ler junto também.

→ Ouvir a explicação no YouTube: https://youtu.be/71LlixEBK0o

→ Ouvir a explicação no YouTube: https://youtu.be/F5sIQZvlJc8