Abstrakt. Grafikbearbetningsenheter (GPU) erbjuder enorm beräkningskraft. CUDA (Compute Unified Device Architecture) tillhandahåller en multitrådad parallellprogrammeringsmodell som underlättar högpresterande implementeringar av allmänna beräkningar. Den explicit hanterade minneshierarkin och parallellvyn på flera nivåer gör dock den manuella utvecklingen av högpresterande CUDA-kod ganska komplicerad. Därför är den automatiska omvandlingen av sekventiella inmatningsprogram till effektiva parallella CUDA-program av stort intresse. Detta papper beskriver en automatisk kod transformation system som genererar parallell CUDA kod från ingång sekventiell C-kod, för regelbundna (affin) program. Använda och anpassa offentligt tillgängliga verktyg som har gjort polyhedral kompilatoroptimering praktiskt effektiv, utvecklar vi ett C-till-CUDA transformationssystem som genererar två-nivå parallell CUDA-kod som är optimerad för effektiv dataåtkomst. Prestanda för automatiskt genererad kod jämförs med manuellt optimerad CUDA-kod för ett antal riktmärken. Den automatiskt genererade CUDA-kodens prestanda är ganska nära handoptimerad CUDA-kod och betydligt bättre än riktmärkenas prestanda på en multikärnig CPU.
Det arbete som föreslås av REF är ett automatiskt kodtransformeringssystem som genererar CUDA-kod från indata sekventiell C-kod utan annoteringar för afffinprogram.
Automatic C-to-CUDA code generation for affine programs
{'venue': 'CC', 'journal': None, 'mag_field_of_study': ['Computer Science']}