A supercomputing framework for solving PDEs by hybrid parallelism.
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.
- 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
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
$ 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.
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.
If you have Nose installed, you can run:
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.