Optimizing Numerical Code by means of the Transitive Closure of Dependence Graphs

Marek Pałkowski, Włodzimierz Bielecki · Annals of Computer Science and Information Systems · 2017

A challenging task in numerical programming modern computer systems is to effectively exploit the parallelism available in the architecture and manage the CPU caches to increase performance.Loop nest tiling allows for both coarsening parallel code and improving code locality.In this paper, we explore a new way to generate tiled code and derive the free schedule of tiles by means of the transitive closure of loop nest dependence graphs.Multi-threaded code executes tiles as soon as their operands are available.To design the approach, loop dependences are presented in the form of tuple relations.Discussed techniques are implemented in the source-to-source TRACO compiler.Experimental study, carried out on multi-core architectures, demonstrates the considerable speed-up of tiled numerical codes generated by the presented approach.

Read the paper · More papers on PaperTik