A supercomputing framework for solving PDEs by hybrid parallelism.
Project description
SOLVCON: a multi-physics, supercomputing software framework for high-fidelity solutions of partial differential equations (PDEs) by hybrid parallelism.
SOLVCON facilitates rapid devlopment of PDE solvers for massively parallel computing. C or CUDA is used for fast number-crunching. SOLVCON is designed for extension to various physical processes. Numerical algorithms and physical models are pluggable. Sub-package solvcon.kerpak contains default implementations. The default numerical algorithm in SOLVCON is the space-time Conservation Element and Solution Element (CESE) method, which was originally developed by Sin-Chung Chang at NASA Glenn Research Center. The CESE method solves generic, first-order, hyperbolic PDEs.
SOLVCON is released under GNU GPLv2, and developed by Yung-Yu Chen and Sheng-Tao John Yu.
Key Features
Multi-physics: Pluggable physical models by the built-in CESE solvers
Complex geometry: 2/3D unstructured mesh consisting of mixed shapes
Massively parallel: Automatic domain decomposition with MPI or socket
GPGPU computing: Hybrid parallelism with CUDA
Large data set: In situ visualization by VTK and parallel I/O
I/O formats: VTK, GAMBIT Neutral, CUBIT Genesis/ExodosII, etc.
Productive work flow: Integration to batch systems, e.g., Torque
Install
The C codes in SOLVCON are intentionally made to be standard shared libraries rather than Python extension modules. SOLVCON uses ctypes to load and call these binary codes. In this way, the binary codes can be flexibly built and optimized for performance. Hence, installing SOLVCON requires building these libraries. SOLVCON uses SCons as the binary builder.
For SOLVCON to be built and run, it requires the following packages: (i) Python 2.6, (ii) SCons, (iii) a C compiler, gcc or icc is OK, (iv) Numpy, (v) LAPACK, (vi) NetCDF higher than version 4, and (vii) METIS version 4 for graph partitioning (SOLVCON will download it for you on building). Optional dependencies include: (i) SCOTCH (higher than version 5.1) as an alternative of METIS, (ii) Nose for running unit tests, (iii) Epydoc for generating API documentation, and (iv) VTK for in situ visualization. 64-bits Linux is recommended. For Debian or Ubuntu users, they can use the following command to install the dependencies:
$ sudo apt-get install scons build-essential gcc liblapack-pic libnetcdf-dev libnetcdf6 netcdf-bin python2.6 python2.6-dev python-profiler python-numpy libscotch-5.1 python-nose python-epydoc python-vtk
CUDA needs to be separately installed and configured. For using meshes with more then 35 million cells, SCOTCH-5.1 is recommended. METIS-4 has issues on memory allocation for large graphs.
The three steps to install:
Obtain the latest release from https://bitbucket.org/yungyuc/solvcon/downloads . Unpack the source tarball. Let $SCSRC indicate the root directory of unpacked source tree.
Get into the source tree and run SCons to build the binary codes:
$ cd $SCSRC $ scons --download --extract --apply-patches=metislog2
Install everything:
$ python setup.py install
Optionally, you can install SOLVCON to your home directory. It is useful when you don’t have the root permission on the system. To do this, add the --user when invoking the setup.py script:
$ python setup.py install --user
The option --download used above asks the building script to download necessary external source packages, e.g., METIS, from Internet. Option --extract extracts the downloaded packages. Since METIS is incompatible to the current release of gcc, a patch is supplied with SOLVCON and can be automatically applied to the downloaded METIS source with the --apply-patches option.
Install from Repository
To use the latest source from the code repository, you need to use Mercurial to clone the repository to your local disk:
$ sudo apt-get install mercurial $ hg clone https://bitbucket.org/yungyuc/solvcon
and then follow steps 2 and 3.
Rebuild/Reinstall
If you want to rebuild and reinstall, you can run:
$ cd $SCSRC $ scons $ python setup.py install
without using the options --download, --extract, and --apply-patches. If you want a clean rebuild, run scons -c before scons. Note, scons -c does not remove the unpacked source, so you don’t need to reapply the patches unless you manually deleted it.
Unit Test
If you have Nose installed, you can run:
$ nosetests
inside the source tree for unit tests. To test installed version, use the following command instead:
$ python -c 'import solvcon; solvcon.test()'
When testing installed version, make sure your current directory does not have a sub-directory named as solvcon.
Because SOLVCON uses ssh as its default approach for remote procedure call (RPC), you need to set up the public key authentication for ssh, or some of the unit tests for RPC could fail. Some tests using optional libraries could be skipped (indicated by S), if you do not have the libraries installed. Everything else should pass.
Resources
Portal (with API document): http://solvcon.net/
Mailing list: http://groups.google.com/group/solvcon