Depois de passar por uma série de rodadas de revisões de patch no ano passado, as mudanças do lado do kernel da Intel para suportar Advanced Matrix Extensions (AMX) com processadores Xeon escaláveis " Sapphire Rapids " de última geração chegaram ao Linux 5.16!
A Intel foi rápida em colocar as mudanças iniciais de AMX no compilador LLVM e no compilador GCC, ao mesmo tempo em que obter os bits do lado do kernel foi o que levou mais de um ano, mas agora na linha principal, meses antes da rampa do Sapphire Rapids no segundo trimestre.
Uma série de mudanças no kernel foram necessárias para habilitar o uso do AMX, incluindo que os aplicativos de espaço do usuário precisam realmente solicitar o uso do AMX do kernel por meio de uma interface prctl. Comparado com AVX e a maioria das outras extensões de conjunto de instruções onde os aplicativos podem apenas usá-lo se forem suportados pela CPU, com AMX ele primeiro precisa ser solicitado pelo kernel. Isso deve ajudar a isolar o comportamento de down-clocking de frequência e outros impactos de desempenho que podem ocorrer se o kernel receber mais controle e estiver ciente do planejamento de um aplicativo para usar as instruções AMX.
Além de muitos outros códigos de kernel alterados na preparação para as extensões de matriz avançada.
Na segunda-feira, o suporte foi mesclado como parte das mudanças "x86 / fpu" para o Linux 5.16.
- Adicionar o suporte AMX (Advanced Matrix eXtensions) (finalmente):
O AMX é um grande componente XSTATE que estará disponível com CPUs Saphire Rapids XEON. O recurso vem com um MSR extra (MSR_XFD) que permite interceptar o (primeiro) uso de uma instrução relacionada ao AMX, que tem dois benefícios:
1) Permite que o kernel controle o acesso ao recurso
2) Permite que o kernel dinamicamente alocar o grande buffer de estado de registro em vez de sobrecarregar cada tarefa com o armazenamento de estado extra de 8K ou maior.
Teria sido ótimo obter esse tipo de controle já com o AVX512.
O suporte vem com os seguintes componentes de infraestrutura:
1) arch_prctl () para
- ler os recursos suportados (equivalente a XGETBV (0))
- leia os recursos permitidos para uma tarefa
- solicite permissão para um recurso habilitado dinamicamente. A permissão é concedida por processo, herdada em fork () e liberada em exec (). A política de permissão do kernel é restrita à validação do tamanho do sigaltstack, mas o syscall obviamente permite outras restrições via seccomp etc.
...
A grande refatoração do código FPU, que permitiu fazer uma integração adequada, foi iniciada há exatamente 3 semanas. A refatoração do código FPU existente e dos patches AMX originais levou uma semana e foi sujeita a extensas revisões e testes. A única precipitação que não foi detectada na análise e teste imediatamente foi restrita aos sistemas habilitados para AMX, o que é completamente irrelevante para qualquer pessoa fora da Intel e seu programa de acesso antecipado. Pode haver dragões à espreita, como de costume, mas até agora a refatoração refinada tem se mantido e a precipitação eventual ainda não detectada é dividida em duas partes e deve ser facilmente endereçada antes do lançamento do 5.16. Últimas palavras famosas...
Até a próxima !!
Nenhum comentário:
Postar um comentário