Abstrakt. Division divergens är ett mycket vanligt förekommande prestandaproblem i GPGPU där utförandet av divergerande grenar serialiseras för att utföra endast en kontrollflödesbana i taget. Befintlig hårdvara mekanism för att omgruppera trådar med hjälp av en stack orsakar dubblett körning av kod för ostrukturerade styrflöde grafer. Stackmekanismen kan inte heller effektivt utnyttja den tillgängliga parallellismen mellan olika grenar. Dessutom begränsas den tillåtna mängden av inbäddad divergens av djupet av grenens divergensstacken. I detta dokument föreslår vi en enkel och elegant omvandling för att hantera alla ovannämnda problem. Omvandlingen omvandlar en ostrukturerad CFG till en strukturerad CFG utan att duplicera användarkod. Det medför endast en linjär ökning av antalet basblock och även antalet instruktioner. Vår lösning lineariserar CFG med hjälp av en predikatvariabel. Denna mekanism återvinner de divergerande trådarna så tidigt som möjligt. Det minskar också djupet av reconvergence stacken. Den tillgängliga parallellismen i häckade grenar kan effektivt extraheras genom att schemalägga de grundläggande blocken för att minska effekten av stånd på grund av minnesåtkomst. Det kan också öka exekvering effektivitet av häckade slingor med olika tripp räknas för olika trådar. Vi implementerade den föreslagna omvandlingen på PTX-nivå med hjälp av Ocelots kompilatorinfrastruktur. Vi utvärderade tekniken med hjälp av olika riktmärken för att visa att den kan vara effektiv för att hantera prestandaproblem på grund av skillnader i ostrukturerade CFGs.
Detta beslut träder i kraft dagen efter det att det har offentliggjorts i Europeiska unionens officiella tidning. REF föreslagna kompilator baserad styrflöde linjärisering teknik för att hantera gren divergens.
Taming Control Divergence in GPUs through Control Flow Linearization
{'venue': 'CC', 'journal': None, 'mag_field_of_study': ['Computer Science']}