PIPS is a suite of parallel optimization solvers mainly for stochastic optimization problems consisting of the following solvers:
- PIPS-IPM - parallel MPI+OpenMP interior-point for stochastic LPs and convex QPs
- PIPS-S - parallel MPI implementation of the revised simplex method
- PIPS-NLP - parallel MPI interior-point for structured NLPs
-
Install package wget, cmake, mpich2, and boost. You can get them via the following command (xxx stands for the name of the package): In Linux(Ubuntu): apt-get install xxxx
-
Go to the following folders and run the script wgetXXX.sh ThirdPartyLibs/ASL
ThirdPartyLibs/CBC ThirdPartyLibs/ConicBundle
ThirdPartyLibs/METIS For an example, use command "sh wgetASL.sh" in the folder ThirdPartyLibs/ASL -
Download MA27 and MA57 from HSL and put the source code in the correct folder. (See ThirdPartyLibs/MA27/README.txt and ThirdPartyLibs/MA57/README.txt for more details.)
-
Assuming we are trying to install PIPS in the folder PIPSMAINPATH/build_pips, where PIPSMAINPATH is the root installation folder, use the following commands in the PIPSMAINPATH folder to configure and install PIPS: mkdir build_pips cd build_pips cmake .. make
-
The build system will install executables from three directories: PIPS-IPM, PIPS-S and PIPS-NLP.
- cmake -DBUILD_ALL=OFF -DBUILD_PIPS_S=ON <path_to_CMakeLists.txt> or
- including "set(BUILD_ALL OFF); set(BUILD_PIPS_S ON)" in a toolchain file, then invoking cmake -DCMAKE_TOOLCHAIN_FILE=<path_to_toolchain_file> <path_to_CMakeLists.txt>
Same applies to PIPS-IPM and PIPS-NLP (option names BUILD_PIPS_IPM and BUILD_PIPS_NLP, respectively).
Pardiso solver has a special feature for PIPS to compute certain Schur complements much faster then when used with other linear solvers. To use PIPS with Pardiso you will need to obtain the PARDISO library and a license here. The build system of PIPS will build PARDISO-related binaries automatically if the PARDISO library is placed under ThirdPartyLibs/PARDISO/src/libpardiso.so
PIPS-IPM + Pardiso offers best-in-class HPC performance. PIPS has built-in parallel performance profiling (mostly in the form of detailed timing and extended convergence reporting). To enable this feature, build PIPS with the -DWITH_TIMING option, for example, a typical build command would be
cmake -DCMAKE_TOOLCHAIN_FILE=../Toolchain.cmake -DWITH_TIMING=ON ..
FAQ available here
Developed by:
- Cosmin G. Petra - Lawrence Livermore National Laboratory
Contributions from:
- Miles Lubin - while at Argonne National Laboratory
Developed by:
- Miles Lubin - while at Argonne National Laboratory
- Cosmin G. Petra - Lawrence Livermore National Laboratory
- Julian Hall - U. of Edinburgh
Contributions from:
- Geoffrey Oxberry - Lawrence Livermore National Laboratory
Developed by:
- Naiyuan Chiang - while at Argonne National Laboratory
- Cosmin G. Petra - Lawrence Livermore National Laboratory
- Michel Schanen - Argonne National Laboratory
Contributions from:
- Yankai Cao - The University of British Columbia
- Victor Zavala - Univ. of Wisconsin-Madison
See LICENSE file.
PIPS-IPM and PIPS-NLP are derivative works of OOQP (http://pages.cs.wisc.edu/~swright/ooqp/) by E. Michael Gertz and Stephen. Wright
PIPS has been developed under the financial support of:
- Department of Energy, Office of Advanced Scientific Computing Research
- Department of Energy, Early Career Program
- Department of Energy, Office of Electricity Delivery and Energy Reliability