Standarden för parallell programmering OpenMP 6.0 har publicerats

Efter tre Ärs utveckling har en uppsÀttning specifikationer för OpenMP 6.0 (Open Multi-Processing) publicerats, vilket definierar API:er och metoder för tillÀmpning av parallell programmering för sprÄk som C, C++ och Fortran pÄ flerprocessor- och hybrid (CPU+GPU/DSP) system med delat minne och SIMD-vektorisering. Det förvÀntas att inledande stöd för vissa funktioner i OpenMP 6.0 kommer att ingÄ i versionerna av LLVM/Clang 20 och GCC 15.

Huvudsakliga förÀndringar i OpenMP 6.0:

  • Processen för programmering av uppgifter (task), som definierar oberoende delar av programmet som kan köras parallellt med andra delar, har förenklats.
    • Möjligheten att köra uppgifter i free-agent-trĂ„dar, som inte Ă€r kopplade till trĂ„dgrupper (teams), som utför parallella regioner (parallel region, en kodblock som exekveras i flera trĂ„dar) har lagts till.
    • Stöd för att spara taskgrafen (taskgraph), som definierar beroenden mellan uppgifter och ordningen för att utföra uppgifter, har implementerats för att öka effektiviteten vid efterföljande reproduktion.
    • En mekanism för transparenta uppgifter ("transparent tasks") har implementerats för att förenkla hanteringen av beroenden och automatisk hantering av exekveringen av underordnade uppgifter.
  • Stödet för berĂ€kningsenheter som kan anvĂ€ndas för att utföra parallella uppgifter (CPU, GPU, DSP osv.) har utvidgats.
    • En ny syntax för arrayer har lagts till, vilket möjliggör anvĂ€ndning av direktivet "workdistribute" för att dela upp bearbetningen av arrayer mellan olika arbetsenheter.
    • Möjligheterna att hantera minnesallokering har förbĂ€ttrats, vilket förenklar hanteringen av variabler som allokeras dynamiskt.
    • Stödet för attribut som definierar standarddatafördelning mellan enheter har utvidgats.
    • Kodskrivningen för asynkrona datatransfer till ytterligare berĂ€kningsenheter (GPU) har förenklats.
    • Minneshanteringen och dess bindning till berĂ€kningsenheter har förbĂ€ttrats.
    • Direktivet "groupprivate" har lagts till för att binda minnet till en trĂ„dgrupp som körs pĂ„ en specifik berĂ€kningsenhet.
  • Programmeringen av vissa typer av looptransformationer, som sammanslagning av flera loopar, Ă€ndring av ordningen av inbĂ€ddade loopar och reversering av loopar, har förenklats.
  • En ny induktionsoperation (induction) har lagts till för att möjliggöra parallellisering i loopar för enkla aritmetiska berĂ€kningar och anvĂ€ndaroperationer som beror pĂ„ tidigare vĂ€rden.
  • Fullt stöd för parallellisering av program skrivna med standarder som C23 (inklusive syntax för attribut), Fortran 2023 och C++23 har lagts till. Nya attribut för C/C++ har introducerats.
  • Funktionerna för lagrings- och minneshantering har utökats. Nya attribut har lagts till för att kontrollera hur minnet ska allokeras och anvĂ€ndas. Ett API för att definiera och begĂ€ra minnesutrymmen har lagts till.
  • Funktioner som har förklarats som förĂ„ldrade i specifikationerna för OpenMP 5.0, 5.1 och 5.2 har tagits bort.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster