Commit 079e75a4 authored by Jean-Matthieu Gallard's avatar Jean-Matthieu Gallard
Browse files

Rename Code generator to kernel generator

parent 2b7cfba2
......@@ -210,29 +210,12 @@ the flag \linebreak
\section{Optimised Kernels}\label{sec:optimized-kernels}
\exahype\ offers optimised compute kernels. Given a specification file, the toolkit
triggers the code generator to output optimised compute kernels for this specific setup.
triggers the kernel generator to output optimised compute kernels for this specific setup.
\paragraph{Prerequisites}
The code generator exhibits two dependencies. First, the code generator requires Python 3 with numpy and jinja2.
Second, it relies on Intel's libxsmm generator driver. You therefore have
to clone the libxsmm repository \url{https://github.com/hfp/libxsmm} and build your
local generator driver
\begin{code}
make generator
\end{code}
to obtain the executable in \texttt{path/to/libxsmm/bin/libxsmm\_gemm\_generator}.
\paragraph{Specification file}
The path to libxsmm have to be given in the specification file under the path to ExaHyPE:
\begin{code}
exahype-project MyEulerFlow
...
exahype-path = ./ExaHyPE
libxsmm-path = ./Libxsmm
output-directory = ./ApplicationExamples/EulerFlow
...
\end{code}
The code generator exhibits two dependencies. First, the kernel generator requires Python 3 with jinja2.
Second, it relies on Intel's libxsmm generator driver.
Both are handled as \exahype\ submodule and should be downloaded locally when setting up \exahype\.
\paragraph{Microarchitecture}
The optimised kernels explicitly use the instruction set available on the
......@@ -246,12 +229,12 @@ in table \ref{table:flags1}.
\multicolumn{1}{c}{\textbf{Architecture}} &
\multicolumn{1}{c}{\textbf{Meaning}} \\
\midrule \midrule
noarch & unspecified \\
wsm & Westmere \\
snb & Sandy Bridge \\
hsw & Haswell \\
knc & Knights Corner (Xeon Phi) \\
knl & Knights Landing (Xeon Phi) \\
skx & Skylake \\
\bottomrule
\end{tabular}
\end{center}
......@@ -265,11 +248,7 @@ cat /proc/cpuinfo
\end{code}
and search for it on \url{http://ark.intel.com}.
Set the architecture flag to `noarch' if the microarchitecture of your
processor is not supported. You will nevertheless obtain semi-optimised
kernels. The default makefile utilises the flags \texttt{march=native} (gcc)
respectively \texttt{xHost} (icc). The compiler queries what
hardware features are available and optimises the kernels to some degree.
The optimised kernels require an architecture to be set.
\section{An Example Optimised Specification File}
......
......@@ -65,7 +65,7 @@ The toolkit itself can run with multiple options. The main ones being:
% \noindent
% The \exahype\ toolbox is a small standalone Java program (a single
% executable JAR file). We refer to it as \emph{toolbox} or \emph{toolkit}
% or sometimes just \emph{code generator}. The toolkit acts as sole interface for
% or sometimes just \emph{kernel generator}. The toolkit acts as sole interface for
% users, i.e.~non-developers. We decided to realise it in Java for several
% reasons:
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment