Document your code
Every project on GitHub comes with a version-controlled wiki to give your documentation the high level of care it deserves. It’s easy to create well-maintained, Markdown or rich text documentation alongside your code.
Sign up for free See pricing for teams and enterprisesBuild Guide
Build Guide
smelt
can be built on different platforms using cmake
version 3.0 or greater. The necessary
configuration files to find external dependencies and build the library are included in the GitHub repository. Currently,
smelt
has been tested on the following system configurations:
- Ubuntu 18.04 with GCC 7.3.0
- Ubuntu 16.04
- GCC 7.4.0
- Clang 7.0.0
- MacOS 10.14 with Xcode 10.2
- MacOS 10.13 with GCC 7.4.0
- Windows 10 with Visual Studio 19
- Windows Server 2016 with Visual Studio 17
External Dependencies
smelt
has several header-only dependencies which are all contained in the external
folder of the master
branch. These
include:
- Boost: For random number generation, statistical distributions and functions
- Eigen: For linear algebra and matrix operations
- Catch2: For unit testing
-
JSON for Modern C++: For reading and writing
JSON
In addition to header-only dependencies, smelt
also requires the following packages:
Mac and Windows users can install them through conda
while Ubuntu users
can install them using apt
. Otherwise, these packages can alse be downloaded directly from Intel and installed manually.
The cmake
build has been configured to discover these libraries through environment variables that need to be set
prior to configuring the build. When installing the libraries manually or using apt
, these environment variables
can be set using scripts provided by Intel, which will be located in the installation directories for MKL and IPP. For
MKL, run the script mklvars.sh
on Linux and MacOS to set the required environment variables. On Windows, this is achieved
by running the mklvars.bat
script. The process is the same for IPP, where the script is named ippvars.sh
(Linux and MacOS)
or ippvars.bat
(Windows). After these scripts have been executed, the build process can be started.
When using conda
to install the dependencies, the header files and binaries are installed separately. Run the following
commands to install the MKL and IPP dependencies:
conda install -c intel mkl --yes
conda install -c intel mkl-include --yes
conda install -c intel ipp --yes
conda install -c intel ipp-include --yes
Once installation has been completed, the MKLROOT
and IPPROOT
environment variables need to be set. Additionally, the libraries
need to be added the path. This is done by running the following:
- MacOS
export MKLROOT=/path/to/miniconda
export IPPROOT=/path/to/miniconda
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/miniconda/lib
- Windows
set MKLROOT=\path\to\miniconda
set IPPROOT=\path\to\miniconda
set PATH=%PATH%;%MKLROOT%\Library\bin
set PATH=%PATH%;%IPPROOT%\Library\bin
set PATH=%PATH%;%MKLROOT%\Library\lib
set PATH=%PATH%;%IPPROOT%\Library\lib
Building and Testing
Once the required dependencies have been installed and environment variables set, smelt
is ready to be built. To configure
and start the build, run the following commands:
- Linux and MacOS
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make
- Windows
mkdir build
cd build
cmake -DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=TRUE -DBUILD_SHARED_LIBS=TRUE ..
cmake --build . --target ALL_BUILD --config Release
When the build has completed, run the suite of unit tests to make sure smelt
functions
correctly on your system:
- Linux and MacOS
ctest --verbose
- Windows
ctest -C Release --verbose
If all tests pass, smelt
has been built successfully and is ready for use.