diff --git a/Curve.pdf b/Curve.pdf new file mode 100644 index 0000000..163e520 Binary files /dev/null and b/Curve.pdf differ diff --git a/Qmc.png b/Qmc.png new file mode 100644 index 0000000..159a0df Binary files /dev/null and b/Qmc.png differ diff --git a/Water.png b/Water.png new file mode 100644 index 0000000..79f9a24 Binary files /dev/null and b/Water.png differ diff --git a/beamerbackgroundtrex.png b/beamerbackgroundtrex.png new file mode 100644 index 0000000..1d22384 Binary files /dev/null and b/beamerbackgroundtrex.png differ diff --git a/beamercolorthemetrex.sty b/beamercolorthemetrex.sty new file mode 100644 index 0000000..cdb473e --- /dev/null +++ b/beamercolorthemetrex.sty @@ -0,0 +1,25 @@ +\mode + +% Settings +\setbeamercolor*{title page header}{fg=red!80!black} +\setbeamercolor*{author}{fg=blue!50!cyan!80!black} +\setbeamercolor*{institute}{fg=blue!80!cyan!50!black} +\setbeamercolor*{date}{fg=blue!80!cyan!50!black} + +\setbeamercolor*{item}{fg=blue!50!cyan!80!black} +\setbeamertemplate{items}[square] +\setbeamertemplate{sections/subsections in toc}[square] + +\setbeamercolor{block title}{fg=white,bg=blue!50!cyan!80!black} +%\setbeamercolor{block body}{bg=block title.bg!30!bg} + +% alertblock +\setbeamercolor{block title alerted}{fg=white,bg=red!80!black} +%\setbeamercolor{block body alerted}{bg=block title alerted.bg!10!bg} + +% exampleblock +\setbeamercolor{block title example}{fg=white,bg=blue!50!cyan!80!black} +%\setbeamercolor{block body example}{bg=white} + +\mode + diff --git a/beamerfontthemetrex.sty b/beamerfontthemetrex.sty new file mode 100644 index 0000000..cd11b10 --- /dev/null +++ b/beamerfontthemetrex.sty @@ -0,0 +1,313 @@ +%% +%% This is file `beamerfontthemetrex.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% beamerfontthemetrex.dtx (with options: `package') +%% --------------------------------------------------------------------------- +%% Copyright 2015 Matthias Vogelgesang and the LaTeX community. A full list of +%% contributors can be found at +%% +%% https://github.com/matze/mtheme/graphs/contributors +%% +%% and the original template was based on the HSRM theme by Benjamin Weiss. +%% +%% This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 +%% International License (https://creativecommons.org/licenses/by-sa/4.0/). +%% --------------------------------------------------------------------------- +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{beamerfontthemetrex}[2017/01/23 trex font theme] +\RequirePackage{etoolbox} +\RequirePackage{ifxetex} +\RequirePackage{ifluatex} +\RequirePackage{pgfopts} +\ifboolexpr{bool {xetex} or bool {luatex}}{ + \@ifpackageloaded{fontspec}{ + \PassOptionsToPackage{no-math}{fontspec} + }{ + \RequirePackage[no-math]{fontspec} + } + \newcounter{fontsnotfound} + \newcommand{\checkfont}[1]{% + \suppressfontnotfounderror=1% + \font\x = "#1" at 10pt + \selectfont + \ifx\x\nullfont% + \stepcounter{fontsnotfound}% + \fi% + \suppressfontnotfounderror=0% + } + + \newcommand{\iffontsavailable}[3]{% + \setcounter{fontsnotfound}{0}% + \expandafter\forcsvlist\expandafter% + \checkfont\expandafter{#1}% + \ifnum\value{fontsnotfound}=0% + #2% + \else% + #3% + \fi% + } + \iffontsavailable{Fira Sans Light,% + Fira Sans Light Italic,% + Fira Sans,% + Fira Sans Italic}% + {% + \setsansfont[ItalicFont={Fira Sans Light Italic},% + BoldFont={Fira Sans},% + BoldItalicFont={Fira Sans Italic}]% + {Fira Sans Light}% + }{% + \iffontsavailable{Fira Sans Light OT,% + Fira Sans Light Italic OT,% + Fira Sans OT,% + Fira Sans Italic OT}% + {% + \setsansfont[ItalicFont={Fira Sans Light Italic OT},% + BoldFont={Fira Sans OT},% + BoldItalicFont={Fira Sans Italic OT}]% + {Fira Sans Light OT}% + }{% + \PackageWarning{beamerthemetrex}{% + Could not find Fira Sans fonts% + } + } + } + \iffontsavailable{Fira Mono, Fira Mono Bold}{% + \setmonofont[BoldFont={Fira Mono Medium}]{Fira Mono}% + }{% + \iffontsavailable{Fira Mono OT, Fira Mono Bold OT}{% + \setmonofont[BoldFont={Fira Mono Medium OT}]{Fira Mono OT}% + }{% + \PackageWarning{beamerthemetrex}{% + Could not find Fira Mono fonts% + } + } + } + \AtBeginEnvironment{tabular}{% + \addfontfeature{Numbers={Monospaced}}% + } +}{% + \PackageWarning{beamerthemetrex}{% + You need to compile with XeLaTeX or LuaLaTeX to use the Fira fonts% + } +} +\setbeamerfont{title}{size=\Large,% + series=\bfseries} +\setbeamerfont{author}{size=\small} +\setbeamerfont{date}{size=\small} +\setbeamerfont{section title}{size=\Large,% + series=\bfseries} +\setbeamerfont{block title}{size=\normalsize,% + series=\bfseries} +\setbeamerfont{block title alerted}{size=\normalsize,% + series=\bfseries} +\setbeamerfont*{subtitle}{size=\large} +\setbeamerfont{frametitle}{size=\large,% + series=\bfseries} +\setbeamerfont{caption}{size=\small} +\setbeamerfont{caption name}{series=\bfseries} +\setbeamerfont{description item}{series=\bfseries} +\setbeamerfont{page number in head/foot}{size=\scriptsize} +\setbeamerfont{bibliography entry author}{size=\normalsize,% + series=\normalfont} +\setbeamerfont{bibliography entry title}{size=\normalsize,% + series=\bfseries} +\setbeamerfont{bibliography entry location}{size=\normalsize,% + series=\normalfont} +\setbeamerfont{bibliography entry note}{size=\small,% + series=\normalfont} +\setbeamerfont{standout}{size=\Large,% + series=\bfseries} +\pgfkeys{ + /trex/font/titleformat title/.cd, + .is choice, + regular/.code={% + \let\trex@titleformat\@empty% + \setbeamerfont{title}{shape=\normalfont}% + }, + smallcaps/.code={% + \let\trex@titleformat\@empty% + \setbeamerfont{title}{shape=\scshape}% + }, + allsmallcaps/.code={% + \let\trex@titleformat\lowercase% + \setbeamerfont{title}{shape=\scshape}% + \PackageWarning{beamerthemetrex}{% + Be aware that titleformat title=allsmallcaps can lead to problems% + } + }, + allcaps/.code={% + \let\trex@titleformat\uppercase% + \setbeamerfont{title}{shape=\normalfont} + \PackageWarning{beamerthemetrex}{% + Be aware that titleformat title=allcaps can lead to problems% + } + }, +} +\pgfkeys{ + /trex/font/titleformat subtitle/.cd, + .is choice, + regular/.code={% + \let\trex@subtitleformat\@empty% + \setbeamerfont{subtitle}{shape=\normalfont}% + }, + smallcaps/.code={% + \let\trex@subtitleformat\@empty% + \setbeamerfont{subtitle}{shape=\scshape}% + }, + allsmallcaps/.code={% + \let\trex@subtitleformat\lowercase% + \setbeamerfont{subtitle}{shape=\scshape}% + \PackageWarning{beamerthemetrex}{% + Be aware that titleformat subtitle=allsmallcaps can lead to problems% + } + }, + allcaps/.code={% + \let\trex@subtitleformat\uppercase% + \setbeamerfont{subtitle}{shape=\normalfont}% + \PackageWarning{beamerthemetrex}{% + Be aware that titleformat subtitle=allcaps can lead to problems% + } + }, +} +\pgfkeys{ + /trex/font/titleformat section/.cd, + .is choice, + regular/.code={% + \let\trex@sectiontitleformat\@empty% + \setbeamerfont{section title}{shape=\normalfont}% + }, + smallcaps/.code={% + \let\trex@sectiontitleformat\@empty% + \setbeamerfont{section title}{shape=\scshape}% + }, + allsmallcaps/.code={% + \let\trex@sectiontitleformat\MakeLowercase% + \setbeamerfont{section title}{shape=\scshape}% + \PackageWarning{beamerthemetrex}{% + Be aware that titleformat section=allsmallcaps can lead to problems% + } + }, + allcaps/.code={% + \let\trex@sectiontitleformat\MakeUppercase% + \setbeamerfont{section title}{shape=\normalfont}% + \PackageWarning{beamerthemetrex}{% + Be aware that titleformat section=allcaps can lead to problems% + } + }, +} +\pgfkeys{ + /trex/font/titleformat frame/.cd, + .is choice, + regular/.code={% + \let\trex@frametitleformat\@empty% + \setbeamerfont{frametitle}{shape=\normalfont}% + }, + smallcaps/.code={% + \let\trex@frametitleformat\@empty% + \setbeamerfont{frametitle}{shape=\scshape}% + }, + allsmallcaps/.code={% + \let\trex@frametitleformat\MakeLowercase% + \setbeamerfont{frametitle}{shape=\scshape}% + \PackageWarning{beamerthemetrex}{% + Be aware that titleformat frame=allsmallcaps can lead to problems% + } + }, + allcaps/.code={% + \let\trex@frametitleformat\MakeUppercase% + \setbeamerfont{frametitle}{shape=\normalfont} + \PackageWarning{beamerthemetrex}{% + Be aware that titleformat frame=allcaps can lead to problems% + } + }, +} +\pgfkeys{ + /trex/font/.cd, + titleformattitle/.code=\pgfkeysalso{titleformat title=#1}, + titleformatsubtitle/.code=\pgfkeysalso{titleformat subtitle=#1}, + titleformatsection/.code=\pgfkeysalso{titleformat section=#1}, + titleformatframe/.code=\pgfkeysalso{titleformat frame=#1}, +} +\newcommand{\trex@font@setdefaults}{ + \pgfkeys{/trex/font/.cd, + titleformat title=regular, + titleformat subtitle=regular, + titleformat section=regular, + titleformat frame=regular, + } +} +\def\trex@titleformat#1{#1} +\def\trex@subtitleformat#1{#1} +\def\trex@sectiontitleformat#1{#1} +\def\trex@frametitleformat#1{#1} +\patchcmd{\beamer@title}% + {\def\inserttitle{#2}}% + {\def\inserttitle{\trex@titleformat{#2}}}% + {}% + {\PackageError{beamerfontthemetrex}{Patching title failed}\@ehc} +\patchcmd{\beamer@subtitle}% + {\def\insertsubtitle{#2}}% + {\def\insertsubtitle{\trex@subtitleformat{#2}}}% + {}% + {\PackageError{beamerfontthemetrex}{Patching subtitle failed}\@ehc} +\patchcmd{\sectionentry} + {\def\insertsectionhead{#2}} + {\def\insertsectionhead{\trex@sectiontitleformat{#2}}} + {} + {\PackageError{beamerfontthemetrex}{Patching section title failed}\@ehc} +\@tempswafalse +\patchcmd{\beamer@section} + {\def\insertsectionhead{\hyperlink{Navigation\the\c@page}{#1}}} + {\def\insertsectionhead{\hyperlink{Navigation\the\c@page}{% + \trex@sectiontitleformat{#1}}}} + {\@tempswatrue} + {} +\patchcmd{\beamer@section} + {\protected@edef\insertsectionhead{\noexpand\hyperlink{Navigation\the\c@page}{#1}}} + {\protected@edef\insertsectionhead{\noexpand\hyperlink{Navigation\the\c@page}{% + \noexpand\trex@sectiontitleformat{#1}}}} + {\@tempswatrue} + {} +\if@tempswa\else + \PackageError{beamerfontthemetrex}{Patching section title failed}\@ehc +\fi +\@tempswafalse +\patchcmd{\beamer@subsection} + {\def\insertsubsectionhead{\hyperlink{Navigation\the\c@page}{#1}}} + {\def\insertsubsectionhead{\hyperlink{Navigation\the\c@page}{% + \trex@sectiontitleformat{#1}}}} + {\@tempswatrue} + {} +\patchcmd{\beamer@subsection} + {\protected@edef\insertsubsectionhead{\noexpand\hyperlink{Navigation\the\c@page}{#1}}} + {\protected@edef\insertsubsectionhead{\noexpand\hyperlink{Navigation\the\c@page}{% + \noexpand\trex@sectiontitleformat{#1}}}} + {\@tempswatrue} + {} +\if@tempswa\else + \PackageError{beamerfontthemetrex}{Patching section title failed}\@ehc +\fi +\patchcmd{\beamer@@frametitle} + {{% + \gdef\insertframetitle{{#2\ifnum\beamer@autobreakcount>0\relax{}\space% + \usebeamertemplate*{frametitle continuation}\fi}}% + \gdef\beamer@frametitle{#2}% + \gdef\beamer@shortframetitle{#1}% + }} + {{% + \gdef\insertframetitle{{\trex@frametitleformat{#2}\ifnum% + \beamer@autobreakcount>0\relax{}\space% + \usebeamertemplate*{frametitle continuation}\fi}}% + \gdef\beamer@frametitle{#2}% + \gdef\beamer@shortframetitle{#1}% + }} + {} + {\PackageError{beamerfontthemetrex}{Patching frame title failed}\@ehc} +\trex@font@setdefaults +\ProcessPgfPackageOptions{/trex/font} +\endinput +%% +%% End of file `beamerfontthemetrex.sty'. diff --git a/beamerinnerthemetrex.sty b/beamerinnerthemetrex.sty new file mode 100644 index 0000000..2a01463 --- /dev/null +++ b/beamerinnerthemetrex.sty @@ -0,0 +1,53 @@ +\mode + +\setbeamertemplate{background}{ +\ifnum\thepage>1 +\includegraphics[height=\paperheight]{beamerbackgroundtrex.png} +\else +\includegraphics[height=\paperheight]{beamertitletrex.png} +\fi +} + +% Title page +\defbeamertemplate*{title page}{trex}[1][] +{ + \vskip3cm% + \begin{beamercolorbox}[wd=6.cm,leftskip=-0.5cm,#1]{title page header} + \usebeamerfont{title}\inserttitle\par% + \end{beamercolorbox}% + \vskip0.2cm% + \begin{beamercolorbox}[wd=6.cm,leftskip=-0.5cm,#1]{author} + \usebeamerfont{author}\insertauthor% + \end{beamercolorbox} + \vskip0.3cm% + \begin{beamercolorbox}[wd=6.cm,leftskip=-0.5cm,#1]{date} + \usebeamerfont{author}\insertdate% + \end{beamercolorbox} + \vskip0.3cm% + \begin{beamercolorbox}[wd=7.cm,leftskip=-0.5cm,#1]{institute} + \usebeamerfont{author}{\tiny \insertinstitute}% + \end{beamercolorbox} + \vfill +} + +% Section page +\defbeamertemplate*{section page}{trex}{ + \centering + \begin{minipage}{22em} + \raggedright + \usebeamercolor[fg]{section title} + \usebeamerfont{section title} + \insertsectionhead\\[-1ex] + \par + \ifx\insertsubsectionhead\@empty\else% + \usebeamercolor[fg]{subsection title}% + \usebeamerfont{subsection title}% + \insertsubsectionhead + \fi + \end{minipage} + \par + \vspace{\baselineskip} +} + + +\mode diff --git a/beamerouterthemetrex.log b/beamerouterthemetrex.log new file mode 100644 index 0000000..5f7f15a --- /dev/null +++ b/beamerouterthemetrex.log @@ -0,0 +1,399 @@ +This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/Debian) (preloaded format=pdflatex 2020.4.29) 7 OCT 2020 00:03 +entering extended mode + restricted \write18 enabled. + file:line:error style messages enabled. + %&-line parsing enabled. +**beamerouterthemetrex.sty +(./beamerouterthemetrex.sty +LaTeX2e <2017-04-15> +Babel <3.18> and hyphenation patterns for 7 language(s) loaded. +./beamerouterthemetrex.sty:1: Undefined control sequence. +l.1 \mode + +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + + +./beamerouterthemetrex.sty:1: LaTeX Error: Missing \begin{document}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.1 \mode< + presentation> +You're in trouble here. Try typing to proceed. +If that doesn't work, type X to quit. + +Missing character: There is no < in font nullfont! +Missing character: There is no p in font nullfont! +Missing character: There is no r in font nullfont! +Missing character: There is no e in font nullfont! +Missing character: There is no s in font nullfont! +Missing character: There is no e in font nullfont! +Missing character: There is no n in font nullfont! +Missing character: There is no t in font nullfont! +Missing character: There is no a in font nullfont! +Missing character: There is no t in font nullfont! +Missing character: There is no i in font nullfont! +Missing character: There is no o in font nullfont! +Missing character: There is no n in font nullfont! +Missing character: There is no > in font nullfont! + +Overfull \hbox (20.0pt too wide) in paragraph at lines 1--2 +[] + [] + +./beamerouterthemetrex.sty:4: Undefined control sequence. +l.4 \defbeamertemplate + *{frametitle}{trex}[1][] +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + + +./beamerouterthemetrex.sty:4: LaTeX Error: Missing \begin{document}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.4 \defbeamertemplate* + {frametitle}{trex}[1][] +You're in trouble here. Try typing to proceed. +If that doesn't work, type X to quit. + +Missing character: There is no * in font nullfont! +Missing character: There is no f in font nullfont! +Missing character: There is no r in font nullfont! +Missing character: There is no a in font nullfont! +Missing character: There is no m in font nullfont! +Missing character: There is no e in font nullfont! +Missing character: There is no t in font nullfont! +Missing character: There is no i in font nullfont! +Missing character: There is no t in font nullfont! +Missing character: There is no l in font nullfont! +Missing character: There is no e in font nullfont! +Missing character: There is no t in font nullfont! +Missing character: There is no r in font nullfont! +Missing character: There is no e in font nullfont! +Missing character: There is no x in font nullfont! +Missing character: There is no [ in font nullfont! +Missing character: There is no 1 in font nullfont! +Missing character: There is no ] in font nullfont! +Missing character: There is no [ in font nullfont! +Missing character: There is no ] in font nullfont! + +./beamerouterthemetrex.sty:6: LaTeX Error: Environment beamercolorbox undefined +. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.6 \begin{beamercolorbox} + [wd=\paperwidth,ht=0.95cm]{frametitle} +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +Missing character: There is no [ in font nullfont! +Missing character: There is no w in font nullfont! +Missing character: There is no d in font nullfont! +Missing character: There is no = in font nullfont! +./beamerouterthemetrex.sty:6: Illegal unit of measure (pt inserted). + + h +l.6 \begin{beamercolorbox}[wd=\paperwidth,h + t=0.95cm]{frametitle} +Dimensions can be in units of em, ex, in, pt, pc, +cm, mm, dd, cc, nd, nc, bp, or sp; but yours is a new one! +I'll assume that you meant to say pt, for printer's points. +To recover gracefully from this error, it's best to +delete the erroneous units; e.g., type `2' to delete +two letters. (See Chapter 27 of The TeXbook.) + +Missing character: There is no h in font nullfont! +Missing character: There is no t in font nullfont! +Missing character: There is no = in font nullfont! +Missing character: There is no 0 in font nullfont! +Missing character: There is no . in font nullfont! +Missing character: There is no 9 in font nullfont! +Missing character: There is no 5 in font nullfont! +Missing character: There is no c in font nullfont! +Missing character: There is no m in font nullfont! +Missing character: There is no ] in font nullfont! +Missing character: There is no f in font nullfont! +Missing character: There is no r in font nullfont! +Missing character: There is no a in font nullfont! +Missing character: There is no m in font nullfont! +Missing character: There is no e in font nullfont! +Missing character: There is no t in font nullfont! +Missing character: There is no i in font nullfont! +Missing character: There is no t in font nullfont! +Missing character: There is no l in font nullfont! +Missing character: There is no e in font nullfont! + +./beamerouterthemetrex.sty:7: LaTeX Error: Environment tikzpicture undefined. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.7 \begin{tikzpicture} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +./beamerouterthemetrex.sty:12: Undefined control sequence. +l.12 \useasboundingbox + [](0,0) rectangle(\the\paperwidth,1.); +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +Missing character: There is no [ in font nullfont! +Missing character: There is no ] in font nullfont! +Missing character: There is no ( in font nullfont! +Missing character: There is no 0 in font nullfont! +Missing character: There is no , in font nullfont! +Missing character: There is no 0 in font nullfont! +Missing character: There is no ) in font nullfont! +Missing character: There is no r in font nullfont! +Missing character: There is no e in font nullfont! +Missing character: There is no c in font nullfont! +Missing character: There is no t in font nullfont! +Missing character: There is no a in font nullfont! +Missing character: There is no n in font nullfont! +Missing character: There is no g in font nullfont! +Missing character: There is no l in font nullfont! +Missing character: There is no e in font nullfont! +Missing character: There is no ( in font nullfont! +Missing character: There is no 0 in font nullfont! +Missing character: There is no . in font nullfont! +Missing character: There is no 0 in font nullfont! +Missing character: There is no p in font nullfont! +Missing character: There is no t in font nullfont! +Missing character: There is no , in font nullfont! +Missing character: There is no 1 in font nullfont! +Missing character: There is no . in font nullfont! +Missing character: There is no ) in font nullfont! +Missing character: There is no ; in font nullfont! +./beamerouterthemetrex.sty:16: Undefined control sequence. +l.16 {\node + [anchor= west, white,font=\large] at (6.2,0.61){\insertframe... +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +Missing character: There is no [ in font nullfont! +Missing character: There is no a in font nullfont! +Missing character: There is no n in font nullfont! +Missing character: There is no c in font nullfont! +Missing character: There is no h in font nullfont! +Missing character: There is no o in font nullfont! +Missing character: There is no r in font nullfont! +Missing character: There is no = in font nullfont! +Missing character: There is no w in font nullfont! +Missing character: There is no e in font nullfont! +Missing character: There is no s in font nullfont! +Missing character: There is no t in font nullfont! +Missing character: There is no , in font nullfont! +Missing character: There is no w in font nullfont! +Missing character: There is no h in font nullfont! +Missing character: There is no i in font nullfont! +Missing character: There is no t in font nullfont! +Missing character: There is no e in font nullfont! +Missing character: There is no , in font nullfont! +Missing character: There is no f in font nullfont! +Missing character: There is no o in font nullfont! +Missing character: There is no n in font nullfont! +Missing character: There is no t in font nullfont! +Missing character: There is no = in font nullfont! +./beamerouterthemetrex.sty:16: Undefined control sequence. +l.16 {\node[anchor= west, white,font=\large + ] at (6.2,0.61){\insertframe... +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +Missing character: There is no ] in font nullfont! +Missing character: There is no a in font nullfont! +Missing character: There is no t in font nullfont! +Missing character: There is no ( in font nullfont! +Missing character: There is no 6 in font nullfont! +Missing character: There is no . in font nullfont! +Missing character: There is no 2 in font nullfont! +Missing character: There is no , in font nullfont! +Missing character: There is no 0 in font nullfont! +Missing character: There is no . in font nullfont! +Missing character: There is no 6 in font nullfont! +Missing character: There is no 1 in font nullfont! +Missing character: There is no ) in font nullfont! +./beamerouterthemetrex.sty:16: Undefined control sequence. +l.16 ...nt=\large] at (6.2,0.61){\insertframetitle + };% +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +Missing character: There is no ; in font nullfont! +./beamerouterthemetrex.sty:17: Undefined control sequence. +l.17 \node + [anchor= west, white,font=\small] at (6.2,0.11){\insertframe... +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +Missing character: There is no [ in font nullfont! +Missing character: There is no a in font nullfont! +Missing character: There is no n in font nullfont! +Missing character: There is no c in font nullfont! +Missing character: There is no h in font nullfont! +Missing character: There is no o in font nullfont! +Missing character: There is no r in font nullfont! +Missing character: There is no = in font nullfont! +Missing character: There is no w in font nullfont! +Missing character: There is no e in font nullfont! +Missing character: There is no s in font nullfont! +Missing character: There is no t in font nullfont! +Missing character: There is no , in font nullfont! +Missing character: There is no w in font nullfont! +Missing character: There is no h in font nullfont! +Missing character: There is no i in font nullfont! +Missing character: There is no t in font nullfont! +Missing character: There is no e in font nullfont! +Missing character: There is no , in font nullfont! +Missing character: There is no f in font nullfont! +Missing character: There is no o in font nullfont! +Missing character: There is no n in font nullfont! +Missing character: There is no t in font nullfont! +Missing character: There is no = in font nullfont! +./beamerouterthemetrex.sty:17: Undefined control sequence. +l.17 \node[anchor= west, white,font=\small + ] at (6.2,0.11){\insertframe... +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +Missing character: There is no ] in font nullfont! +Missing character: There is no a in font nullfont! +Missing character: There is no t in font nullfont! +Missing character: There is no ( in font nullfont! +Missing character: There is no 6 in font nullfont! +Missing character: There is no . in font nullfont! +Missing character: There is no 2 in font nullfont! +Missing character: There is no , in font nullfont! +Missing character: There is no 0 in font nullfont! +Missing character: There is no . in font nullfont! +Missing character: There is no 1 in font nullfont! +Missing character: There is no 1 in font nullfont! +Missing character: There is no ) in font nullfont! +./beamerouterthemetrex.sty:17: Undefined control sequence. +l.17 ...\small] at (6.2,0.11){\insertframesubtitle + };}% +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +Missing character: There is no ; in font nullfont! + +./beamerouterthemetrex.sty:19: LaTeX Error: \begin{document} ended by \end{tikz +picture}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.19 \end{tikzpicture} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + + +./beamerouterthemetrex.sty:20: LaTeX Error: \begin{document} ended by \end{beam +ercolorbox}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.20 \end{beamercolorbox} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + + +Overfull \hbox (20.0pt too wide) in paragraph at lines 4--22 +[] + [] + +./beamerouterthemetrex.sty:23: Undefined control sequence. +l.23 \mode + +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + + +./beamerouterthemetrex.sty:23: LaTeX Error: Missing \begin{document}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.23 \mode< + all> +You're in trouble here. Try typing to proceed. +If that doesn't work, type X to quit. + +Missing character: There is no < in font nullfont! +Missing character: There is no a in font nullfont! +Missing character: There is no l in font nullfont! +Missing character: There is no l in font nullfont! +Missing character: There is no > in font nullfont! + +Overfull \hbox (20.0pt too wide) in paragraph at lines 23--24 +[] + [] + +) +! Emergency stop. +<*> beamerouterthemetrex.sty + +*** (job aborted, no legal \end found) + + +Here is how much of TeX's memory you used: + 10 strings out of 494847 + 246 string characters out of 6179080 + 46295 words of memory out of 5000000 + 3434 multiletter control sequences out of 15000+600000 + 3640 words of font info for 14 fonts, out of 8000000 for 9000 + 59 hyphenation exceptions out of 8191 + 6i,0n,6p,110b,29s stack positions out of 5000i,500n,10000p,200000b,80000s +! ==> Fatal error occurred, no output PDF file produced! diff --git a/beamerouterthemetrex.sty b/beamerouterthemetrex.sty new file mode 100644 index 0000000..61e868b --- /dev/null +++ b/beamerouterthemetrex.sty @@ -0,0 +1,20 @@ +\mode + +% Frame title +\defbeamertemplate*{frametitle}{trex}[1][] +{ + \begin{beamercolorbox}[wd=\paperwidth,ht=0.95cm]{frametitle} + \begin{tikzpicture} +% \useasboundingbox[fill=white](0,0) rectangle(\the\paperwidth,1.); +%\fill[red!80!black] (0,0) rectangle(2.95,1.); +%\fill[blue!50!cyan!80!black] (3.05,0) rectangle(\the\paperwidth,1.); +%\fill[white!50] (3.05,0) rectangle(\the\paperwidth,1.); + \useasboundingbox[](0,0) rectangle(\the\paperwidth,1.); + \node[anchor=east, white,font=\large] at + (\paperwidth,0.25){\insertframetitle \phantom{m}}; + \end{tikzpicture} + \end{beamercolorbox} +} + +\mode + diff --git a/beamerthemetrex.sty b/beamerthemetrex.sty new file mode 100644 index 0000000..ec056ec --- /dev/null +++ b/beamerthemetrex.sty @@ -0,0 +1,29 @@ +\mode + + +% Requirement +\RequirePackage{tikz} + +% Settings +\useinnertheme{trex} +\useoutertheme{trex} +\usecolortheme{trex} +\usefonttheme{trex} + + +% we remove the navigation symbols and define blocks aspect. +\setbeamertemplate{navigation symbols}{} +\setbeamertemplate{blocks}[rounded][shadow=true] + +\AtBeginSection[]{% + \begin{frame}[plain] + \usebeamertemplate{section page} + \end{frame} +} + +\setbeamertemplate{footline}{ + \vspace{0.6cm} +} + + +\mode diff --git a/beamertitletrex.png b/beamertitletrex.png new file mode 100644 index 0000000..36fc02c Binary files /dev/null and b/beamertitletrex.png differ diff --git a/scemama.org b/scemama.org new file mode 100644 index 0000000..db042c5 --- /dev/null +++ b/scemama.org @@ -0,0 +1,260 @@ +#+TITLE: Library development within TREX +#+DATE: 12/03/2021 +#+AUTHOR: Anthony Scemama + +#+LaTeX_HEADER: \institute{Lab. Chimie et Physique Quantiques, IRSAMC, UPS/CNRS, Toulouse (France)} +#+LATEX_CLASS: beamer +#+LaTeX_CLASS_OPTIONS:[aspectratio=169] +#+BEAMER_THEME: trex +#+LaTeX_HEADER: \usepackage{minted} +#+LaTeX_HEADER: \usemintedstyle{emacs} +#+LaTeX_HEADER: \newminted{f90}{fontsize=\footnotesize} +#+LaTeX_HEADER: \usepackage[utf8]{inputenc} +#+LaTeX_HEADER: \usepackage[T1]{fontenc} +#+LaTeX_HEADER: \usepackage{hyperref} +#+LaTeX_HEADER: \usepackage{mathtools} +#+LaTeX_HEADER: \usepackage{physics} +#+LaTeX_HEADER: \definecolor{darkgreen}{rgb}{0.,0.6,0.} +#+LaTeX_HEADER: \definecolor{darkblue}{rgb}{0.,0.2,0.7} +#+LaTeX_HEADER: \definecolor{darkred}{rgb}{0.6,0.1,0.1} +#+LaTeX_HEADER: \definecolor{darkpink}{rgb}{0.7,0.0,0.7} +#+LaTeX_HEADER: \newcommand{\coord }{{\bf r}_1, \dots, {\bf r}_N } +#+LaTeX_HEADER: \newcommand{\dcoord }{\dd {\bf r}_1 \dots \dd{\bf r}_N } +#+EXPORT_EXCLUDE_TAGS: noexport + +#+startup: beamer +#+options: H:1 toc:nil + +* Quantum chemistry + + #+LATEX: \begin{columns} + #+LATEX: \begin{column}{0.25\textwidth} + #+ATTR_LATEX: :width \textwidth + [[./dirac_4.jpg]] + #+LATEX: \end{column} + #+LATEX: \begin{column}{0.75\textwidth} + #+ATTR_LATEX: :width \textwidth + [[./dirac2.png]] + #+LATEX: \end{column} + #+LATEX: \end{columns} + +* Quantum chemistry + + #+LATEX: \begin{columns} + #+LATEX: \begin{column}{0.6\textwidth} + #+LATEX: \begin{exampleblock}{} + - Describing matter with quantum mechanics (Schrödinger's equation) + - Users: theoretical chemists and physicists + #+LATEX: \end{exampleblock} + #+LATEX: \end{column} + #+LATEX: \begin{column}{0.4\textwidth} + #+ATTR_LATEX: :width \textwidth + [[./Water.png]] + #+LATEX: \end{column} + #+LATEX: \end{columns} + + #+LATEX: \begin{columns} + #+LATEX: \begin{column}{0.4\textwidth} + #+ATTR_LATEX: :width \textwidth + [[./casula.png]] + #+LATEX: \end{column} + #+LATEX: \begin{column}{0.6\textwidth} + #+LATEX: \begin{exampleblock}{Implications for society} + | - Health | Drug design | + | - Electronics | Nano- and micro-electronics | + | - Materials | Carbon nanotubes, graphene, \dots | + | - Catalysis | Enzymatic reactions, petroleum | + #+LATEX: \end{exampleblock} + #+LATEX: \end{column} + #+LATEX: \end{columns} + +* TREX: Targeting REal chemical accuracy at the EXascale + + #+LATEX: \begin{columns} + #+LATEX: \begin{column}{0.4\textwidth} + #+ATTR_LATEX: :width \textwidth + [[./Curve.png]] + + #+LATEX: \end{column} + #+LATEX: \begin{column}{0.6\textwidth} + #+LATEX: \begin{exampleblock}{Objective: Make codes ready for exascale} + How: Instead of re-writing codes, provide libraries + - One library for exchanging information between codes (*TREXIO*) + - One library for high-performance (*QMCkl*) + #+LATEX: \end{exampleblock} + #+LATEX: \begin{exampleblock}{QMC: Quantum Monte Carlo methods} + - Highly accurate + - Massively parallelisable (multiple QMC trajectories) + - CPU intensive + #+LATEX: \end{exampleblock} + #+LATEX: \end{column} + #+LATEX: \end{columns} + +* Quantum Monte Carlo (QMC) + +#+BEGIN_SRC latex +\alert{Problem}: Stochastic resolution of the Schr\"odinger equation for $N$ electrons +\begin{eqnarray} +E &= &\frac{\int \dcoord \Phi(\coord) {\cal H} \Phi(\coord)} + {\int \dcoord \Phi(\coord) \Phi(\coord)} \nonumber \\ + &\sim & \sum \frac{ {\cal H}\Psi(\coord )}{\Psi(\coord )} + \text{, sampled with } (\Psi \times \Phi) +\nonumber +\end{eqnarray} +\begin{columns} +\begin{column}{.5\textwidth} +\begin{itemize} +\item[$\cal H $: ] Hamiltonian operator +\item[$E$: ] Energy +\end{itemize} +\end{column} +\begin{column}{.4\textwidth} +\begin{itemize} +\item[$\coord $: ] Electron coordinates +\item[$\Phi $: ] Almost exact wave function +\item[$\Psi $: ] Trial wave function +\end{itemize} +\end{column} +\end{columns} +#+END_SRC + +* Quantum Monte Carlo (QMC) + + #+LATEX: \begin{columns} + #+LATEX: \begin{column}{0.4\textwidth} + - Very low memory requirements (no integrals) + - Distribute walkers on different cores or compute nodes + - No blocking communication: near-ideal scaling + - Difficulty: parallelize within a QMC trajectory + #+LATEX: \end{column} + #+LATEX: \begin{column}{0.6\textwidth} + #+ATTR_LATEX: :width \textwidth + [[./Qmc.png]] + #+LATEX: \end{column} + #+LATEX: \end{columns} + + + + +* QMC kernel library (QMCkl) + +** Computational kernels + - QMCkl will contain the main kernels of QMC methods + - Written together by QMC experts and HPC experts + - Multiple high performance implementations of the kernels, tuned + for different + - architectures + - problem sizes + - requested accuracy (reduced precision) + - The sequence of kernels will be scheduled with the StarPU runtime + + +* QMC kernel library (QMCkl) + +** Two implementations + - /Documentation/ : easy to read and understand, not necessarily efficient + - /High performance/ : efficient, but not necessarily readable by physicists/chemists + - Both /Documentation/ and /High performance/ have the same API. + +** Advantages + - The code can stay easy to understand by the physicists/chemists + Performance-related aspects are delegated to the library + - Changing architecture requires only linking with another + version of the library + - Scientific code development does not break the performance + - Better re-use of the optimization effort among the community + +* Literate programming :noexport: + + #+BEGIN_quote + Literate programming is a programming paradigm introduced by Donald + Knuth in which a computer program is given an explanation of its + logic in a natural language, such as English, interspersed with + snippets of macros and traditional source code, from which + compilable source code can be generated. (Wikipedia) + #+END_quote + +* Documentation library :noexport: + Literate programming with org-mode: + - Here, comments are more important than code + - Can add graphics, \LaTeX formulas, tables, etc + - Documentation always synchronized with the code + - Some routines can be generated by embedded scripts + - Most of the the first report was generated from the documentation + - Kernels are implemented in Fortran for readability + - The API is C-compatible: QMCkl appears like a C library + $\Longrightarrow$ can be used in all other languages + +* Design strategy + + 1. Kernel extraction: QMC specialists agree on the + mathematical expression of the problem + 2. A mini-application is written to find the optimal data layout + with HPC experts from real-size examples + 3. The kernel is written in the documentation library + 4. The documentation library is linked in a QMC code to check correctness + 5. HPC experts provide an HPC version of the kernel + 6. The HPC library is linked in the QMC codes of the CoE + +* Our first application : 3-body Jastrow factor + +#+LATEX: \newcommand{\Jeen}{J_{\text{een}}} +#+LATEX: \newcommand{\Nel}{N_{\text{elec}}} +#+LATEX: \newcommand{\Nat}{N_{\text{nucl}}} +#+LATEX: \newcommand{\Nord}{N_{\text{nord}}} +#+LATEX: \newcommand{\lmax}{p-k-2\delta_{k,0}} +#+LATEX: \newcommand{\br}{\mathbf{r}} +#+LATEX: \newcommand{\bR}{\mathbf{R}} +#+LATEX: \newcommand{\ttr}{\, \bar{\mathtt{r}}} +#+LATEX: \newcommand{\tR}{\, \bar{\mathtt{R}}} +#+LATEX: \newcommand{\tP}{\, \bar{\mathtt{P}}} + +\[ + \Jeen (\br,\bR) = \sum_{\alpha=1}^{\Nat} \sum_{i=1}^{\Nel} \sum_{j=1}^{i-1} +\sum_{p=2}^{\Nord} \sum_{k=0}^{p-1} +\sum_{l=0}^{\lmax} c_{lkp\alpha} +\left( {r}_{ij} \right)^k +\left[ \left( {R}_{i\alpha} \right)^l + \left( {R}_{j\alpha} \right)^l \right] +\left( {R}_{i\,\alpha} \, {R}_{j\alpha} \right)^{(p-k-l)/2} +\] + + #+LATEX: \begin{columns} + #+LATEX: \begin{column}{0.5\textwidth} + #+ATTR_LATEX: :width \textwidth + [[./speedup.pdf]] + #+LATEX: \end{column} + #+LATEX: \begin{column}{0.5\textwidth} + - Gradient and Laplacian are also required + - Up to $20\times$ faster than in the original code + - $\sim 80\%$ of the AVX-512 peak is reached + - Expressed with a DGEMM kernel $\Longrightarrow$ also efficient on GPU + #+LATEX: \end{column} + #+LATEX: \end{columns} + + +* Links + + - TREX web site : https://trex-coe.eu + - QMCkl documentation : https://trex-coe.github.io/qmckl + - QMCkl repository : https://github.com/trex-coe/qmckl + +* Export :noexport: + #+BEGIN_SRC elisp :output none +(setq org-latex-listings 'minted) +(setq org-latex-custom-lang-environments + '( + (f90 "fortran") + )) +(setq org-latex-minted-options + '(("frame" "lines") + ("fontsize" "\\scriptsize") + ("linenos" ""))) +(setq org-latex-to-pdf-process + '("pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f" + "pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f" + "pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f")) +(org-beamer-export-to-pdf) + #+END_SRC + + #+RESULTS: + : /home/scemama/TEX/ISC2021/scemama.pdf diff --git a/scemama.tex b/scemama.tex index 45cd7d9..6366e7b 100644 --- a/scemama.tex +++ b/scemama.tex @@ -1,4 +1,4 @@ -% Created 2021-06-28 Mon 14:25 +% Created 2021-06-30 Wed 12:12 % Intended LaTeX compiler: pdflatex \documentclass[aspectratio=169]{beamer} \usepackage[utf8]{inputenc} @@ -27,6 +27,8 @@ \definecolor{darkblue}{rgb}{0.,0.2,0.7} \definecolor{darkred}{rgb}{0.6,0.1,0.1} \definecolor{darkpink}{rgb}{0.7,0.0,0.7} +\newcommand{\coord }{{\bf r}_1, \dots, {\bf r}_N } +\newcommand{\dcoord }{\dd {\bf r}_1 \dots \dd{\bf r}_N } \usetheme{trex} \author{Anthony Scemama} \date{12/03/2021} @@ -42,7 +44,7 @@ \maketitle -\begin{frame}[label={sec:org58acecb}]{Quantum chemistry} +\begin{frame}[label={sec:org52bec56}]{Quantum chemistry} \begin{columns} \begin{column}{0.25\textwidth} \begin{center} @@ -57,7 +59,7 @@ \end{columns} \end{frame} -\begin{frame}[label={sec:org07dc1a1}]{Quantum chemistry} +\begin{frame}[label={sec:org2a0da55}]{Quantum chemistry} \begin{columns} \begin{column}{0.6\textwidth} \begin{exampleblock}{} @@ -87,7 +89,7 @@ - Health & Drug design\\ - Electronics & Nano- and micro-electronics\\ - Materials & Carbon nanotubes, graphene, \dots{}\\ -- Catalysis & Enzymatic reactions, petrol\\ +- Catalysis & Enzymatic reactions, petroleum\\ \end{tabular} \end{center} \end{exampleblock} @@ -95,7 +97,7 @@ \end{columns} \end{frame} -\begin{frame}[label={sec:orgf844e6b}]{TREX: Targeting REal chemical accuracy at the EXascale} +\begin{frame}[label={sec:org7ad98d0}]{TREX: Targeting REal chemical accuracy at the EXascale} \begin{columns} \begin{column}{0.4\textwidth} \begin{center} @@ -104,12 +106,6 @@ \end{column} \begin{column}{0.6\textwidth} -\begin{exampleblock}{QMC: Quantum Monte Carlo methods} -\begin{itemize} -\item Massively parallelisable (multiple QMC trajectories) -\item Difficulty: take advantage of parallelism within a trajectory -\end{itemize} -\end{exampleblock} \begin{exampleblock}{Objective: Make codes ready for exascale} How: Instead of re-writing codes, provide libraries \begin{itemize} @@ -117,21 +113,69 @@ How: Instead of re-writing codes, provide libraries \item One library for high-performance (\alert{QMCkl}) \end{itemize} \end{exampleblock} +\begin{exampleblock}{QMC: Quantum Monte Carlo methods} +\begin{itemize} +\item Highly accurate +\item Massively parallelisable (multiple QMC trajectories) +\item CPU intensive +\end{itemize} +\end{exampleblock} \end{column} \end{columns} \end{frame} -\begin{frame}[label={sec:org9bd59c0}]{Presentation of TREX} +\begin{frame}[label={sec:orgd075e20}]{Quantum Monte Carlo (QMC)} +\alert{Problem}: Stochastic resolution of the Schr\"odinger equation for $N$ electrons +\begin{eqnarray} +E &= &\frac{\int \dcoord \Phi(\coord) {\cal H} \Phi(\coord)} + {\int \dcoord \Phi(\coord) \Phi(\coord)} \nonumber \\ + &\sim & \sum \frac{ {\cal H}\Psi(\coord )}{\Psi(\coord )} + \text{, sampled with } (\Psi \times \Phi) +\nonumber +\end{eqnarray} +\begin{columns} +\begin{column}{.5\textwidth} \begin{itemize} -\item TREX CoE: Targeting REal chemical accuracy at the eXascale -\item Started in Oct. 2020 +\item[$\cal H $: ] Hamiltonian operator +\item[$E$: ] Energy \end{itemize} +\end{column} +\begin{column}{.4\textwidth} +\begin{itemize} +\item[$\coord $: ] Electron coordinates +\item[$\Phi $: ] Almost exact wave function +\item[$\Psi $: ] Trial wave function +\end{itemize} +\end{column} +\end{columns} \end{frame} -\begin{frame}[label={sec:orgfb14f88}]{QMC kernel library (QMCkl)} +\begin{frame}[label={sec:org933f7ec}]{Quantum Monte Carlo (QMC)} +\begin{columns} +\begin{column}{0.4\textwidth} \begin{itemize} -\item Codesign: Written together by QMC experts and HPC experts -\item Contains all major kernels of QMC methods +\item Very low memory requirements (no integrals) +\item Distribute walkers on different cores or compute nodes +\item No blocking communication: near-ideal scaling +\item Difficulty: parallelize within a QMC trajectory +\end{itemize} +\end{column} +\begin{column}{0.6\textwidth} +\begin{center} +\includegraphics[width=\textwidth]{./Qmc.png} +\end{center} +\end{column} +\end{columns} +\end{frame} + + + + +\begin{frame}[label={sec:org8b6768c}]{QMC kernel library (QMCkl)} +\begin{block}{Computational kernels} +\begin{itemize} +\item QMCkl will contain the main kernels of QMC methods +\item Written together by QMC experts and HPC experts \item Multiple high performance implementations of the kernels, tuned for different \begin{itemize} @@ -139,14 +183,22 @@ for different \item problem sizes \item requested accuracy (reduced precision) \end{itemize} -\item Reference implementation : \emph{Documentation} : easy to read and -understand, not necessarily efficient -\item Final implementations : \emph{High performance} : efficient, but not -necessarily readable by physicists/chemists +\item Kernels will be scheduled with the StarPU runtime \end{itemize} +\end{block} \end{frame} -\begin{frame}[label={sec:org929f042}]{Advantages} + +\begin{frame}[label={sec:org24ef7da}]{QMC kernel library (QMCkl)} +\begin{block}{Two implementations} +\begin{itemize} +\item \emph{Documentation} : easy to read and understand, not necessarily efficient +\item \emph{High performance} : efficient, but not necessarily readable by physicists/chemists +\item Both \emph{Documentation} and \emph{High performance} have the same API. +\end{itemize} +\end{block} + +\begin{block}{Advantages} \begin{itemize} \item The code can stay easy to understand by the physicists/chemists Performance-related aspects are delegated to the library @@ -155,46 +207,23 @@ version of the library \item Scientific code development does not break the performance \item Better re-use of the optimization effort among the community \end{itemize} +\end{block} \end{frame} -\begin{frame}[label={sec:org8ded82f}]{Literate programming} -\begin{quote} -Literate programming is a programming paradigm introduced by Donald -Knuth in which a computer program is given an explanation of its -logic in a natural language, such as English, interspersed with -snippets of macros and traditional source code, from which -compilable source code can be generated. (Wikipedia) -\end{quote} -\end{frame} - - -\begin{frame}[label={sec:org01ef9da}]{Documentation library} -Literate programming with org-mode: -\begin{itemize} -\item Here, comments are more important than code -\item Can add graphics, \LaTeX formulas, tables, etc -\item Documentation always synchronized with the code -\item Some routines can be generated by embedded scripts -\item Most of the the first report was generated from the documentation -\item Kernels are implemented in Fortran for readability -\item The API is C-compatible: QMCkl appears like a C library -\(\Longrightarrow\) can be used in all other languages -\end{itemize} -\end{frame} - -\begin{frame}[label={sec:orge55dfb7}]{Codesign strategy} +\begin{frame}[label={sec:org8e1f375}]{Design strategy} \begin{enumerate} \item Kernel extraction: QMC specialists agree on the mathematical expression of the problem -\item A mini-application is written to find the best data layout +\item A mini-application is written to find the optimal data layout with HPC experts from real-size examples \item The kernel is written in the documentation library +\item The documentation library is linked in a QMC code to check correctness \item HPC experts provide an HPC version of the kernel -\item The library is linked in the QMC codes of the CoE +\item The HPC library is linked in the QMC codes of the CoE \end{enumerate} \end{frame} -\begin{frame}[label={sec:orgfdcab81}]{Our first application : 3-body Jastrow factor} +\begin{frame}[label={sec:orge2ab500}]{Our first application : 3-body Jastrow factor} \newcommand{\Jeen}{J_{\text{een}}} \newcommand{\Nel}{N_{\text{elec}}} \newcommand{\Nat}{N_{\text{nucl}}} @@ -215,315 +244,29 @@ with HPC experts from real-size examples \left( {R}_{i\,\alpha} \, {R}_{j\alpha} \right)^{(p-k-l)/2} \] -can be rewritten as - -\[ - \Jeen(\br,\bR) = - \sum_{p=2}^{\Nord}\sum_{k=0}^{p-1} - \sum_{l=0}^{\lmax} - \sum_{\alpha=1}^{\Nat} - c_{lkp\alpha} - \sum_{i=1}^{\Nel} - {\tR}_{i,\alpha,(p-k-l)/2}\, - {\tP}_{i,\alpha,k,(p-k+l)/2} \; \text{\scriptsize \alert{($\downarrow$ complexity)}} - \] -with - \[ - {\tP}_{i, \alpha, k, l} = \sum_{j=1}^{\Nel} - {\ttr}_{i,j,k}\,{\tR}_{j,\alpha,l}. \; \text{\alert{\scriptsize (GEMM)}} - \] -\end{frame} - -\begin{frame}[label={sec:org3e25bfe}]{Our first application : Gradient and Laplacian} -\newcommand{\Jeen}{J_{\text{een}}} -\newcommand{\Nel}{N_{\text{elec}}} -\newcommand{\Nat}{N_{\text{nucl}}} -\newcommand{\Nord}{N_{\text{nord}}} -\newcommand{\lmax}{p-k-2\delta_{k,0}} -\newcommand{\br}{\mathbf{r}} -\newcommand{\bR}{\mathbf{R}} -\newcommand{\ttr}{\, \bar{\mathtt{r}}} -\newcommand{\tR}{\, \bar{\mathtt{R}}} -\newcommand{\tP}{\, \bar{\mathtt{P}}} -\newcommand{\tg}{\, \bar{\mathtt{g}}} -\newcommand{\tG}{\, \bar{\mathtt{G}}} -\newcommand{\tQ}{\, \bar{\mathtt{Q}}} - -\begin{eqnarray*} - \nabla_{im} \Jeen(\br,\bR) & = & - \sum_{p=2}^{\Nord}\sum_{k=0}^{p-1} - \sum_{l=0}^{\lmax} - \sum_{\alpha=1}^{\Nat} - c_{lkp\alpha} - \sum_{i=1}^{\Nel} - {\tG}_{i,m,\alpha,(p-k-l)/2} {\tP}_{i,\alpha,k,(p-k+l)/2} + \\ -&& {\tG}_{i,m,\alpha,(p-k+l)/2} {\tP}_{i,\alpha,k,(p-k-l)/2} + - {\tR}_{i,\alpha,(p-k-l)/2} {\tQ}_{i,m,\alpha,k,(p-k+l)/2} + \\ -&& {\tR}_{i,\alpha,(p-k+l)/2} {\tQ}_{i,m,\alpha,k,(p-k-l)/2} + - \delta_{m,4} \big( \\ -&& {\tG}_{i,1,\alpha,(p-k+l)/2} {\tQ}_{i,1,\alpha,k,(p-k-l)/2} + - {\tG}_{i,2,\alpha,(p-k+l)/2} {\tQ}_{i,2,\alpha,k,(p-k-l)/2} + \\ -&& {\tG}_{i,3,\alpha,(p-k+l)/2} {\tQ}_{i,3,\alpha,k,(p-k-l)/2} + - {\tG}_{i,1,\alpha,(p-k-l)/2} {\tQ}_{i,1,\alpha,k,(p-k+l)/2} + \\ -&& {\tG}_{i,2,\alpha,(p-k-l)/2} {\tQ}_{i,2,\alpha,k,(p-k+l)/2} + - {\tG}_{i,3,\alpha,(p-k-l)/2} {\tQ}_{i,3,\alpha,k,(p-k+l)/2} \big) -\end{eqnarray*} - -with - -\[ - {\tG}_{i, m, \alpha, l} = \frac{\partial \left( {R}_{i\alpha} \right)^l} - {\partial r_i}, \phantom{ space } - {\tg}_{i, m, j, k} = \frac{\partial \left( {r}_{ij} \right)^k} - {\partial r_i}, \phantom{ space } - \text{ and } - {\tQ}_{i, m, \alpha, k, l} = \sum_{j=1}^{\Nel} - {\tg}_{i,m,j,k}\,{\tR}_{j,\alpha,l} -\] -\end{frame} - -\begin{frame}[label={sec:org0200bcf}]{Speed up} +\begin{columns} +\begin{column}{0.5\textwidth} \begin{center} -\includegraphics[height=0.8\textheight]{./speedup.pdf} +\includegraphics[width=\textwidth]{./speedup.pdf} \end{center} - -\(\sim 80\%\) of the AVX-512 peak is reached on a Skylake CPU. +\end{column} +\begin{column}{0.5\textwidth} +\begin{itemize} +\item Gradient and Laplacian are also required +\item Up to \(20\times\) faster than in the original code +\item \(\sim 80\%\) of the AVX-512 peak is reached +\item Using a DGEMM kernel \(\Longrightarrow\) also efficient on GPU +\end{itemize} +\end{column} +\end{columns} \end{frame} - -\begin{frame}[label={sec:org4f9d92a}]{Links} +\begin{frame}[label={sec:org5b9dcc8}]{Links} \begin{itemize} \item TREX web site : \url{https://trex-coe.eu} \item QMCkl documentation : \url{https://trex-coe.github.io/qmckl} \item QMCkl repository : \url{https://github.com/trex-coe/qmckl} \end{itemize} \end{frame} - -\begin{frame}[label={sec:orgd018cbe},fragile]{CoEs Co-Design Workshop} - March 12 – 9:00-12:00 and 14:00-17:00 - -The goal of this workshop is to first get an overview of what CoEs think of co-design and what they do in that context and then to build a shared and common view on this important issue. -The workshop consists of two round tables where each panellist will make a short presentation that will be followed by a discussion among the panellists and with all participants. The workshop is open to all CoE members, so please disseminate largely. - -\begin{block}{Session 1 - 9:00 – 12:00} -Different levels of co-design, where do CoEs come in ? - -Panelists: Fabio Affinito, Guillaume Houzeaux, Jesus Labarta, Soline -Laforet, Antony Scemama, - -Supercomputer are rather complex systems build using innovative technologies, both on the hardware and software sides. Therefore, co-design can be applied at different levels : chip, network, low-level software, programming models and environment, libraries or applications…. -In its design, a computer can also be more general purpose or tuned for a specific class of application. -This round table will discuss all these issues and how CoEs can best contribute. - -Zoom link : -\url{https://zoom.us/j/96850634356?pwd=Q0ViUlVYL0tSWXlEeGVVTTJYcWpBdz09} - -\begin{enumerate} -\item Short presentation of yourself and of your background. -\begin{itemize} -\item Guillaume Houzeaux: BSC. Sticks : Comp. mechanics -\item Jesus Labarta: BSC -\item Soline Laforet: Atos, Earth Science -\item Fabio Affinito: CINECA, Coordinator of support team -\end{itemize} -\end{enumerate} - - -\begin{enumerate} -\item Questions : -\end{enumerate} -• How would you define co-design ? (Introduction) - Each of you can make a short speech to present your global view on co-design. - -\begin{itemize} -\item JS -\begin{itemize} -\item Codesign implies design. We design applications -\item Codimensioning is not codesign -\item Holistic: every layer in the architecture take design -decisions on the same project -\end{itemize} -\item SL: -\begin{itemize} -\item HPC is not the main field of activity of hardware providers -\item Software environment is important -\end{itemize} -\item FA: \ldots{} -\item GH: Application developer rely on the lower level -\end{itemize} - -\begin{verbatim} - Multiple people of different communities work on the same project, each - bringing its domain-specific expertise. Better than the sum of its parts. -\end{verbatim} - -• What are the new challenges for co-design related to the future exascale system? - -\begin{verbatim} - The software stack is becoming inceasingly complex. In HPC, we - need to use programming languages close to the hardware, with lots - of dangerous constructs. Writing correct software in these - languages becomes increasingly difficult. - - Scientists can't understand their codes any more. -\end{verbatim} - -\begin{itemize} -\item JL: -\begin{itemize} -\item Applications are more important than "shining" showing Flops/s -\item People program to their own mental model of the machine -\item General purpose vs specific : specific is suicide -\end{itemize} -\end{itemize} - -• How does your CoE address the co-design activity? (SL) - -\begin{verbatim} - - Move the critical performance outside of the codes in libraries - - QMCkl - - Design an API : collaboration between quantum chemists and computational - scientists. Documentation library were computational kernels are understandable - by HPC experts. The library is re-implemented by HPC experts for targeted - architectures. - - Kernel extraction: we go back to latex formulas, and write a mini-application. - Figure out the data structures for the kernel with HPC experts, and tune the - mini-application. Then, re-implement the kernel in the library. -\end{verbatim} - -• What are the co-desing activities operated in you CoE and to - what extent do you think that these activities will actually - influence the HPC hardware design? - -\begin{verbatim} - - Move the critical performance outside of the codes in libraries - - QMCkl - - Design an API : collaboration between quantum chemists and computational - scientists. Documentation library were computational kernels are understandable - by HPC experts. The library is re-implemented by HPC experts for targeted - architectures. - - Kernel extraction: we go back to latex formulas, and write a mini-application. - Figure out the data structures for the kernel with HPC experts, and tune the - mini-application. Then, re-implement the kernel in the library. -\end{verbatim} - -• how general purpose/special purpose should designs be?  - -\begin{verbatim} - Don't re-invent the wheel. But to get the wheel, you often - need to buy the bus and take away the wheel. - Lots of systems preventing you to extract the wheel - because the bus should be used without the wheel. -\end{verbatim} - -• Which levels of co-design are relevant? - -• What are the differences between developing a library and a program? - -\begin{verbatim} - - In a code, you can trust that the parameters are valid. - Many checks before a the routine can do its job. - - Error handling: the library should not decide to crash the program - but return the error and its description to the calling code. -\end{verbatim} - -• How holistic is holistic?  -• Can we measure the speed/rate/success of co-design?  - -\begin{verbatim} - - In the 1st 6 months, we have reritten a kernel in co-design. - It give the same result as the naive formulation, but with a 20x speedup, - reaching 80% of the peak of a CPU. -\end{verbatim} - -• what is the importance of the role of CoEs in helping scientific - communities to follow the evolution of the next HPC architectures? - -\begin{verbatim} - - Isolated users are afraid of architecture changes. A CoE builds a community, - and it is a riving force that helps the users to change, and adapt their codes. -\end{verbatim} - -• separation of concerns: how much this concept is working when - co-designing applications? - -\begin{verbatim} - - Our libraries are good examples. -\end{verbatim} -\end{block} - -\begin{block}{Questions / comments} -\begin{itemize} -\item JSC: We need different supercomputing centers specialized -for different application profiles. -\item Miguel Vasquez: Compromises. Need workload managers -\item Gavin Pringle (Excellerat): No CoE will even convince a hardware vendor. -Access to hardware prototypes. -\item Mariano Vazquez (CompBioMed): Centralize Codesign and -dissemination plan -\item Pasqua d'ambra CNR: appreciates vision of library design -\item Jesus Labrata: EPI -\begin{itemize} -\item ARM-based, SVE cores. -\item RISCV core -\item High bandwidth per code -\item Large vector operations -\item Emulator is available -\item How to handle locality -\item Sparse matrix vector is a kernel to optimize -\item \url{https://ssh.hca.bsc.es/epi/ftp/} -\url{https://ssh.hca.bsc.es/epi/ftp/doc/} -\item Pasqua d'Ambra (CNR), EoCoE : BLAS is a succes of codesign strategy -Same for Graph operations -\end{itemize} -\end{itemize} - -Pasqua d'Ambra: sparse linear algebra kernels -Jesus Labarta: EPI -Karim H: MdlS -Miguel Vasquez: containers are not a solution -Peter V Coveney: Exascale Linpack is nonsense -\end{block} - - -\begin{block}{Session 2 – 14:00-17:00} - \url{https://zoom.us/j/94418315362?pwd=VWRESW95dzkySWZyU1NiSkhzK3JQdz09} -Co-Design for new usage - -Panelists : Peter Coveney, Marta Garcia, Berk Hess, Leopold Talirz, Bruno Raffin  - -Exascale computer are very likely to run more complex workloads than present supercomputer. This evolution is mainly driven by the development of data-analytics and the need to couple “standard” HPC computation and sophisticated data treatments. The new workloads will require to (co-)design hardware and software tools to manage complex workflows, code coupling, large ensemble runs, (in situ)data-analytics,… - - -Zoom link : -\url{https://zoom.us/j/94418315362?pwd=VWRESW95dzkySWZyU1NiSkhzK3JQdz09} - -\begin{enumerate} -\item Short presentation of yourself and of your background. - -\item Questions : -\end{enumerate} -• How do you think HPC workloads will evolve with exascale computers ? How does this influence the design of the system / applications - - • what makes ensemble simulation and complex workflows prime candidates for exascale computing/computers? -  - • What are the possibility offered by new hardware, especially those allowing data-intensive workload (GPU, NVRam, flash,…) ? - -• Data : Should HPC centers archiving/hosting Large scientific data set ? -• Should HPC centers be designed to host science portals? -• Should HPC centers host workflow-management-type workloads ? How should workflow be properly integrate in HPC centers ? - -• What is your center of excellence doing to promote new usage of HPC or adapt to them ? - -• What spread of maturity do we expect in codes concerning parallelization and acceleration? -• Which levels of co-design are relevant? -• Should we target more than software/software co-design? - -• Which are the "must-have" or key things to succeed in the co-design task ? -• Which are the pitfalls or dangers along the road that can make co-design fail? - -Idea: leave linpack to the americans, and propose a better benchmark. -\end{block} -\end{frame} \end{document} \ No newline at end of file diff --git a/speedup.pdf b/speedup.pdf new file mode 100644 index 0000000..039bc75 Binary files /dev/null and b/speedup.pdf differ