Publicat l'estàndard de programació paral·lel OpenMP 6.0

Després de tres anys de desenvolupament, s'ha publicat un conjunt d'especificacions OpenMP 6.0 (Open Multi-Processing) que defineixen API i mètodes per aplicar mètodes de programació paral·lel per a llenguatges C, C++ i Fortran en multi-core i híbrids (CPU+GPU). /DSP) amb memòria compartida i vectorització de blocs (SIMD). S'espera que el suport inicial per a algunes funcions d'OpenMP 6.0 s'inclogui a les versions LLVM/Clang 20 i GCC 15.

Canvis importants a OpenMP 6.0:

  • S'ha simplificat el procés de programació de tasques, definint parts independents del programa que es poden executar en paral·lel amb altres parts.
    • S'ha afegit la possibilitat de realitzar tasques en fils d'agent lliure que no estan lligats a grups de fils (equips) que executen regions paral·leles (regió paral·lela, un bloc de codi executat en diversos fils).
    • Es proporciona suport per desar un gràfic de tasques, que defineix les dependències entre les tasques i l'ordre en què s'executen les tasques, per millorar l'eficiència de la reproducció posterior.
    • S'ha implementat un mecanisme de tasques transparents per simplificar la gestió de dependències i controlar automàticament l'execució de les tasques fills.
  • Suport ampliat per a dispositius informàtics que es poden utilitzar per realitzar tasques paral·leles (CPU, GPU, DSP, etc.).
    • S'ha afegit una nova sintaxi de matriu per permetre que la directiva "workdistribute" s'utilitzi per dividir el processament de matrius entre diferents unitats de treball.
    • Els controls d'assignació de memòria s'han millorat per facilitar la gestió de variables per a les quals la memòria s'assigna dinàmicament.
    • S'ha ampliat la compatibilitat amb els atributs que determinen com es distribueixen les dades entre dispositius de manera predeterminada.
    • Codi d'escriptura simplificat per a la transferència asíncrona de dades a dispositius informàtics addicionals (GPU).
    • Gestió de la memòria millorada i la seva vinculació a dispositius informàtics.
    • S'ha afegit la directiva "groupprivate" per assignar memòria a un grup de fils que s'executen en un dispositiu informàtic específic.
  • S'ha simplificat la programació de certs tipus de transformacions de bucles, com ara la fusió de múltiples bucles, el canvi de l'ordre dels bucles imbricats i la inversió de bucles.
  • S'ha afegit una nova operació d'inducció per organitzar la paral·lelització en bucles de càlculs aritmètics senzills i operacions d'usuari que depenen de valors anteriors.
  • S'ha afegit suport complet per a la paral·lelització de programes escrits amb els estàndards C23 (inclosa la sintaxi d'atributs), Fortran 2023 i C++23. S'han afegit nous atributs per a C/C++.
  • Capacitats d'emmagatzematge i gestió de memòria millorades. S'han afegit nous atributs per controlar com s'ha d'assignar i utilitzar la memòria. S'ha afegit API per definir i consultar espais de memòria.
  • S'han eliminat les funcions obsoletes a les especificacions d'OpenMP 5.0, 5.1 i 5.2.

Font: opennet.ru

Afegeix comentari