Skip to content
/ smo Public

A storage optimization tool for regular loop nests

License

MIT, MIT licenses found

Licenses found

MIT
LICENSE
MIT
COPYING
Notifications You must be signed in to change notification settings

bondhugula/smo

Repository files navigation

#
# SMO README
#
# Somashekaracharya G B
# [email protected]
# [email protected]
# 
# Uday Bondhugula
# [email protected]
#

SMO is a storage/memory optimizer for affine loop nests based on the 
polyhedral framework.  Affine loop nests are nests where the array subscript 
expressions are affine function of loop iterators and program parameters 
(symbols that are not modified). 

LICENSE

SMO is available under the MIT license. Please see file LICENSE for details.

INSTALLING SMO

Requirements: A Linux distribution. Pluto has been tested on x86 and 
x86-64 machines running Fedora Core {4,5,7,8,9}, Ubuntu, and RedHat  
Enterprise Server 5.x. Solaris should also be fine if you have GNU 
utilities. In order to use the development version from Pluto's git 
repository, automatic build system tools including autoconf, automake, 
and libtool are needed. GMP (GNU multi precision arithmetic library) is 
needed by ISL (one of the included libraries). If it's not already on 
your system, it can be installed easily with, for eg., 
'sudo yum -y install gmp gmp-devel' on a Fedora, or 
'sudo apt-get install libgmp3-dev' on an Ubuntu. 

SMO includes all libraries that it depends on.  autoconf/automake 
system will take care of automatically building everything. Nothing else 
needs to be downloaded and installed separately.  

To use the Python wrapper for SMO, make sure that the following are 
installed.

python-dev (sudo apt-get/yum/dnf install python-dev)
islpy (via Python PIP)
python-glpk (sudo apt-get/yum/dnf install python-glpk)

If you are unable to build/install Python wrappers for glpk via Python's PIP 
due to a more recent version of glpk on your system, use the pyglpk 
available here: https://github.com/bradfordboyle/pyglpk


BUILDING SMO

Stable release

$ tar zxvf smo-1.0.tar.gz
$ cd smo-1.0/
$ ./configure
$ make
$ make test

configure can be provided --with-isl-prefix=<isl install location> to 
build with another isl, otherwise the bundled isl is used.

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] [--with-isl-prefix=<isl install location>]
$ make
$ make test

* --with-isl-prefix=<location> to compile and link with an already installed 
isl. By default, the version of isl bundled with Pluto will be used.


EXAMPLES

The examples/ directory contains conflict set specifications for various
examples. Each of these files can be provided as an input to the prototype
through the command line options


CONTACT

Please send all bugs reports and comments to S. Bhaskaracharya 
<[email protected]>

About

A storage optimization tool for regular loop nests

Resources

License

MIT, MIT licenses found

Licenses found

MIT
LICENSE
MIT
COPYING

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published