FERRAMENTAS LINUX: O compilador AMD AOMP 17.0-1 muda para o seu plug-in de última geração para um melhor desempenho

terça-feira, 18 de abril de 2023

O compilador AMD AOMP 17.0-1 muda para o seu plug-in de última geração para um melhor desempenho

 


A AMD lançou o AOMP 17.0-1 como a versão mais recente deste compilador de código aberto focado em fornecer o mais recente suporte de descarregamento OpenMP para produtos aceleradores Radeon e Instinct.


O AOMP é um conjunto de patches carregados sobre o último estado upstream LLVM/Clang. Os engenheiros da AMD continuam trabalhando no upstreaming de suas várias melhorias para LLVM, enquanto para aqueles que desejam o melhor suporte de ponta têm AOMP para aproveitar os melhores recursos de dispositivo OpenMP no momento.

O AOMP 17.0-1 é baseado no estado upstream LLVM/Clang do início deste mês e é construído com fontes ROCm 5.4.4 da AMD. Notável com esta atualização é a mudança para seu plug-in de última geração por padrão que, por sua vez, deve gerar melhorias significativas no desempenho do OpenMP.

O anúncio de lançamento menciona as seguintes alterações para o AOMP 17.0-1:

- Mude para o plugin nextgen como padrão. Isso mostrou melhorias significativas de desempenho. Para reverter para o plug-in antigo, defina LIBOMPTARGET_NEXTGEN_PLUGINS=OFF.

- Mude de hostrpc para hostexec. hostexec é uma reescrita significativa de hostrpc. O dispositivo hostexec_invoke agora é escrito em OpenMP para portabilidade para outras plataformas. Os nomes do wrapper (stub) para executar uma função de host foram alterados para hostexec() e hostexec_() . hostexec também usa uma variável global para localizar o buffer de carga útil de transferência em vez dos argumentos implícitos do kernel AMD. Isso suportará a portabilidade de hostexec, printf e fprintf para outras plataformas. A atualização para este dispositivo global é feita com serviços de variáveis ​​globais no plug-in nextgen.

- É fornecido um exemplo do uso de hostexec para executar MPI_Send e MPI_Recv em uma região de destino. Este exemplo demonstra como os proprietários de bibliotecas podem criar um arquivo de cabeçalho suplementar para permitir a execução de host transparente de funções de biblioteca selecionadas em regiões de destino OpenMP com a mesma interface de host. Isso elimina a necessidade de quaisquer alterações de origem no código do usuário quando a execução do host de uma região de destino é desejada. Antes do hostexec, os usuários geralmente precisavam encerrar sua região de destino, executar uma função somente de host e iniciar outra região de destino. Esse recurso aumenta significativamente os recursos de computação de uso geral do OpenMP em plataformas GPGPU.

- O suporte ao alvo OMPT está incompleto com o plug-in nextgen. Para usar OMPT, defina a variável de ambiente LIBOMPTARGET_NEXTGEN_PLUGINS=OFF.

- Defina GPU_MAX_HW_QUEUES em gpurun

- As regiões críticas criadas por meio da diretiva crítica agora são mais eficientes: relaxando a semântica dos bloqueios e combinando isso com o uso de cercas de aquisição e liberação, podemos limitar a liberação dos caches da GPU sempre que o bloqueio for adquirido em vez de cada verificação de bloqueio.

- Ao inserir funções chamadas do kernel, mova alocações para seus argumentos no bloco de entrada do kernel em vez de deixá-los no ponto de inicialização.

- Respeite a variável de ambiente para forçar execuções síncronas da região de destino. Disponível via OMPX_FORCE_SYNC_REGIONS=1.

Os downloads do AOMP 17.0-1 e mais detalhes no GitHub , incluindo binários RHEL/Debian para complementar as fontes.





Fonte

Até a próxima !!

Nenhum comentário:

Postar um comentário