Idag omfattar datorer flera beräkningsenheter med parallell kapacitet, såsom multicoreprocessorer och grafiska bearbetningsenheter (GPU). OpenCL möjliggör programmering av alla dessa typer av enheter. Ett OpenCL-program består av en värdkod som upptäcker de beräkningsenheter som finns tillgängliga i värdsystemet och den köar upp kommandon till enheterna, och kärnkoden som definierar kärnan i den parallella beräkning som utförs i enheterna. Detta arbete tar upp två av de viktigaste problemen som en OpenCL-programmerare står inför: (1) värdkoder är ganska verbala men de kan genereras automatiskt om vissa parametrar är kända; (2) OpenCL-koder som är handoptimerade för en viss enhet får inte nödvändigtvis en bra prestanda i en annan. Detta papper presenterar en källa-till-källa iterative optimeringsverktyg, kallad OCLoptimizer, som syftar till att generera värdkoder automatiskt och att optimera OpenCL-kärnor tar som ingångar en kommenterad version av den ursprungliga kärnan och en konfigurationsfil. Iterativ optimering är en välkänd teknik som gör det möjligt att optimera en given kod genom att utforska olika konfigurationsparametrar på ett systematiskt sätt. Till exempel kan vi tillämpa tiling på en slinga och den iterative optimeraren skulle välja den optimala kakelstorleken genom att utforska utrymmet för möjliga kakelstorlekar. De experimentella resultaten visar att verktyget automatiskt kan optimera en uppsättning OpenCL-kärnor för multicoreprocessorer.
Faberio m.fl. REF använder iterativ optimering för att anpassa OpenCL-kärnor till olika hårdvara genom att välja de optimala timlingsstorlekarna.
OCLoptimizer: an iterative optimization tool for OpenCL
{'venue': 'ICCS', 'journal': None, 'mag_field_of_study': ['Computer Science']}