I detta dokument föreslår vi ett API för att pausa och återuppta arbetets utförande beroende på externa händelser. Vi utnyttjar detta generiska API för att förbättra kompatibiliteten mellan MPI synkron kommunikation primitiva och uppgifter. När en MPI-operation blockerar, pausas aktiviteten som körs så att körtiden systemet kan schemalägga en ny uppgift på kärnan som blev overksam. När MPI-operationen är klar sätts den pausade aktiviteten igen på körtidssystemets färdiga kö. Vi exponerar vårt förslag genom en ny trådnivå för MPI som vi genomför genom två tillvägagångssätt. Den första metoden är en MPI omslagsbibliotek som fungerar med alla MPI genomförande genom att avlyssna MPI synkrona samtal, genomföra dem ovanpå sina asynkrona motsvarigheter. I detta fall utvidgas också det aktivitetsbaserade körtidssystemet till att regelbundet kontrollera pågående MPI-operationer och återuppta motsvarande uppgifter när MPI-operationerna är avslutade. Den andra metoden består i att direkt ändra MPICH-runtime-systemet, en välkänd implementation av MPI, för att direkt kalla paus/återuppta API när en synkron MPI-operation blockerar respektive slutför, respektive. Våra experiment visar att detta förslag inte bara förenklar utvecklingen av hybrida MPI+OpenMP-tillämpningar som naturligt överlappar beräknings- och kommunikationsfaser; det förbättrar också applikationens prestanda och skalbarhet genom att avlägsna artificiella beroenden över kommunikationsuppgifter. Med hjälp av comme through tillvägagångssätt hybrid MPI+SMPSs programmering modell [9], författare tillåtet att utnyttja avlägsen parallellism separerade med uppgift MPI samtal. Dessa uppgifter identifierades också som kommunikationsuppgifter och utfördes med hjälp av ytterligare en tråd som kallades kommunikationstråd. Runtimes uppgift schemaläggare skulle kunna omordna utförandet av kommunikation och beräkningsuppgifter på ett sådant sätt att kommunikation kan ske så snart som möjligt, vilket ökar parallellismen inom och över MPI-processer. Förslaget kräver ändringar i programmeringsmodellen för att i förväg kunna identifiera de uppgifter som har blockerande beteende. Dessutom kan endast en tråd köra dem, och den måste göra det i sekventiell ordning. Därför är denna lösning
Labarta m.fl. REF presenterar Task-Aware MPI-biblioteket (TAMPI), ett liknande tillvägagångssätt för att förbättra driftskompatibiliteten mellan MPI och Omps.
Improving the Interoperability between MPI and Task-Based Programming Models
{'venue': "EuroMPI'18", 'journal': None, 'mag_field_of_study': ['Computer Science']}