Introduction
PHI is a Parallel H-matrix Implementation for shared and distributed memory machines. Hierarchical matrices, or H-matrices for short, are a powerfull tool for numerical applications allowing the usage of the complete matrix algebra, e.g. matrix multiplication and inversion, with almost linear complexity. For an introduction to this field, please refer to the literature section.
The main focus of PHI lies in the implementation of this matrix algebra along with their parallelisation. The parallel algorithms are thereby designed for shared memory machines, e.g. multi-processor workstations and compute servers, as well as for distributed memory systems, e.g. network of workstations or clusters. In the first case, POSIX threads and inter-process communication based on pipes is used, whereas the second case is built upon the message passing interface (MPI).
Requirements
PHI was implemented in the C++ programming language. For other languages, e.g. C and Fortran, most of the higher level functionality is made available in the form of wrapper functions. Since the source code strictly follows the C++ standard, PHI is known to work with many currently available compilers along with the corresponding operating, e.g.:
- Linux (x86, Opteron, Itanium, PowerPC, Alpha) with GCC, Intel-CC, PathScale-CC
- Sun Solaris with GCC and Sun-CC,
- Darwin with GCC and IBM VisualAge,
- HP-UX (PA-RISC) with HP-CC (aCC),
- AIX with IBM Visual-Age and
- IRIX with mips-cc.
Since most of the low-level algebra in PHI is based on the LAPACK standard, a corresponding implementation is required for PHI. Furthermore, for parallel computations on a distributed memory machine, an implementation of MPI is mandatory. Accordingly, on shared memory systems the PThread library has to be available for thread-parallel algorithms.
The following software libraries are supported by PHI but not required:
- zlib: input/output of compressed files
- X11: support for graphical output of arbitrary data
Licensing
PHI is available free for non-commercial research and teaching purposes. To get the source code, please sign the license agreement.