Noder med flera GPU:er håller på att bli en plattform för val av högpresterande datorer. De flesta applikationer är dock skrivna med hjälp av bulk-synkrona programmeringsmodeller, vilket kanske inte är optimalt för oregelbundna algoritmer som drar nytta av låg-latens, asynkron kommunikation. I detta dokument föreslås konstruktioner för asynkron multi-GPU programmering, och beskriver deras genomförande i en tunn runtime miljö som kallas Groute. Groute genomför också gemensamma kollektiva insatser och distribuerade arbetslistor, vilket gör det möjligt att utveckla oegentliga tillämpningar utan omfattande programplaneringsinsatser. Vi visar att detta tillvägagångssätt uppnår toppmodern prestanda och uppvisar stark skalning för en svit av oregelbundna tillämpningar på 8-GPU och heterogena system, vilket ger över 7x speedup för vissa algoritmer. Nyckelord Multi-GPU, Asynkron programmering, Irregular algoritmer Noder med flera anslutna acceleratorer är nu allmänt förekommande i högpresterande dator. I synnerhet har Graphics Processing Units (GPU) blivit populära på grund av deras effekteffektivitet, hårdvara parallellism, skalbara caching mekanismer, och balans mellan specialiserade instruktioner och allmänna datoranvändning. Multi-GPU noder består av en värd (CPU) och flera GPU-enheter kopplade via en låg-latent, hög-genomströmningsbuss (se figur 1 ). Dessa sammanlänkningar gör det möjligt för parallella applikationer att utbyta figur 1: Multi-GPU Node Schematiska data effektivt och att dra nytta av den kombinerade beräkningskraften och minnesstorleken hos GPU:erna. Multi-GPU noder är vanligtvis programmerade med en av två metoder. I den enkla metoden, varje GPU hanteras separat, med hjälp av en process per enhet [13, 19]. Alternativt, en Bulk Synkron parallell (BSP) [32] programmering modell används, där applikationer utförs i rundor, och varje runda består av lokal beräkning följt av global kommunikation [6, 26]. Den första metoden är föremål för overheads från olika källor, såsom operativsystemet, och kräver ett meddelande-passing gränssnitt för kommunikation. BSP-modellen, å andra sidan, kan införa onödig serialisering vid de globala barriärer som genomför rund-baserat utförande. Båda programmeringsmetoderna kan leda till underutnyttjande av multi-GPU-plattformar, särskilt för oregelbundna tillämpningar, som kan drabbas av lastobalans och kan ha oförutsägbara kommunikationsmönster. I princip kan asynkrona programmeringsmodeller minska vissa av dessa problem, eftersom processorer, till skillnad från i rundbaserad kommunikation, kan beräkna och kommunicera självständigt utan att vänta på att andra processorer ska nå globala hinder. Det finns dock få applikationer som utnyttjar asynkront utförande, eftersom deras utveckling kräver en fördjupad kunskap om det underliggande arkitektur- och kommunikationsnätverket, och innebär att utföra invecklade anpassningar av koden. I detta dokument presenteras Groute, en asynkron programmeringsmodell och runtime-miljö [2] som kan användas för att utveckla ett brett spektrum av tillämpningar för multi-GPU-system. Tillstånd att göra digitala eller papperskopior av hela eller delar av detta arbete för personligt bruk eller klassrum beviljas utan avgift, förutsatt att kopiorna inte görs eller distribueras för vinst eller kommersiella fördelar och att kopiorna är försedda med detta meddelande och den fullständiga hänvisningen på första sidan. Upphovsrätt till delar av detta verk som ägs av andra än ACM måste hedras. Abstraktering med kredit är tillåten. För att kopiera på annat sätt, eller återpublicera, för att posta på servrar eller för att omfördela till listor, krävs tidigare specifik behörighet och/eller avgift.  Baserat på koncept från nätverk på låg nivå syftar Groute till att övervinna komplexiteten i programmeringen av asynkrona applikationer på multi-GPU och heterogena plattformar. Kommunikationskonstruktionerna av Groute är enkla, men de kan användas för att effektivt uttrycka program som sträcker sig från vanliga program och BSP-program till icke-triviala oregelbundna algoritmer. Den asynkrona naturen av runtime miljön främjar också lastbalansering, vilket leder till bättre utnyttjande av heterogena multi-GPU noder. De viktigaste bidragen i detta dokument är följande: • Vi definierar abstrakta programmeringskonstruktioner för asynkront utförande och kommunikation. • Vi visar att dessa konstruktioner kan användas för att definiera en mängd olika algoritmer inklusive regelbundna och oregelbundna parallella algoritmer. • Vi jämför aspekter av resultatet av våra implementeringar med användning av tillämpningar skrivna i befintliga ramverk som riktmärken. • Vi visar att med Groute, är det möjligt att genomföra asynkrona applikationer som i de flesta fall överträffar state-of-the-art implementations, vilket ger upp till 7,28× speedup på 8 GPUs jämfört med en baslinje utförande på en enda GPU. I allmänhet, roll acceleratorer är att komplettera de tillgängliga processorer genom att låta dem att avlasta data-parallell delar av ett program. Processorer, i sin tur, ansvarar för processhantering, kommunikation, input / output uppgifter, minnesöverföringar, och data för / efterbehandling. Som illustreras i figur 1, Processorer och acceleratorer är anslutna till varandra via en Front-Side Bus (FSB, implementationer inkluderar QPI och HyperTransport). FSB-körfälten, vars räkning är en indikator på minnesöverföringens bandbredd, är kopplade till en sammanlänkning som PCIExpress eller NVLink som stöder både CPU-GPU- och GPU-GPU-kommunikation. På grund av begränsningar i hårdvarulayouten, t.ex. användning av samma moderkort och strömförsörjningsenheter, består multi-GPU-noder vanligtvis av (1-25) GPU. Topologin för processorer, GPU och sammankoppling kan variera mellan kompletta alla-par anslutningar och en hierarkisk switchad topologi, som visas i figuren. I trädtopologin som visas i figur 1 kan varje fyrhörning av GPU:er (dvs. 1-4 och 5-8) utföra direkta kommunikationer sinsemellan, men kommunikationen med de andra fyrhörningarna är indirekt och därmed långsammare. Till exempel kan GPUs 1 och 4 utföra direkt kommunikation, men dataöverföringar från GPU 4 till 5 måste passera genom sammanlänkningen. Ett ändrat gränssnitt gör det möjligt för varje CPU att kommunicera med alla GPU:er i samma takt. I andra konfigurationer är processorer direkt anslutna till sin fyrdubbla GPU, vilket resulterar i variabel CPU-GPU bandbredd, beroende på processplacering.
Groute REF är en asynkron modell för flera GPU:er på en enda nod, utformad för oregelbundna beräkningar.
Groute: An Asynchronous Multi-GPU Programming Model for Irregular Computations
{'venue': "PPoPP '17", 'journal': None, 'mag_field_of_study': ['Computer Science']}