Intresset för grafiska bearbetningsenheter (GPU) skjuter i höjden på grund av deras potential att ge spektakulära prestanda på många viktiga datorapplikationer. Tyvärr, skriva sådana effektiva GPU-kärnor kräver mödosamt manuell optimering ansträngning som är mycket fel benägna. Vi bidrar med den första omfattande symboliska kontrollören för kärnor skrivna i CUDA C. Kallas "Prover of User GPU-program (PUG)," vårt verktyg analyserar effektivt och automatiskt verkliga kärnor med hjälp av tillfredsställande Modulo Theories (SMT) verktyg, upptäcka fel såsom dataraser, felaktigt synkroniserade barriärer, bankkonflikter och felaktiga resultat. PUG:s innovativa idéer inkluderar en ny metod för symboliskt koda trådinterleavings, exakt analys för korrekt barriärplacering, speciella metoder för att undvika interleaving generation, dela upp analysen över barriär intervaller, och hantera slingor genom tre metoder: loop normalisering, over approximation, och invariant finding. PUG har analyserat över hundra CUDA-kärnor från offentliga distributioner och interna projekt, hitta buggar samt subtila odokumenterade antaganden.
Guodong och Gopalakrishnan REF verifierar CUDA-program genom att symboliskt koda trådinterleaveings.
Scalable SMT-based verification of GPU kernel functions
{'venue': "FSE '10", 'journal': None, 'mag_field_of_study': ['Computer Science']}