MLD2P4: a package of parallel algebraic multilevel domain decomposition preconditioners in Fortran 95 MLD2P4 (Multi-Level Domain Decomposition Parallel Preconditioners Package based on PSBLAS) is a package of parallel algebraic multi-level preconditioners. It implements various versions of one-level additive and of multi-level additive and hybrid Schwarz algorithms. In the multi-level case, a purely algebraic approach is applied to generate coarse-level corrections, so that no geometric background is needed concerning the matrix to be preconditioned. The matrix is assumed to be square, real or complex, with a symmetric sparsity pattern. MLD2P4 has been designed to provide scalable and easy-to-use preconditioners in the context of the PSBLAS (Parallel Sparse Basic Linear Algebra Subprograms) computational framework and can be used in conjuction with the Krylov solvers available in this framework. MLD2P4 enables the user to easily specify different aspects of a generic algebraic multilevel Schwarz preconditioner, thus allowing to search for the ”best” preconditioner for the problem at hand. The package has been designed employing object-oriented techniques, using Fortran 95, with interfaces to additional third party libraries such as UMFPACK, SuperLU and SuperLU Dist, that can be exploited in building multi-level preconditioners. Single and double precision implementations of MLD2P4 are available for both the real and the complex case, that can be used through a single interface. The parallel implementation is based on a Single Program Multiple Data (SPMD) paradigm for distributed-memory architectures; the inter-process data communication is based on MPI and is managed mainly through PSBLAS.