ENGLISH / MAGYAR
Kövess
minket

Automatikus ciklusoptimalizálás

2015-2016/I.
Dr. Horváth Gábor

Köztudott, hogy számos számításigényes algoritmus futási ideje nagy mértékben függ a benne található ciklusok szervezésétől. Az egymásbaágyazott ciklusok sorrendjének megfelelő megválasztása, a cikluskifejtés (loop unrolling), illetve az úgynevezett "tiling" technika nagy mértékben növelheti a cache kihasználtságát, aminek következtében a program futási ideje akár egy nagyságrenddel is javulhat.

Problémát jelent, hogy ezeket az optimalizációkat egyetlen szoftverfejlesztő eszköz sem támogatja teljes körűen. A programozó számára pedig lényegesen lassítaná a munkát, ha minden egyes ciklusát egyesével kellene a hardverhez hangolnia.

Az önálló labor feladat célja, hogy egy olyan eszköz szülessen, aminek a bemenete egy c++ program, melyben a teljesítménykritikus ciklusokat a programozó megjelöli (pl. speciális kommenttel), a kimenete pedig egy olyan c++ program, melyben a teljesítménykritikus ciklusok a futási idő szerint optimális módon át vannak rendezve.

Az önálló labor munkát nagy mértékben gyorsítja, hogy létezik szoftver a ciklusok transzformálására (CHILL), mely azonban optimalizálni csak erősen korlátozottan képes. A feladat így lényegében annyi, hogy a CHILL-t kell hívogatni különböző paraméterekkel, az így keletkező különféle variánsokat benchmark-olni, és a leggyorsabb változatot a végén megtartani. Az egész köré pedig egy olyan keretrendszert kell kifejleszteni, ami az egész folyamatot automatizálja, hogy a programozónak a kritikus ciklusok megjelölésén túl semmi dolga ne legyen.

Elvárások: jó programozói képesség

TDK munkának alkalmas feladat.


2
0