O Fedora Linux já suporta o uso de glibcHWCAPs, permitindo que bibliotecas sejam construídas para diferentes níveis de recursos de microarquitetura x86_64 para código sensível ao desempenho, para que ganhos de desempenho possam ser alcançados ao aproveitar AVX/AVX2 ou outras extensões de conjunto de instruções de CPU Intel/AMDC mais recentes. Agora, o Fedora42 propõe estender ainda mais esse recurso para permitir que executáveis binários também aproveitem o glibcHWCAP para melhor desempenho.
O Fedora42 enviou uma proposta de mudança para permitir binários otimizados para o nível de recursos da microarquitetura x86_64. Seu objetivo é estender o mecanismo glibc-hwcaps para completar executáveis, não apenas bibliotecas compartilhadas.
Quais pacotes fornecem código otimizado e em que nível serão determinados pelos mantenedores de pacotes individuais com base nos resultados de benchmark.
...
Essa mudança trata de estender o mecanismo glibc-hwcaps para arquivos executáveis. Fornecemos um pequeno binário auxiliar. Os programas em /usr/bin (ou outros caminhos) estão vinculados a este programa auxiliar. Quando executado, o programa auxiliar verifica os recursos da CPU e pesquisa em uma hierarquia de diretórios separada a variante mais adequada do programa de destino. Em seguida, inicie o binário otimizado ou o binário "universal" compilado para a linha de base. "
A mudança proposta acrescenta:
Observe que outras distribuições usam níveis mais elevados de microarquitetura. Por exemplo, RHEL9 usa x86-64-v2 como linha de base, RHEL10 usa x86-64-v3 e outras distribuições fornecem variantes otimizadas (OpenSUSE, ArchLinux, Ubuntu). A forma como implementamos as mesmas mudanças no Fedora é muito mais restrita e, portanto, significativamente menor em esforço de desenvolvimento, tempo de compilação de código, armazenamento e sobrecarga de lançamento, mas deve fornecer os mesmos benefícios de desempenho e consumo de energia. "
Ainda caberá aos empacotadores/desenvolvedores do Fedora avaliar eles próprios os benefícios de desempenho e decidir se fornecerão aos seus pacotes executáveis otimizados para diferentes níveis de recursos da microarquitetura x86_64.