This document details instructions to download, compile, and install the OpenMSCG package from the source code. If you’re not interested in optimizing or developing the package, it is recommended that you use the easy-install method with our precompiled binary distributions in wheel format.
To compile the OpenMSCG package you need to have the following software packages in your computer system:
C++ compiler (support C++11 standard)
GSL library (version>=2.1 & <=2.4)
IMPORTANT: Python 2 is not supported.
IMPORTANT: If you’re working on HPC systems, these packages have likely been installed by the system administrators already. Please read the system manual or contact your support staff for instructions on how to use them.
There are three installation options for the Python libraries needed by the package. We recommend using Anaconda3.
Option 1: Anaconda3
Anaconda3 can be downloaded and installed from the website:
Please choose the distribution with
Python 3.7 version
Option 2: Miniconda3
As indicated by its name,
Miniconda is a mini-version of
which only comes with a small number of packages to minimize its disk usage.
Miniconda also provides very friendly functions for package
Please choose the distribution that fits your OS and with
Option 3: From official Python3 distribution:
The software can be downloaded from the website:
But the installation requires more effort.
If you are using Anaconda, you do not need to worry about installing anything else and simply use the quick start guide. If not, continue.
2. C++ Compiler¶
Option 1: GNU Compiler (g++)
On HPC Linux systems, GCC is always provided. Please check with the system manual or contact assistance to initialize the GCC environment. If you’re using Linux or MacOS on a local machine, you can follow the instructions below to install it:
Note: Version 4.3 or above is required to support C++11.
Option 2: Intel Compiler (icpc)
Intel compiler usually gives better performance on an Intel processor, however, it’s not free. You need to buy licenses to install and use it. On HPC Linux systems using Intel processors the Intel compiler is usually provided. Please check with the system manual or contact assistance to initialize the ICC/ICPC environment.
3. GSL Library¶
The GNU Scientific Library (GSL) is a numerical library for C and C++ programmers. It is a free open source library under the GNU General Public License. By default, you don’t need to compile the library by yourself. The GNU website provides a list of compiled binaries to download. You need to choose the correct platform and version. A general guide can be found at:
Some simple commands on common OS’s to automatically install GSL:
Ubuntu 18.04 or above:
sudo apt-get install libgsl-dev
Redhat/CentOS 7 or above:
sudo yum install gsl-devel
MacOS X or above:
brew install gsl(GSL website)
4. LAPACK Library¶
Quoted from the LAPACK official website: “LAPACK is written in Fortran 90 and provides routines for solving systems of simultaneous linear equations, least-squares solutions of linear systems of equations, eigenvalue problems, and singular value problems.”
On most Linux systems, LAPACK is already installed as a built-in library. Therefore, there’s often no need to manually set it up. In case it is not found, you can follow the instructions from the following website to install it:
Setup with Intel MKL:
If you’re using Intel compilers, using Intel’s Math Kernel Library (MKL) to provide LAPACK interfaces can give much better performance (note: this is only recommended if you are using Intel processors). MKL is free to be obtained with instructions on the following website:
Again, on HPC systems, MKL should be provided, and is usually found with the Intel compilers.
Setup on MacOS:
Instead of the standard LAPACK library, Apple provides its own framework
to use, which can be used by passing the flag
-framework Accelerate to the linker
In the folder that you want to download the package, run “git” to clone the remote repository:
GIT_SSL_NO_VERIFY=true git clone https://software.rcc.uchicago.edu/git/MSCG/openmscg.git
Enter the repository directory:
To compile the C++ code for the package, you need to prepare a configuration file named
build.cfg in the root folder to specify required options. An example file is prepared
arch folder with the following content
[build_options] cc = icpc cxx = icpc compile = -O2 -Wno-sign-compare link = -static -static-intel -static-libgcc -static-libstdc++ -wd10237 gsl_lib = /software/gsl-2.2.1-el7-x86_64+intel-16.0/lib/libgsl.a /software/gsl-2.2.1-el7-x86_64+intel-16.0/lib/libgslcblas.a lapack_lib = -mkl=sequential -lmkl_gf_lp64 -lmkl_intel_thread -lmkl_core -liomp5
These options may need to be customized to match your system envrionment:
cc: command name for C++ compilation
cxx: command name for C++ compilation, the same as
compile: options for compilation, for examples, extra header files for GSL and Linpack.
link: options for building (linking) target binaries
gsl_lib: options specifying the GSL library for linking
lapack_lib: options specifying the Linpack libraries for linking