Alguns dos mais recentes processadores Intel suportam a família AVX-512 de instruções vetoriais . Eles são executados em blocos de 512 bits (64 bytes). A vantagem do suporte de hardware para instruções tão grandes é que o processador processa mais dados em um único ciclo de clock.Se o código for carregado com palavras de 64 bits (8 bytes), teoricamente, se você não levar em consideração outros fatores, poderá acelerar a execução em oito vezes se usar as instruções do AVX-512.A extensão AVX-512 para o sistema de comando x86 suporta 8 registros de máscara, formatos compactados de 512 bits para números inteiros e fracionários e operações neles, modos de arredondamento de ajuste fino (permite substituir configurações globais), operações de transmissão, supressão de erros em operações de número fracionário, operações de coleta / dispersão, operações matemáticas rápidas, codificação compacta de grandes compensações.O conjunto inicial do AVX-512 inclui oito grupos de instruções:- Instruções de detecção de conflitos AVX-512 (CDI)
- Instruções Exponenciais e Recíprocas AVX-512 (ERI)
- Instruções de pré-busca do AVX-512 (PFI)
- AVX-512 Vector Length Extensions (VL)
- Instruções de bytes e palavras do AVX-512 (BW)
- AVX-512 Doubleword e Quadword Instructions (DQ)
- Adicionar multiplicado por fusão AVX-512 (IFMA)
- Instruções de manipulação de bytes de vetor AVX-512 (VBMI)
A família AVX-512 é suportada no coprocessador Intel Xeon Phi (anteriormente Intel MIC) Knights Landing, em alguns processadores Skylake Xeon (SKX) e nos futuros processadores Cannonlake que estarão disponíveis em 2017. Os processadores listados não oferecem suporte a todas as instruções. Por exemplo, o Knights Landing Xeon Phi suporta apenas CD, ER e PF. O processador Skylake Xeon (SKX) suporta CD, VL, BW e DQ. Processador Cannonlake - CD, VL, BW, DQ, IFMA.Naturalmente, nem todo código pode ser convertido em instruções de vetor, mas você não precisa fazer isso com todo o código, escreveem seu blog Daniel Lemire, professor de ciência da computação na Universidade de Quebec. Segundo ele, é importante otimizar o "código quente", que consome mais recursos do processador. Em muitos sistemas, o "código quente" é criado a partir de uma série de loops que rolam bilhões de vezes. É isso que deve ser otimizado, esse é o principal benefício.Por exemplo, se esse código Python for recompilado das instruções padrão de 64 bits para o AVX-512 usando o MKL Numpy , o tempo de execução será reduzido de 6-7 segundos para 1 segundo no mesmo processador.import numpy as np
np.random.seed(1234)
xx = np.random.rand(1000000).reshape(1000, 1000)
%timeit np.linalg.eig(xx)
Suporte de hardware de aprendizado profundo
As redes neurais e o aprendizado profundo são uma das tendências mais brilhantes dos últimos tempos. Google, Facebook e outras grandes empresas estão tentando usar redes neurais sempre que possível: em sistemas de recomendação, reconhecimento de rosto, tradução de texto, reconhecimento de fala, classificação de fotos e até em jogos de tabuleiro como o go (mas isso é mais para publicidade do que para ganho comercial). Alguns estão tentando aplicar um treinamento aprofundado em áreas fora do padrão, como o treinamento do piloto automático .Entre os investidores de capital de risco, agora existe o entendimento de que o esquema mais eficaz para enriquecer rapidamente é lançar uma startup no campo do aprendizado profundo, que a empresa das Big Five (Facebook, Google, Apple, Microsoft, Amazon) comprará imediatamente. Recentemente, essas empresas competiram ferozmente no campo da compra de talentos, de modo que uma startup partiu instantaneamente e a um ótimo preço à taxa de pelo menos US $ 10 milhões por funcionário. Esse plano de negócios tornou-se ainda mais simples, à medida que as empresas lançam ferramentas de desenvolvimento de código aberto, como o Google fez com o TensorFlow .Infelizmente para a Intel, esta empresa fica para trás e quase não participa do jogo. O professor Lemir reconhece que as GPUs da Nvidia agora são consideradas o padrão do setor. É neles que eles executam o código de programas para aprendizado de máquina.Não é que os engenheiros da Intel tenham adiado a tendência. Só que as próprias GPUs, sem instruções especiais, são mais adequadas para cálculos de aprendizado profundo.No entanto, a Intel está preparando um contra-ataque, como resultado da qual a situação pode virar de cabeça para baixo. Em setembro, a empresa publicou uma nova referência de programação de extensões de conjunto de instruções da arquitetura Intelindicando todas as instruções que serão suportadas em processadores futuros. Se você olhar para este documento, estamos aguardando uma surpresa agradável. Acontece que a família de instruções AVX-512 foi dividida em vários grupos e expandida.Em particular, dois grupos de instruções foram projetados especificamente para treinamento aprofundado: AVX512_4VNNIW e AVX512_4FMAPS. A julgar pela descrição, essas instruções podem ser úteis não apenas no aprendizado profundo, mas também em muitas outras tarefas.- AVX512_4VNNIW: instruções vetoriais para aprendizado profundo aprimoraram a precisão das variáveis de palavras
- AVX512_4FMAPS: instruções de vetor para precisão única de ponto flutuante de aprendizado profundo
Esta é uma notícia muito boa.Quando esse suporte aparece nos processadores Intel padrão, eles podem se aproximar ou até superar o desempenho gráfico de aprendizado detalhado da Nvidia. Obviamente, sujeito a programas de otimização apropriados. Quem sabe, a mesma história se repete repentinamente como na codificação de vídeo, quando, após adicionar o suporte de hardware H.264 e H.265 à CPU, os processadores Intel com gráficos integrados começaram a codificar e decodificar o vídeo mais rapidamente do que as placas de vídeo Nvidia e AMD separadas.