Skip to content
A storage optimization tool for regular loop nests
C++ Python C Makefile Shell
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
doc
examples
include/smo
isl @ 1636465
m4
pet @ 9dd119e
src
.gitignore
.gitmodules
AUTHORS
COPYING
ChangeLog
LICENSE
Makefile.am
NEWS
README
autogen.sh
configure.ac
getversion.sh.in
smo.py

README

#
# SMO README
#
# Somashekaracharya G B
# gbs@csa.iisc.ernet.in
# violinholmes@gmail.com
# 
# Uday Bondhugula
# uday@csa.iisc.ernet.in
#

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 
<gbs@csa.iisc.ernet.in>
You can’t perform that action at this time.