Att fastställa den bästa uppsättningen optimeringar som ska tillämpas på en kernel som ska utföras på grafikprocessorn (GPU) är ett utmanande problem. Det finns stora uppsättningar möjliga optimeringskonfigurationer som kan tillämpas, och många program har flera kärnor. Varje kärna kan kräva en specifik konfiguration för att uppnå bästa prestanda, och att flytta ett program till ny hårdvara kräver ofta en ny optimeringskonfiguration för varje kärna. I detta arbete tillämpar vi optimeringar för GPU-kod med hjälp av HMPP, ett direktivbaserat språk på hög nivå och källkodskompilator som kan generera CUDA / OpenCL-kod. Programmering med språk på hög nivå kan dock innebära en förlust av prestanda jämfört med användning av språk på låg nivå. Vårt arbete visar att det är möjligt att förbättra perfor mance av en hög nivå språk genom att använda auto-tuning. Vi utför auto-tuning på en stor optimering utrymme på GPU-kärnor, fokuserar på loop permutation, loop avrullande, tiling, och ange vilken loop (s) att parallellisera, och visa resultat på konvolutionskärnor, koder i Poly Bench-sviten, och en implementation av tro spridning för stereoseende. Resultaten visar att våra auto-justerade HMPP-genererade implementationer är betydligt snabbare än standard HMPP implementation och kan uppfylla eller överträffa prestandan för manuellt kodade CUDA / OpenCL implementationer.
Förutom problemspecifika tekniker finns det en högnivådirektivbaserad GPU-programmering som använder HMPP-arbetsbänk för att automatiskt generera CUDA/OpenCL-kod, och auto-tunsar på optimeringsutrymmet på de genererade GPU-kärnorna REF.
Auto-tuning a high-level language targeted to GPU codes
{'venue': '2012 Innovative Parallel Computing (InPar)', 'journal': '2012 Innovative Parallel Computing (InPar)', 'mag_field_of_study': ['Computer Science']}