È stato pubblicato lo standard di programmazione parallela OpenMP 6.0

Dopo tre anni di sviluppo è stato pubblicato il set di specifiche OpenMP 6.0 (Open Multi-Processing), che definisce l'API e i modi di applicare i metodi di programmazione parallela per i linguaggi C, C++ e Fortran su sistemi multi-core e ibridi (CPU+GPU/DSP) con memoria condivisa e blocchi di vettorizzazione (SIMD). Si prevede che il supporto iniziale di alcune funzionalità di OpenMP 6.0 sarà integrato nelle versioni di LLVM/Clang 20 e GCC 15.

Le principali novità in OpenMP 6.0:

  • Semplificato il processo di programmazione delle attività (task), definendo parti indipendenti del programma che possono essere eseguite in parallelo con altre parti.
    • Aggiunta la possibilità di eseguire attività in thread free-agent, non legati a gruppi di thread (teams), che eseguono regioni parallele (parallel region, blocco di codice eseguito in più thread).
    • Supporto per la memorizzazione del grafo delle attività (taskgraph), che definisce le dipendenze tra le attività e l'ordine di esecuzione delle stesse, per aumentare l'efficienza della riproduzione successiva.
    • Implementato un meccanismo per attività trasparenti («transparent tasks») per semplificare la gestione delle dipendenze e la gestione automatica dell'esecuzione delle attività figlie.
  • Espansa la supporto per dispositivi di calcolo che possono essere utilizzati per eseguire attività parallele (CPU, GPU, DSP, ecc.).
    • Aggiunta una nuova sintassi per gli array, che consente di utilizzare la direttiva «workdistribute» per suddividere l'elaborazione di array tra diverse unità di lavoro.
    • Espanse le capacità di gestione dell'allocazione della memoria, semplificando la gestione delle variabili per le quali la memoria viene allocata dinamicamente.
    • Espanso il supporto per gli attributi che definiscono la distribuzione dei dati tra i dispositivi per impostazione predefinita.
    • Semplificata la scrittura di codice per trasferimenti di dati asincroni a ulteriori dispositivi di calcolo (GPU).
    • Migliorato il controllo della memoria e il suo legame con i dispositivi di calcolo.
    • Aggiunta la direttiva «groupprivate» per l'assegnazione della memoria a un gruppo di thread eseguiti su un determinato dispositivo di calcolo.
  • Semplificata la programmazione di alcuni tipi di trasformazioni dei cicli, come la fusione di più cicli, la modifica dell'ordine dei cicli nidificati e la inversione dei cicli.
  • È stata aggiunta una nuova operazione di induzione (induction) per organizzare il parallelismo nei cicli di calcoli aritmetici semplici e operazioni personalizzate che dipendono da valori precedenti.
  • È stato aggiunto il supporto completo per il parallelismo nei programmi scritti utilizzando gli standard C23 (inclusa la sintassi degli attributi), Fortran 2023 e C++23. Sono stati aggiunti nuovi attributi per C/C++.
  • Sono state ampliate le capacità di gestione dello storage e della memoria. Sono stati aggiunti nuovi attributi per controllare come deve essere allocata e utilizzata la memoria. È stata aggiunta un'API per definire e richiedere spazi di memoria (memory space).
  • Sono state rimosse le funzionalità dichiarate obsoleti nelle specifiche OpenMP 5.0, 5.1 e 5.2.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster