Abstrakt. Grafik Processing Units (GPU) från ledande leverantörer använder predikerad (eller bevakad) utförande för att eliminera grenning och öka prestanda. På samma sätt använder en ny GPU-verifieringsteknik predikering för att minska verifieringen av GPU-kärnor (de massiva parallella program som körs på GPU) till verifiering av ett sekventiellt program. Tidigare arbete med formella semantik av lock-steg predikerad exekvering för kärnor fokuserade på strukturerade program, där kontroll organiseras med hjälp av om- och underutgåvor. Vi tillhandahåller lock-steg exekvering semantik för GPU-kärnor som representeras av godtyckliga reducerbara kontrollflödesgrafer. Vi presenterar en traditionell interleaving semantik och en ny lock-steg semantik baserad på predikering, och visar att för att avsluta kärnor antingen båda semantik beräkna identiska resultat eller båda beter sig felaktigt. Metoden gör det möjligt att reducera GPU-kärnverifiering till verifiering av ett sekventiellt lås-steg-program som ska appliceras på GPU-kärnor med godtyckligt reducerbart kontrollflöde. Vi har implementerat metoden i GPUVerifiera verktyget, och presentera en utvärdering med hjälp av en uppsättning 163 öppna källkod och kommersiella GPU-kärnor. Bland dessa kärnor uppvisar 42 ostrukturerat kontrollflöde som vår nya lock-steg predikeringsteknik kan hantera helt automatiskt. Denna generalitet kommer till ett blygsamt pris: verifieringen över vårt referensvärde var i genomsnitt 2,25 gånger långsammare än med hjälp av en befintlig metod som specifikt riktar sig till strukturerade kärnor.
Vi har också studerat generaliseringen av lås-steg utförande från strukturerade program (som presenteras här) till ostrukturerade kontrollflöde grafer REF, och det aktuella genomförandet av GPUVerify bygger på denna förlängning.
Interleaving and Lock-Step Semantics for Analysis and Verification of GPU Kernels
{'venue': 'ESOP', 'journal': None, 'mag_field_of_study': ['Computer Science']}