Obtaining SimX
==============
The latest working version of SimX can be downloaded from the 
SimX GitHub page at
http://github.com/sim-x/simx

You can download SimX  sources as a zip file, or check it out via 
anonymous git using the following  command

git clone http://github.com/sim-x/simx.git

SimX Requirements
=================

Most of Simx is written in C++ and will have to be built from source. 
The SimX build system uses Python's setuptools along with CMake for
determining platform specific configuration parameters. In addition to
a C++ compiler and Python (>=2.4 ) you will need the following 
packages installed prior to building SimX

- CMake (>=2.6)
- Boost C++ library ( >= 1.35)
- MPI (required for parallel simulations. It is recommended that you use
       the MPICH implementation of MPI; see below for more details and for
       installing without MPI)

SimX also uses a Python package called greenlets for process oriented 
simulations; this will be automatically installed while building SimX.


Installing SimX
===============

To build and install SimX, change to the source root directory and type

python setup.py install

This will build SimX and install it to the appropriate Python site-packages
directory.

If you do not have write permissions to the system Python directories,  try:

python setup.py install --user 

This will build and install SimX under the user's home directory. Python
2.6 or higher is required for user mode installation.

MPI Support
-----------

By default, SimX expects a working MPI installation to be present
on your system since  MPI is required for parallel simulations. If you do not have
MPI or, for some reason, do not wish to enable parallel simulations, type

python setup.py build --without-mpi
python setup.py install

Also note that while SimX will usually succesfully compile and build with different 
implementations of MPI, you might run into runtime issues when using OpenMPI. For now, 
it is strongly recommended that you use the MPICH or MPICH2 implementation of MPI.

Other Options
-------------

By default SimX is built with the bundled SSF library 
(www.primessf.net/minissf) for message passing and synchronization. 
SimX can also be built with its own native message passing library.

For this, do the following:

python setup.py build --without-ssf
python setup.py install

This alternative build requires MPI; it also requires that your MPI installation 
be fully multi-threaded (on the otherhand, SSF can run on both single and 
multi-threaded MPI). Depending on your computational setup and simulation needs, 
one or the other might perform better.  

Note: If disabling MPI, SimX will use SSF.


Using SimX
==========

See the examples directory for some simple python simulation applications that use the 
SimX APIs.

