O padrão de programação paralela OpenMP 6.0 foi publicado

Após três anos de desenvolvimento, foi publicado o conjunto de especificações OpenMP 6.0 (Open Multi-Processing), que define a API e os métodos de aplicação da programação paralela para as linguagens C, C++ e Fortran em sistemas multicore e híbridos (CPU+GPU/DSP) com memória compartilhada e blocos de vetorização (SIMD). Espera-se que o suporte inicial a algumas funcionalidades do OpenMP 6.0 seja incluído nas versões do LLVM/Clang 20 e GCC 15.

Principais alterações no OpenMP 6.0:

  • O processo de programação de tarefas (task) foi simplificado, definindo partes independentes do programa que podem ser executadas em paralelo com outras partes.
    • Adicionada a possibilidade de execução de tarefas em threads free-agent, não vinculadas a grupos de threads (teams) que executam regiões paralelas (parallel region, bloco de código executado em várias threads).
    • Implementado suporte para a preservação do gráfico de tarefas (taskgraph), que define as dependências entre tarefas e a ordem de execução das tarefas, para aumentar a eficiência de uma reprodução posterior.
    • Foi implementado um mecanismo de tarefas transparentes («transparent tasks») para facilitar a gestão de dependências e o gerenciamento automático da execução de tarefas filhas.
  • Expandido o suporte a dispositivos computacionais que podem ser utilizados para executar tarefas paralelas (CPU, GPU, DSP etc.).
    • Adicionado uma nova sintaxe de arrays, permitindo o uso da diretiva «workdistribute» para dividir o processamento de arrays entre diferentes unidades de trabalho.
    • Ampliadas as capacidades de controle da alocação de memória, facilitando a gestão de variáveis para as quais a memória é alocada dinamicamente.
    • Expandido o suporte a atributos que definem a distribuição de dados entre dispositivos por padrão.
    • Simplificada a escrita de código para transferências assíncronas de dados para dispositivos computacionais adicionais (GPU).
    • Melhorado o gerenciamento de memória e sua vinculação aos dispositivos computacionais.
    • Adicionada a diretiva «groupprivate» para vincular a memória a um grupo de threads executadas em um dispositivo computacional específico.
  • Facilitado a programação de alguns tipos de transformação de loops, como a fusão de vários loops, alteração da ordem de loops aninhados e reversão de loops.
  • Adicionada uma nova operação de indução para organizar o paralelismo em ciclos de cálculos aritméticos simples e operações de usuário que dependem de valores anteriores.
  • Suporte completo adicionado para paralelização de programas escritos usando os padrões C23 (incluindo sintaxe de atributos), Fortran 2023 e C++23. Novos atributos foram adicionados para C/C++.
  • Expandidas as capacidades de gerenciamento de armazenamento e memória. Novos atributos foram adicionados para controlar como a memória deve ser alocada e utilizada. Uma API foi incluída para definir e solicitar espaços de memória.
  • Removidas as funcionalidades declaradas obsoletas nas especificações OpenMP 5.0, 5.1 e 5.2.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster