A supercomputing framework for solving PDEs by hybrid parallelism.
SOLVCON: a multi-physics software framework for high-fidelity solutions of partial differential equations (PDEs) by hybrid parallelism.
Python is the primary programming language for constructing SOLVCON. Number-crunching is performed by high-speed subroutines written in C. By taking the mixed-language approach, PDE solvers can be rapidly developed and simultaneously utilize hundreds of nodes in a supercomputer by parallel computing. SOLVCON is multi-physics, and stocking numerical algorithms and physical models are ready for use in the namespace solvcon.kerpak.
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 delivers time-accurate solutions of hyperbolic PDEs, and has been used to solve various physical processes including fluid dynamics, aero-acoustics, detonations, magnetohydrodynamics (MHD), stress waves in complex solids, electromagnetics, to be named but a few.
SOLVCON is free software (for freedom, not price) and released under GPLv2. See http://www.gnu.org/licenses/gpl-2.0.html or COPYING for the complete license. SOLVCON is still in alpha and subjects to changes. No effort is made for backward compatibility at the current stage.
- Pluggable multi-physics.
- Built-in CESE solvers.
- Unstructured mesh consisting of mixed elements.
- Interface to Message-Passing Interface (MPI) libraries.
- Socket communication layer: working without MPI installed.
- Automatic distributed-memory parallelization by domain decomposition.
- Hybrid parallelism for GPU clusters.
- Parallel I/O.
- In situ visualization by VTK library.
- Standalone writers to VTK legacy and XML file formats.
- Integration to supercomputer (cluster) batch systems.
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, and (vi) METIS for graph partitioning (SOLVCON will download it for you on building). Optional dependencies include: (i) Nose for running unit tests, (ii) Epydoc for generating API documentation, and (iii) 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 python2.6 python2.6-dev python-profiler python-numpy python-nose python-epydoc python-vtk
Installation needs only three steps:
First, obtain the latest release from https://bitbucket.org/yungyuc/solvcon/downloads . Unpack the source tarball. Let $SCSRC indicates 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
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
Since SOLVCON is in intense development, you may want to use the latest source from the code repository. You need to install Mercurial, 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 the binary after the installation, 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 have deleted the unpacked source files.
You can optionally install SOLVCON to your home directory rather than to the system. It is convenient when you don’t have the root permission on the system. To do that, add the --home when invoking the setup.py script:
$ python setup.py install --home
If you have Nose installed, you can run:
$ python -c 'import solvcon; solvcon.test()'
for unit tests. Inside the source tree, you can also use:
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 would fail. Every test should pass, except one specific to cluster batch systems could be skipped (indicated by S). If you do not have VTK and its Python binding, VTK-related tests will also be skipped.