You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
4.7 KiB
81 lines
4.7 KiB
\section{Installation}
|
|
\label{sec:Installation}
|
|
|
|
The \MCFM{} package may be downloaded from the \MCFM{} homepage at \url{https://mcfm.fnal.gov}.
|
|
After extracting, in the simplest case, the source can be compiled by running \texttt{cmake ..} in
|
|
the Bin directory:
|
|
\begin{lstlisting}
|
|
tar -xzvf MCFM-X.Y.tar.gz
|
|
cd mcfm/Bin
|
|
cmake -DCMAKE_Fortran_COMPILER=gfortran -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ ..
|
|
\end{lstlisting}
|
|
We require at least \texttt{gcc}/\texttt{g++}/\texttt{gfortran} of version 7 or
|
|
greater, and a \texttt{cmake}
|
|
version greater than 3. By default all necessary dependencies, including LHAPDF, are compiled with
|
|
the default compiler that \texttt{cmake} detects. To adjust the compiler, or disable the use of the
|
|
internal \LHAPDF{}, or enable {\abbrev MPI}, we refer to the \texttt{INSTALL} file.
|
|
|
|
Additional complications may arise especially on OS X systems, where by default
|
|
\texttt{gcc}/\texttt{g++}
|
|
is linked to the clang compiler. Please make sure to follow the \texttt{INSTALL} instructions to
|
|
change the compiler names to the GNU versions. Note that \LHAPDF{} 6.3.0 has a multithreading
|
|
bug and we therefore we do not recommend to use it. \MCFM{} has been tested with \LHAPDF{} 6.2.X.
|
|
Version 5 of \LHAPDF{} is not supported.
|
|
|
|
Please ensure that your compiler is working and can produce executable program
|
|
files. For example when your compiler has been installed into a non-standard
|
|
location you probably need to append the compiler library path to {\tt
|
|
LD\_LIBRARY\_PATH } ({\tt DYLD\_FALLBACK\_LIBRARY\_PATH} on OS X). This can be
|
|
achieved, for example, as follows:
|
|
\begin{verbatim}
|
|
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/home/user/local/lib/gcc7
|
|
\end{verbatim}
|
|
|
|
The directory structure of \MCFM{} is as follows:
|
|
\begin{itemize}
|
|
\item {\tt Doc}. The source for this document.
|
|
\item {\tt Bin}. The directory containing the executable {\tt mcfm},
|
|
and various essential files -- notably the options file {\tt input.ini}.
|
|
\item {\tt Bin/Pdfdata}. The directory containing the internal \PDF{} data-files.
|
|
\item {\tt Bin/PDFs}. Directory for \LHAPDF{} grid files used by bundled \LHAPDF{}.
|
|
\item {\tt src}. The Fortran source files in various subdirectories.
|
|
\item {\tt lib/TensorReduction} General tensor reduction code based on the work of Passarino and
|
|
Veltman \cite{Passarino:1978jh} and Oldenborgh and Vermaseren \cite{vanOldenborgh:1989wn}.
|
|
\item {\tt lib/qcdloop-2.0.5}. The source files to the library
|
|
QCDLoop~\cite{Carrazza:2016gav,Ellis:2007qk}.
|
|
\item {\tt lib/oneloop}. The source files to the library OneLOop~\cite{vanHameren:2010cp}.
|
|
\item {\tt lib/qd-2.3.22}. Library to support double-double and quad-double precision data types \cite{libqd}.
|
|
\item {\tt lib/AMOS}. Library for AMOS, `` A Portable Package for Bessel Functions of a Complex Argument
|
|
and Nonnegative Order'', taken from {\tt http://www.netlib.org/amos/}.
|
|
\item {\tt lib/SpecialFns}. Library containing the implementation of special
|
|
functions from a variety of sources.
|
|
\item {\tt lib/VVamp}. Library containing the implementation of two-loop helicity
|
|
amplitudes for $q\bar q \to V_1 V_2$, from the results of
|
|
Ref.~\cite{Gehrmann:2015ora}.
|
|
\item The {\tt lib/handyG} library for the evaluation of generalized
|
|
polylogarithms~\cite{Naterop:2019xaf}.
|
|
\end{itemize}
|
|
|
|
\subsection{OpenMP and MPI}
|
|
\MCFM{} uses \OMP{} (Open Multi-Processing) to implement multi-threading and automatically adjusts to the
|
|
number of available \CPU{} threads. The multi-threading is implemented with respect to the integration routine
|
|
Vegas, which distributes the event evaluations over the threads and combines all events at the end of
|
|
every iteration.
|
|
|
|
Two environment variables are useful. On some systems, depending on the \OMP{} implementation,
|
|
the program will crash when calculating some of the more complicated processes,
|
|
for example $W+2$~jet production at \NLO{}.
|
|
Then, adjusting {\tt OMP\_STACKSIZE} may be needed for the program to run correctly.
|
|
Setting thisvariable to {\tt 16000}, for instance in the Bash shell by using the
|
|
command {\tt export OMP\_STACKSIZE=16000}, has been found to be sufficient
|
|
for all processes. The second useful variable {\tt OMP\_NUM\_THREADS}
|
|
may be used to directly control the number of threads used during
|
|
\OMP{} execution (the default is the maximum number of threads available
|
|
on the system).
|
|
|
|
It is also possible to run \MCFM{} using \MPI{} (Message Passing Interface).
|
|
To run in this mode, change the flag {\tt USEMPI} in the makefile to {\tt YES} and specify the MPI compiler
|
|
wrappers and compilers in the makefile or set the environment variables \texttt{FC} and \texttt{CXX}.
|
|
By default, the OpenMPI compiler wrappers mpifort and mpic++ are used,
|
|
to use gfortran and g++. When {\tt USEINTEL} is set, mpiifort and mpicc are used.
|
|
|