12 projects tagged "mpi"
The underling library provides simple, scalable means to manipulate MPI-parallel, three dimensional pencil decompositions using FFTW. Pencil decompositions are a natural way to distribute O(n^3) data across O(n^2) processors and are well-suited for memory-intensive, structured spectral turbulence simulations and postprocessing codes. It may be useful in other domains as well. The library is written in C99 and may be used by C89 or C++ applications.
Wisecracker is a high performance distributed cryptanalysis framework that leverages GPUs and multiple CPUs. It allows security researchers to write their own cryptanalysis tools that can distribute brute-force cryptanalysis work across multiple systems with multiple multi-core processors and GPUs. Security researchers can also use the sample tools provided out-of-the-box. The differentiating aspect of Wisecracker is that it uses OpenCL and MPI together to distribute the work across multiple systems, each having multiple CPUs and/or GPUs.
The Palabos library offers a framework in C++ for fluid flow simulations with the lattice Boltzmann (LB) method. Originally conceived as a research tool for lattice Boltzmann models, the code has evolved into a general-purpose program for computational fluid dynamics. The programming interface is straightforward and offers an access to the rich world of lattice Boltzmann, even to an audience with restricted theoretical knowledge of this method. A special emphasis is put on high performance and parallel computing.
astroPluto is modular Godunov-type code intended mainly for astrophysical applications and high Mach number flows in multiple spatial dimensions. The code embeds different hydrodynamic modules and multiple algorithms to solve the equations describing Newtonian, relativistic, MHD, or relativistic MHD fluids in Cartesian or curvilinear coordinates.
The 2DECOMP&FFT library is a software framework in Fortran to build large-scale parallel applications. It is designed for applications using three-dimensional structured mesh and spatially implicit numerical algorithms. At the foundation, it implements a general-purpose 2D pencil decomposition for data distribution on distributed-memory platforms. On top, it provides a highly scalable and efficient interface to perform three-dimensional distributed FFTs.
HOPSPACK solves derivative-free optimization problems in a C++ software framework. The framework enables parallel operation using MPI (for distributed machine architectures) and multithreading (for single machines with multiple processors or cores). Optimization problems can be very general: functions can be noisy, nonsmooth, and nonconvex, linear and nonlinear constraints are supported, and variables may be continuous or integer-valued.
Elemental is a C++ framework for distributed-memory dense linear algebra that strives to be fast, portable, and programmable. It can be thought of as a generalization of PLAPACK to element-by-element distributions that also makes use of recent algorithmic advances from the FLAME project. Elemental usually outperforms both PLAPACK and ScaLAPACK, however, it heavily relies on MPI collectives so a good MPI implementation is crucial. Both pure MPI and hybrid OpenMP-MPI configurations are supported.
OpenMPF is a library for solving large, dense, multi-RHS linear systems. It is based on MPI/openMP parallelism, and relies on BLAS/LAPACK/MUMPS for the single node computations. It implements direct and iterative solvers, out-of-core matrices and vectors, and is easily accessible through a Python interface.
MPIBurn is an MPI unicast benchmark. Modern inter-connect hardware handles broadcast messages with a different algorithm than that used for unicast messages. Just benchmarking broadcasts or N to N+1 messaging may not detect inter-connect malfunctions, so MPIBurn benchmarks any possible unicast connection while assuring to involve as many connections in parallel as possible. After each round, the peers are scrambled to ensure that the next round has completely different connection groups.
A generic library for real-time communications with asynchronous I/O support.