\chapter{Installation Instructions }
\hypertarget{install_ginkgo}{}\label{install_ginkgo}\index{Installation Instructions@{Installation Instructions}}
\label{install_ginkgo_md__2build_2ginkgo-hpc_2src_2ginkgo-1_811_80_2INSTALL}%
\Hypertarget{install_ginkgo_md__2build_2ginkgo-hpc_2src_2ginkgo-1_811_80_2INSTALL}%
\hypertarget{install_ginkgo_autotoc_md0}{}\doxysubsection{\texorpdfstring{Building}{Building}}\label{install_ginkgo_autotoc_md0}
Use the standard CMake build procedure:\+


\begin{DoxyCode}{0}
\DoxyCodeLine{mkdir\ build;\ cd\ build}
\DoxyCodeLine{cmake\ [OPTIONS]\ ..\ \&\&\ cmake\ -\/-\/build\ .}

\end{DoxyCode}


For Microsoft Visual Studio, use {\ttfamily cmake -\/-\/build . -\/-\/config \texorpdfstring{$<$}{<}build\+\_\+type\texorpdfstring{$>$}{>}} to decide the build type. The possible options are {\ttfamily Debug}, {\ttfamily Release}, {\ttfamily Rel\+With\+Deb\+Info} and {\ttfamily Min\+Size\+Rel}.

Replace {\ttfamily \+[OPTIONS]\+} with desired cmake options for your build. Ginkgo adds the following additional switches to control what is being built:\+


\begin{DoxyItemize}
\item {\ttfamily -\/DGINKGO\+\_\+\+DEVEL\+\_\+\+TOOLS=\{ON, OFF\}} sets up the build system for development (requires pre-\/commit, will also download the clang-\/format pre-\/commit hook), default is {\ttfamily OFF}. The default behavior installs a pre-\/commit hook, which disables git commits. If it is set to {\ttfamily ON}, a new pre-\/commit hook for formatting will be installed (enabling commits again). In both cases the hook may overwrite a user defined pre-\/commit hook when Ginkgo is used as a submodule.
\item {\ttfamily -\/DGINKGO\+\_\+\+MIXED\+\_\+\+PRECISION=\{ON, OFF\}} compiles true mixed-\/precision kernels instead of converting data on the fly, default is {\ttfamily OFF}. Enabling this flag increases the library size, but improves performance of mixed-\/precision kernels.
\item {\ttfamily -\/DGINKGO\+\_\+\+ENABLE\+\_\+\+HALF=\{ON, OFF\}} enable half precision support in Ginkgo, default is {\ttfamily ON}. It is {\ttfamily OFF} when the compiler is MSVC or MSYS2 system. If compiling is done with the CUDA backend before CUDA 12.\+2, we only support half precision after compute capability 5.\+3. CUDA 12.\+2+ compilers waive the compute capbility limitation.
\item {\ttfamily -\/DGINKGO\+\_\+\+ENABLE\+\_\+\+BFLOAT16=\{ON, OFF\}} enable half precision support in Ginkgo, default is {\ttfamily ON}. It is {\ttfamily OFF} when the compiler is MSVC or MSYS2 system. If compiling is done with the CUDA backend before CUDA 12.\+2, we only support bfloat16 precision after compute capability 8.\+0. CUDA 12.\+2+ compilers waive the compute capbility limitation.
\item {\ttfamily -\/DGINKGO\+\_\+\+BUILD\+\_\+\+TESTS=\{ON, OFF\}} builds Ginkgo\textquotesingle{}s tests (will download googletest), default is {\ttfamily ON}.
\item {\ttfamily -\/DGINKGO\+\_\+\+FAST\+\_\+\+TESTS=\{ON, OFF\}} reduces the input sizes for a few slow tests to speed them up, default is {\ttfamily OFF}.
\item {\ttfamily -\/DGINKGO\+\_\+\+BUILD\+\_\+\+BENCHMARKS=\{ON, OFF\}} builds Ginkgo\textquotesingle{}s benchmarks (will download gflags and nlohmann-\/json), default is {\ttfamily ON}.
\item {\ttfamily -\/DGINKGO\+\_\+\+BUILD\+\_\+\+EXAMPLES=\{ON, OFF\}} builds Ginkgo\textquotesingle{}s examples, default is {\ttfamily ON}
\item {\ttfamily -\/DGINKGO\+\_\+\+BUILD\+\_\+\+EXTLIB\+\_\+\+EXAMPLE=\{ON, OFF\}} builds the interfacing example with deal.\+II, default is {\ttfamily OFF}.
\item {\ttfamily -\/DGINKGO\+\_\+\+BUILD\+\_\+\+REFERENCE=\{ON, OFF\}} build reference implementations of the kernels, useful for testing, default is {\ttfamily ON}
\item {\ttfamily -\/DGINKGO\+\_\+\+BUILD\+\_\+\+OMP=\{ON, OFF\}} builds optimized Open\+MP versions of the kernels, default is {\ttfamily ON} if the selected C++ compiler supports Open\+MP, {\ttfamily OFF} otherwise.
\item {\ttfamily -\/DGINKGO\+\_\+\+BUILD\+\_\+\+CUDA=\{ON, OFF\}} builds optimized cuda versions of the kernels (requires CUDA), default is {\ttfamily ON} if a CUDA compiler could be detected, {\ttfamily OFF} otherwise.
\item {\ttfamily -\/DGINKGO\+\_\+\+BUILD\+\_\+\+DPCPP=\{ON, OFF\}} is deprecated. Please use {\ttfamily GINKGO\+\_\+\+BUILD\+\_\+\+SYCL} instead.
\item {\ttfamily -\/DGINKGO\+\_\+\+BUILD\+\_\+\+SYCL=\{ON, OFF\}} builds optimized SYCL versions of the kernels (requires {\ttfamily CMAKE\+\_\+\+CXX\+\_\+\+COMPILER} to be set to the {\ttfamily dpcpp} or {\ttfamily icpx} compiler). The default is {\ttfamily ON} if {\ttfamily CMAKE\+\_\+\+CXX\+\_\+\+COMPILER} is a SYCL compiler, {\ttfamily OFF} otherwise. Due to some differences in IEEE 754 floating point numberhandling in the Intel SYCL compilers, Ginkgo tests may fail unless compiled with {\ttfamily -\/DCMAKE\+\_\+\+CXX\+\_\+\+FLAGS=-\/ffp-\/model=precise}
\item {\ttfamily -\/DGINKGO\+\_\+\+BUILD\+\_\+\+HIP=\{ON, OFF\}} builds optimized HIP versions of the kernels (requires HIP), default is {\ttfamily ON} if an installation of HIP could be detected, {\ttfamily OFF} otherwise.
\item {\ttfamily -\/DCMAKE\+\_\+\+HIP\+\_\+\+ARCHITECTURES="{}gpuarch1;gpuarch2"{}} the AMDGPU targets to be passed to the compiler. If empty, compiler chooses based on the available GPUs.
\item {\ttfamily -\/DGINKGO\+\_\+\+BUILD\+\_\+\+HWLOC=\{ON, OFF\}} builds Ginkgo with HWLOC. Default is {\ttfamily OFF}.
\item {\ttfamily -\/DGINKGO\+\_\+\+BUILD\+\_\+\+DOC=\{ON, OFF\}} creates an HTML version of Ginkgo\textquotesingle{}s documentation from inline comments in the code. The default is {\ttfamily OFF}.
\item {\ttfamily -\/DGINKGO\+\_\+\+DOC\+\_\+\+GENERATE\+\_\+\+EXAMPLES=\{ON, OFF\}} generates the documentation of examples in Ginkgo. The default is {\ttfamily ON}.
\item {\ttfamily -\/DGINKGO\+\_\+\+DOC\+\_\+\+GENERATE\+\_\+\+PDF=\{ON, OFF\}} generates a PDF version of Ginkgo\textquotesingle{}s documentation from inline comments in the code. The default is {\ttfamily OFF}.
\item {\ttfamily -\/DGINKGO\+\_\+\+DOC\+\_\+\+GENERATE\+\_\+\+DEV=\{ON, OFF\}} generates the developer version of Ginkgo\textquotesingle{}s documentation. The default is {\ttfamily OFF}.
\item {\ttfamily -\/DGINKGO\+\_\+\+WITH\+\_\+\+CLANG\+\_\+\+TIDY=\{ON, OFF\}} makes Ginkgo call {\ttfamily clang-\/tidy} to find programming issues. The path can be manually controlled with the CMake variable {\ttfamily -\/DGINKGO\+\_\+\+CLANG\+\_\+\+TIDY\+\_\+\+PATH=\texorpdfstring{$<$}{<}path\texorpdfstring{$>$}{>}}. The default is {\ttfamily OFF}.
\item {\ttfamily -\/DGINKGO\+\_\+\+WITH\+\_\+\+IWYU=\{ON, OFF\}} makes Ginkgo call {\ttfamily iwyu} to find include issues. The path can be manually controlled with the CMake variable {\ttfamily -\/DGINKGO\+\_\+\+IWYU\+\_\+\+PATH=\texorpdfstring{$<$}{<}path\texorpdfstring{$>$}{>}}. The default is {\ttfamily OFF}.
\item {\ttfamily -\/DGINKGO\+\_\+\+CHECK\+\_\+\+CIRCULAR\+\_\+\+DEPS=\{ON, OFF\}} enables compile-\/time checks for circular dependencies between different Ginkgo libraries and self-\/sufficient headers. Should only be used for development purposes. The default is {\ttfamily OFF}.
\item {\ttfamily -\/DGINKGO\+\_\+\+VERBOSE\+\_\+\+LEVEL=integer} sets the verbosity of Ginkgo.
\begin{DoxyItemize}
\item {\ttfamily 0} disables all output in the main libraries,
\item {\ttfamily 1} enables a few important messages related to unexpected behavior (default).
\end{DoxyItemize}
\item {\ttfamily GINKGO\+\_\+\+INSTALL\+\_\+\+RPATH} allows setting any RPATH information when installing the Ginkgo libraries. If this is {\ttfamily OFF}, the behavior is the same as if all other RPATH flags are set to {\ttfamily OFF} as well. The default is {\ttfamily ON}.
\item {\ttfamily GINKGO\+\_\+\+INSTALL\+\_\+\+RPATH\+\_\+\+ORIGIN} adds \$\+ORIGIN (Linux) or @loader\+\_\+path (Mac\+OS) to the installation RPATH. The default is {\ttfamily ON}.
\item {\ttfamily GINKGO\+\_\+\+INSTALL\+\_\+\+RPATH\+\_\+\+DEPENDENCIES} adds the dependencies to the installation RPATH. The default is {\ttfamily OFF}.
\item {\ttfamily -\/DCMAKE\+\_\+\+INSTALL\+\_\+\+PREFIX=path} sets the installation path for {\ttfamily make install}. The default value is usually something like {\ttfamily /\+usr/\+local}.
\item {\ttfamily -\/DCMAKE\+\_\+\+BUILD\+\_\+\+TYPE=type} specifies which configuration will be used for this build of Ginkgo. The default is {\ttfamily RELEASE}. Supported values are CMake\textquotesingle{}s standard build types such as {\ttfamily DEBUG} and {\ttfamily RELEASE} and the Ginkgo specific {\ttfamily COVERAGE}, {\ttfamily ASAN} (Address\+Sanitizer), {\ttfamily LSAN} (Leak\+Sanitizer), {\ttfamily TSAN} (Thread\+Sanitizer) and {\ttfamily UBSAN} (undefined behavior sanitizer) types.
\item {\ttfamily -\/DBUILD\+\_\+\+SHARED\+\_\+\+LIBS=\{ON, OFF\}} builds ginkgo as shared libraries ({\ttfamily OFF}) or as dynamic libraries ({\ttfamily ON}), default is {\ttfamily ON}.
\item {\ttfamily -\/DGINKGO\+\_\+\+JACOBI\+\_\+\+FULL\+\_\+\+OPTIMIZATIONS=\{ON, OFF\}} use all the optimizations for the CUDA Jacobi algorithm. {\ttfamily OFF} by default. Setting this option to {\ttfamily ON} may lead to very slow compile time (\texorpdfstring{$>$}{>}20 minutes) for the {\ttfamily jacobi\+\_\+generate\+\_\+kernels.\+cu} file and high memory usage.
\item {\ttfamily -\/DCMAKE\+\_\+\+CUDA\+\_\+\+HOST\+\_\+\+COMPILER=path} instructs the build system to explicitly set CUDA\textquotesingle{}s host compiler to the path given as argument. By default, CUDA uses its toolchain\textquotesingle{}s host compiler. Setting this option may help if you\textquotesingle{}re experiencing linking errors due to ABI incompatibilities. This option is supported since \href{https://github.com/Kitware/CMake/commit/489c52ce680df6439f9c1e553cd2925ca8944cb1}{\texttt{CMake 3.\+8}} but \href{https://cmake.org/cmake/help/v3.10/variable/CMAKE_CUDA_HOST_COMPILER.html}{\texttt{documented starting from 3.\+10}}.
\item {\ttfamily -\/DGINKGO\+\_\+\+CUDA\+\_\+\+ARCHITECTURES=\texorpdfstring{$<$}{<}list\texorpdfstring{$>$}{>}} where {\ttfamily \texorpdfstring{$<$}{<}list\texorpdfstring{$>$}{>}} is a semicolon ({\ttfamily ;}) separated list of architectures. Supported values are:\+
\begin{DoxyItemize}
\item {\ttfamily Auto}
\item {\ttfamily Kepler}, {\ttfamily Maxwell}, {\ttfamily Pascal}, {\ttfamily Volta}, {\ttfamily Turing}, {\ttfamily Ampere}
\item {\ttfamily CODE}, {\ttfamily CODE(\+COMPUTE)}, {\ttfamily (COMPUTE)}
\end{DoxyItemize}

{\ttfamily Auto} will automatically detect the present CUDA-\/enabled GPU architectures in the system. {\ttfamily Kepler}, {\ttfamily Maxwell}, {\ttfamily Pascal}, {\ttfamily Volta} and {\ttfamily Ampere} will add flags for all architectures of that particular NVIDIA GPU generation. {\ttfamily COMPUTE} and {\ttfamily CODE} are placeholders that should be replaced with compute and code numbers (e.\+g. for {\ttfamily compute\+\_\+70} and {\ttfamily sm\+\_\+70} {\ttfamily COMPUTE} and {\ttfamily CODE} should be replaced with {\ttfamily 70}. Default is {\ttfamily Auto}. For a more detailed explanation of this option see the \href{https://github.com/ginkgo-project/CudaArchitectureSelector/blob/master/CudaArchitectureSelector.cmake\#L58}{\texttt{{\ttfamily ARCHITECTURES} specification list}} section in the documentation of the Cuda\+Architecture\+Selector CMake module.
\end{DoxyItemize}

Additionally, the following CMake options have effect on the build process:\+


\begin{DoxyItemize}
\item {\ttfamily -\/DCMAKE\+\_\+\+EXPORT\+\_\+\+PACKAGE\+\_\+\+REGISTRY=\{ON,OFF\}} if set to {\ttfamily ON} the build directory will be stored in the current user\textquotesingle{}s CMake package registry.
\end{DoxyItemize}

For example, to build everything (in debug mode), use:\+


\begin{DoxyCode}{0}
\DoxyCodeLine{cmake\ ..\ -\/BDebug\ -\/DCMAKE\_BUILD\_TYPE=Debug\ -\/DGINKGO\_DEVEL\_TOOLS=ON\ \(\backslash\)}
\DoxyCodeLine{\ \ \ \ -\/DGINKGO\_BUILD\_TESTS=ON\ -\/DGINKGO\_BUILD\_REFERENCE=ON\ -\/DGINKGO\_BUILD\_OMP=ON\ \(\backslash\)}
\DoxyCodeLine{\ \ \ \ -\/DGINKGO\_BUILD\_CUDA=ON\ -\/DGINKGO\_BUILD\_HIP=ON}
\DoxyCodeLine{cmake\ -\/-\/build\ Debug}

\end{DoxyCode}


NOTE:\+ Ginkgo is known to work with the {\ttfamily Unix Makefiles}, {\ttfamily Ninja}, {\ttfamily Min\+GW Makefiles} and {\ttfamily Visual Studio 16 2019} based generators. Other CMake generators are untested.\hypertarget{install_ginkgo_autotoc_md1}{}\doxysubsection{\texorpdfstring{Building Ginkgo in Windows}{Building Ginkgo in Windows}}\label{install_ginkgo_autotoc_md1}
Depending on the configuration settings, some manual work might be required:\+
\begin{DoxyItemize}
\item Build Ginkgo with Debug mode:\+ Some Debug build specific issues can appear depending on the machine and environment:\+ When you encounter the error message {\ttfamily ld:\+ error:\+ export ordinal too large}, add the compilation flag {\ttfamily -\/O1} by adding {\ttfamily -\/DCMAKE\+\_\+\+CXX\+\_\+\+FLAGS=-\/O1} to the CMake invocation.
\item Build Ginkgo in {\itshape Min\+GW}:\+\textbackslash{} If encountering the issue {\ttfamily cc1plus.\+exe:\+ out of memory allocating 65536 bytes}, please follow the workaround in \href{https://www.intel.com/content/www/us/en/programmable/support/support-resources/knowledge-base/embedded/2016/cc1plus-exe--out-of-memory-allocating-65536-bytes.html}{\texttt{reference}}, or trying to compile ginkgo again might work.
\end{DoxyItemize}\hypertarget{install_ginkgo_autotoc_md2}{}\doxysubsection{\texorpdfstring{Building Ginkgo with HIP support}{Building Ginkgo with HIP support}}\label{install_ginkgo_autotoc_md2}
Ginkgo provides a \href{https://github.com/ROCm-Developer-Tools/HIP}{\texttt{HIP}} backend. This allows to compile optimized versions of the kernels for either AMD or NVIDIA GPUs. The CMake configuration step will try to auto-\/detect the presence of HIP either at {\ttfamily /\+opt/\+rocm/\+hip} or at the path specified by {\ttfamily HIP\+\_\+\+PATH} as a CMake parameter ({\ttfamily -\/DHIP\+\_\+\+PATH=}) or environment variable ({\ttfamily export HIP\+\_\+\+PATH=}), unless {\ttfamily -\/DGINKGO\+\_\+\+BUILD\+\_\+\+HIP=ON/\+\+OFF} is set explicitly.\hypertarget{install_ginkgo_autotoc_md3}{}\doxysubsubsection{\texorpdfstring{Changing the paths to search for HIP and other packages}{Changing the paths to search for HIP and other packages}}\label{install_ginkgo_autotoc_md3}
All HIP installation paths can be configured through the use of environment variables or CMake variables. This way of configuring the paths is currently imposed by the {\ttfamily HIP} tool suite. The variables are the following:\+
\begin{DoxyItemize}
\item CMake {\ttfamily -\/DROCM\+\_\+\+PATH=} or environment {\ttfamily export ROCM\+\_\+\+PATH=}:\+ sets the {\ttfamily ROCM} installation path. The default value is {\ttfamily /\+opt/\+rocm/\+}.
\item CMake {\ttfamily -\/DHIP\+\_\+\+CLANG\+\_\+\+PATH} or environment {\ttfamily export HIP\+\_\+\+CLANG\+\_\+\+PATH=}:\+ sets the {\ttfamily HIP} compatible {\ttfamily clang} binary path. The default value is {\ttfamily \$\{ROCM\+\_\+\+PATH\}/\+llvm/\+bin}.
\item CMake {\ttfamily -\/DHIP\+\_\+\+PATH=} or environment {\ttfamily export HIP\+\_\+\+PATH=}:\+ sets the {\ttfamily HIP} installation path. The default value is {\ttfamily \$\{ROCM\+\_\+\+PATH\}/\+hip}.
\item CMake {\ttfamily -\/DHIPBLAS\+\_\+\+PATH=} or environment {\ttfamily export HIPBLAS\+\_\+\+PATH=}:\+ sets the {\ttfamily hip\+BLAS} installation path. The default value is {\ttfamily \$\{ROCM\+\_\+\+PATH\}/\+hipblas}.
\item CMake {\ttfamily -\/DHIPSPARSE\+\_\+\+PATH=} or environment {\ttfamily export HIPSPARSE\+\_\+\+PATH=}:\+ sets the {\ttfamily hip\+SPARSE} installation path. The default value is {\ttfamily \$\{ROCM\+\_\+\+PATH\}/\+hipsparse}.
\item CMake {\ttfamily -\/DHIPFFT\+\_\+\+PATH=} or environment {\ttfamily export HIPFFT\+\_\+\+PATH=}:\+ sets the {\ttfamily hip\+FFT} installation path. The default value is {\ttfamily \$\{ROCM\+\_\+\+PATH\}/\+hipfft}.
\item CMake {\ttfamily -\/DROCRAND\+\_\+\+PATH=} or environment {\ttfamily export ROCRAND\+\_\+\+PATH=}:\+ sets the {\ttfamily roc\+RAND} installation path. The default value is {\ttfamily \$\{ROCM\+\_\+\+PATH\}/\+rocrand}.
\item CMake {\ttfamily -\/DHIPRAND\+\_\+\+PATH=} or environment {\ttfamily export HIPRAND\+\_\+\+PATH=}:\+ sets the {\ttfamily hip\+RAND} installation path. The default value is {\ttfamily \$\{ROCM\+\_\+\+PATH\}/\+hiprand}.
\item environment {\ttfamily export CUDA\+\_\+\+PATH=}:\+ where {\ttfamily hipcc} can find {\ttfamily CUDA} if it is not in the default {\ttfamily /\+usr/\+local/\+cuda} path.
\end{DoxyItemize}\hypertarget{install_ginkgo_autotoc_md4}{}\doxysubsubsection{\texorpdfstring{HIP platform detection of AMD and NVIDIA}{HIP platform detection of AMD and NVIDIA}}\label{install_ginkgo_autotoc_md4}
Ginkgo relies on CMake to decide which compiler to use for HIP. To choose {\ttfamily nvcc} instead of the default ROCm {\ttfamily clang++}, set the corresponding environment variable:\+ 
\begin{DoxyCode}{0}
\DoxyCodeLine{export\ HIPCXX=nvcc}

\end{DoxyCode}
 Note that this option is currently not being tested in our CI pipelines.\hypertarget{install_ginkgo_autotoc_md5}{}\doxysubsection{\texorpdfstring{Third party libraries and packages}{Third party libraries and packages}}\label{install_ginkgo_autotoc_md5}
Ginkgo relies on third party packages in different cases. These third party packages can be turned off by disabling the relevant options.


\begin{DoxyItemize}
\item GINKGO\+\_\+\+BUILD\+\_\+\+TESTS=ON:\+ Our tests are implemented with \href{https://github.com/google/googletest}{\texttt{Google Test}};
\item GINKGO\+\_\+\+BUILD\+\_\+\+BENCHMARKS=ON:\+ For argument management we use \href{https://github.com/gflags/gflags}{\texttt{gflags}} and for JSON parsing we use \href{https://github.com/nlohmann/json}{\texttt{nlohmann-\/json}};
\item GINKGO\+\_\+\+BUILD\+\_\+\+HWLOC=ON:\+ \href{https://www.open-mpi.org/projects/hwloc}{\texttt{hwloc}} to detect and control cores and devices.
\item GINKGO\+\_\+\+BUILD\+\_\+\+HWLOC=ON and GINKGO\+\_\+\+BUILD\+\_\+\+TESTS=ON:\+ \href{https://www.man7.org/linux/man-pages/man3/numa.3.html}{\texttt{libnuma}} is required when testing the functions provided through Machine\+Topology.
\item GINKGO\+\_\+\+BUILD\+\_\+\+EXAMPLES=ON:\+ \href{https://opencv.org/}{\texttt{Open\+CV}} is required for some examples, they are disabled when Open\+CV is not available.
\item GINKGO\+\_\+\+BUILD\+\_\+\+DOC=ON:\+ \href{https://www.doxygen.nl/}{\texttt{doxygen}} is required to build the documentation and additionally \href{https://graphviz.org/}{\texttt{graphviz}} is required to build the class hierarchy graphs.
\item \href{http://glaros.dtc.umn.edu/gkhome/metis/metis/overview}{\texttt{METIS}} is required when using the {\ttfamily Nested\+Dissection} reordering functionality. If METIS is not found, the functionality is disabled.
\item \href{https://icl.utk.edu/papi/}{\texttt{PAPI}} (\texorpdfstring{$>$}{>}= 7.\+1.\+0) is required when using the {\ttfamily Papi} logger. If PAPI is not found, the functionality is disabled.
\end{DoxyItemize}

Ginkgo attempts to use pre-\/installed versions of these package if they match version requirements using {\ttfamily find\+\_\+package}. Otherwise, the configuration step will download the files for each of the packages {\ttfamily GTest}, {\ttfamily gflags}, {\ttfamily nlohmann-\/json} and {\ttfamily hwloc} and build them internally.

Note that, if the external packages were not installed to the default location, the CMake option {\ttfamily -\/DCMAKE\+\_\+\+PREFIX\+\_\+\+PATH=\texorpdfstring{$<$}{<}path-\/list\texorpdfstring{$>$}{>}} needs to be set to the semicolon ({\ttfamily ;}) separated list of install paths of these external packages. For more Information, see the \href{https://cmake.org/cmake/help/v3.9/variable/CMAKE_PREFIX_PATH.html}{\texttt{CMake documentation for CMAKE\+\_\+\+PREFIX\+\_\+\+PATH}} for details.

For convenience, the options {\ttfamily GINKGO\+\_\+\+INSTALL\+\_\+\+RPATH\+[\+\_\+.\texorpdfstring{$\ast$}{*}]\+} can be used to bind the installed Ginkgo shared libraries to the path of its dependencies.\hypertarget{install_ginkgo_autotoc_md6}{}\doxysubsection{\texorpdfstring{Installing Ginkgo}{Installing Ginkgo}}\label{install_ginkgo_autotoc_md6}
To install Ginkgo into the specified folder, execute the following command in the build folder


\begin{DoxyCode}{0}
\DoxyCodeLine{make\ install}

\end{DoxyCode}


If the installation prefix (see {\ttfamily CMAKE\+\_\+\+INSTALL\+\_\+\+PREFIX}) is not writable for your user, e.\+g. when installing Ginkgo system-\/wide, it might be necessary to prefix the call with {\ttfamily sudo}.

After the installation, CMake can find ginkgo with {\ttfamily find\+\_\+package(\+Ginkgo)}. An example can be found in the \href{test/test_install/CMakeLists.txt}{\texttt{{\ttfamily test\+\_\+install}}}. 