sudo apt install libblas-dev liblapack-dev
sudo apt install cmake cmake-curses-gui
(optional) download the AMPL solver library (ASL): http://www.netlib.org/ampl/solvers/
(optional) download solvers:
to compile MUMPS in sequential mode, remove the flag -fopenmp at the end of your Makefile.inc and set the following variables:
INCS = $(INCSEQ)
LIBS = $(LIBSEQ)
LIBSEQNEEDED = libseqneeded
compile SSIDS without OpenMP with the Meson flag -Dopenmp=false
you may experience a short lag at startup (about 1/4s) when running Uno with SSIDS. This is due to hwloc (hardware locality), a tool that aims at discovering hardware resources in parallel architectures. To precompute the required topology, run the following commands before running Uno:
lstopo --of xml ~/.config/hwloc-topology.xml
echo 'export HWLOC_XMLFILE=$HOME/.config/hwloc-topology.xml' >> ~/.bashrc
build directory in the main directory and move to it:mkdir build && cd build
cmake [options] ..
You can pass the following options:
- build type: -DCMAKE_BUILD_TYPE=[Release|Debug]
- build the Uno static library uno_static: -DBUILD_STATIC_LIBS=[ON|OFF]
- build the Uno shared library uno_shared: -DBUILD_SHARED_LIBS=[ON|OFF]
- path to the BQPD library: -DBQPD=path_to_libbqpd
- path to the MA27 library: -DMA57=path_to_libma27
- path to the MA57 library: -DMA57=path_to_libma57
- path to ASL library: -DAMPLSOLVER=path_to_libamplsolver
- path to HiGHS library: -DHIGHS=path_to_libhighs
- path to HSL library: -DHSL=path_to_libhsl
- path to METIS library (fakemetis is built with MA57): -DMETIS=path_to_libmetis
- path to MUMPS library: -DMUMPS_LIBRARY=path_to_libdmumps
- path to MUMPS common library: -DMUMPS_COMMON_LIBRARY=path_to_libmumps_common
- path to MUMPS PORD library: -DMUMPS_PORD_LIBRARY=path_to_mumps_libpord
- path to MUMPS MPISEQ library: -DMUMPS_MPISEQ_LIBRARY=path_to_mumps_mpiseq_lib
- path to MUMPS include directory: -DMUMPS_INCLUDE_DIR=path_to_mumps_include_dir
- path to SPRAL library: -DSPRAL=path_to_libspral
ccmake ..
n being the number of threads, e.g. 6):make -jn
To compile the code with different configurations, simply create a build directory for each configuration and perform instructions 1 to 4.
uno_static, uno_shared and Uno_C_API.h):sudo make install
sudo apt install googletest
make run_unotest -jn
./run_unotest
We provide precompiled Uno libraries and executables in the releases tab for Linux (x64 and aarch64), macOS (x64 and aarch64), and Windows (x64).
On some platforms, the dynamic linker needs to know where to look for libraries at runtime. You might need to set the following environment variables:
LD_LIBRARY_PATH on LinuxDYLD_LIBRARY_PATH or DYLD_FALLBACK_LIBRARY_PATH on macOSPATH on WindowsThese variables should include the directory where you extracted the library files.
For all platforms, the environment variable PATH is needed to locate the binary uno_ampl / uno_ampl.exe.
Example for Linux:
tar -xzf Uno.vX.Y.Z.linux.tar.gz
export LD_LIBRARY_PATH=/path/to/extracted/Uno/lib:$LD_LIBRARY_PATH
export PATH=/path/to/extracted/Uno/bin:$PATH
Note: The shared library libhsl.so / libhsl.dylib / libhsl.dll provided in the precompiled archive is a dummy version that does not include the official HSL linear solvers such as MA27 or MA57.
However, it can be safely replaced with the official precompiled libHSL library without the need to recompile anything.
The routine symbols are identical, allowing seamless hot-swapping of the library.
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.