Vi presenterar en teknik för formell verifiering av GPU-kärnor, som behandlar två klasser av korrekthetsegenskaper: dataraser och barriärskillnader. Vår strategi bygger på en ny formell operationell semantik för GPU-kärnor som kallas synkron, fördröjd sikt (SDV) semantik, som fångar utförandet av en GPU-kärna av flera grupper av trådar. SDV semantik ger operativa definitioner för barriärskillnader och för både inter-och intra-group data races. Vi bygger på semantiken för att utveckla en metod för att minska uppgiften att verifiera en massivt parallell GPU-kärna till att verifiera ett sekventiellt program. Detta undviker helt behovet av att resonera om tråd interleavings, och tillåter befintliga tekniker för sekventiell programverifiering att utnyttjas. Vi beskriver en effektiv kodning av data ras detektion och föreslår en metod för att automatiskt härleda den loop invarianter som krävs för verifiering. Vi har implementerat dessa tekniker som ett praktiskt verifieringsverktyg, GPUVerify, som kan tillämpas direkt på OpenCL och CUDA källkod. Vi utvärderar GPUVerifiera med avseende på en uppsättning 162 kärnor hämtade från offentliga och kommersiella källor. Vår utvärdering visar att GPUVerify är kapabel till effektiv, automatisk verifiering av ett stort antal verkliga kärnor.
Nyligen har en synkron fördröjd sikt semantik baserad programverifiering föreslagits REF för att upptäcka data races och barriär divergens.
The Design and Implementation of a Verification Technique for GPU Kernels
{'venue': 'TOPL', 'journal': None, 'mag_field_of_study': ['Computer Science']}