SMO - A Storage Optimization Tool for Regular Loop Nests
Overview
SMO is a storage optimization tool for regular loop nests being developed at the Compilers and Programming Systems for High-Performance AI Lab, Indian Institute of Science. The input to SMO is a specification of the set of conflicting array indices – two indices are said to be in conflict if the corresponding array elements are simultaneously live. A specified conflict could therefore be intra-array or inter-array. The output obtained is the modulo storage mapping using our technique for each array written in the regular loop nest. In the scenario when only one statement is involved, the global conflict set specification defines the set of conflicts associated with the array space written by the statement.
Repository and Download
SMO is available as free and open source software under the MIT License from its repository on github here.
Development version from Git
$ git clone git://github.com/bondhugula/smo.git $ cd smo/ $ git submodule init $ git submodule update $ ./autogen.sh $ ./configure [--enable-debug] $ make
Publications
Automatic Storage Optimization for Arrays
Somashekaracharya G. Bhaskaracharya, Uday Bondhugula, Albert Cohen
ACM Transactions on Programming Languages and Systems (TOPLAS), vol 38, issue 3, April 2016.
SMO: An Integrated Approach to Intra-Array and Inter-Array Storage Optimization
Somashekaracharya G. Bhaskaracharya, Uday Bondhugula, Albert Cohen
ACM SIGPLAN- SIGACT Symposium on Principles of Programming Languages (POPL), St.Petersberg, USA, pages 526 - 538, Jan 2016.