Grafsymbolisk programmeringsteknologi är en teknik för att designa och koda mjukvarualgoritmer baserade på en grafisk representation av program, med syfte att helt eller delvis automatisera processerna för att designa, koda och testa mjukvara .
Graf -symbolisk programmeringsteknologi är ett grafiskt programmeringsspråk som gör det möjligt att beskriva parallella algoritmer med hjälp av en kontrollgraf och generera programkoder automatiskt.
Modellen representeras av en fyrdubbling , där är en uppsättning data för ett visst ämnesområde, är en uppsättning operatorer definierade över data för ett ämnesområde, är en uppsättning predikat som verkar på datastrukturer för ett ämnesområde, är en riktad märkt graf. är uppsättningen av grafens hörn. Varje vertex är märkt med en lokal operator . Grafen har en uppsättning kontrollbågar och en uppsättning synkroniseringsbågar . är en relation över uppsättningar av hörn och bågar som bestämmer hur de är sammankopplade. En kontrollbåge som förbinder två hörn och har tre etiketter: predikat , prioritet och bågtyp . Varje synkroniseringsbåge är markerad med ett meddelande .
En bågtyp definieras som en funktion vars värden har följande semantik:
Modellens funktion börjar med exekveringen av en operator som markerar den initiala vertexen . Utvecklingen av den beräkningsprocess som beskrivs av modellen är associerad med övergångar från vertex till vertex längs kontrollbågar. I det här fallet är övergången längs styrbågen endast möjlig om predikatet med vilket det är markerat är sant. Om flera predikat som markerar bågar som utgår från en vertex blir sanna samtidigt, utförs övergången längs den högst prioriterade bågen.
För att beskriva parallellitet introduceras konceptet med en parallell gren — en subgraf av en graf som börjar med en parallell båge (typen av denna båge är ) och slutar med en avslutande båge (typen av denna båge är ). , där är uppsättningen av grenhörn, är uppsättningen av grenkontrollbågar, är relationen över uppsättningarna av grenhörn och bågar som bestämmer hur de är anslutna. Bågarna som utgår från grenarnas hörn hör också till grenen . Vid kodning av algoritmen som beskrivs med den föreslagna modellen genererar varje parallell gren en separat process - en uppsättning subrutiner som exekveras sekventiellt på en av processorerna i det parallella beräkningssystemet. Den grafiska modellen innehåller vanligtvis flera parallella grenar, som var och en bildar en separat process. I denna mening kan den parallella beräkningsmodellen representeras som en förening av flera parallella grenar. Således är parallellisering av beräkningar endast möjlig på grafmodellnivå. Beräkningar inom alla aktörer utförs sekventiellt.
I GSP-tekniken för objekt - aggregat - används ett monitorschema för att organisera beräkningar. Metoden bygger på centraliserad styrning av beräkningsprocessen, utförd av ett speciellt program - en grafmaskin.
Grafmaskinen är universell för alla algoritmer. Den initiala informationen för grafmaskinen är modellen för beräkningsprocessstyrningsdiagrammet som beskrivs ovan. När den analyserar modellen, utför den aktörer och aggregerar i lämplig ordning, utvärderar predikatvärden och hanterar timing. För varje parallellgren startas en kopia av grafmaskinen, vilket är en separat process i datorsystemet.
GSP-tekniken använder en standard för att organisera ett informationsgränssnitt mellan moduler. Standarden säkerställs genom implementeringen av sju grundläggande regler:
Programexekveringsmiljön väljer den maskin på vilken processen som ansvarar för att lagra de globala POP-variablerna ska startas. Med tanke på hårdvarufunktionerna och topologin hos CS kan detta vara noden med den största mängden RAM eller den centrala noden, som har den minsta åtkomsttiden från någon av de andra noderna i klustret. Fördelen med detta tillvägagångssätt är att minnesresursen på beräkningsnoder sparas avsevärt, eftersom minne tilldelas på noder endast för de variabler som används.
Den presenterade idén om att organisera datalagring och utbyte mellan parallella processer är inriktad på meddelandeförmedlingsmodellen, där varje process arbetar med lokal data. Till exempel innebär MPI-standarden att processer utbyter data endast som ett resultat av att de skickas i form av meddelanden.
Den beskrivna metoden för datautbyte kräver introduktionen av konceptet en datahanterare - en subrutin som utför funktionerna att lagra, läsa och modifiera domändata.
Datahanteraren exekveras i en separat process av parallellprogrammet. I parallella grenar av grafmodellen, för att läsa eller skriva vissa data, nås minneshanteraren med hjälp av en uppsättning meddelanden. Det första meddelandet skickar en begäran om att läsa eller skriva en viss data. Varje variabel från POP får ett unikt nummer med vilket minneshanteraren kan identifiera den. I fallet med en läsning fortsätter den parallella grenen att vänta på ett svar från datahanteraren. När du skriver skickar det andra meddelandet det nya värdet på variabeln. Datahanteraren round-robin tar emot och behandlar förfrågningar från parallella grenar.