Suporte ao kernel Linux AVX2

1

Eu gostaria de saber quando o kernel do Linux foi modificado para incorporar suporte completo para conjuntos de instruções do AVX2.

Eu testei alguns softwares usando o conjunto de instruções AVX2 que alguém afirma ser 20% mais rápido em suas mãos em um computador Linux, mas meus testes foram feitos em um servidor com suporte avx2 de acordo com /proc/cpuinfo usando um kernel: 3.10. 0-229.1.2.el7.x86_64

O kernel 3.10.0 é recente o suficiente para suportar o AVX2?

PS: reformulando a partir de um comentário: o que é o kernel que suportará o AVX2 completamente para um binário compilado com a versão mais recente do GCC, que presumivelmente é a melhor para o suporte a AVX2?

    
por 719016 19.11.2015 / 14:01

1 resposta

1

Para executar aplicativos com código avx2, o kernel deve manipular corretamente o armazenamento / restauração do estado da cpu ao alternar entre as tarefas. Isso foi feito em 2.6.30 ( link . O comando sw também deve conter (pode ser uma decisão em tempo de compilação incluí-lo ou não) código avx2 e utilizá-lo (ou pode conter ambos e decidir sobre o tempo de execução, mas para fazer isso ele precisa detectar que seu cpu suporta avx2). Quanto benefício o avx2 traz também depende do cpu (alguns cpus o suportam, mas realmente não se beneficiam dele devido a várias razões. Os processadores Intel geralmente beneficiam mais do que os processadores AMD e cada nova geração se beneficia mais).

O próprio kernel também pode conter código otimizado avx2 para coisas como criptografia, hashing, compactação e qualquer outra coisa que se beneficie dele (nem tudo funciona e algumas coisas que na teoria são muito difíceis de codificar usando avx2 de uma forma que é ambos corretos e mais rápidos que o código escalar fazendo a mesma coisa) dependendo das configurações usadas no tempo de compilação.

Você pode verificar isso fazendo coisas como dmesg | grep avx2 ou lendo o arquivo de configuração (a configuração usada para compilar o kernel em execução no momento pode ser encontrada em /proc/config.gz) e procurando por avx2.

    
por 30.04.2017 / 13:46