Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions book.bib
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,15 @@ @inproceedings{geimer2007
year={2007}
}

% MPI-focused performance - Characterising load and communication imbalance
@book{bohme2014,
title={Characterizing load and communication imbalance in parallel applications},
author={B{\"o}hme, David},
volume={23},
year={2014},
publisher={Forschungszentrum J{\"u}lich}
}

% Peak performance reference - Emily 2026-03-16
@incollection{sterling_chapter_1_2018,
address = {Boston},
Expand Down Expand Up @@ -123,3 +132,5 @@ @incollection{sterling_chapter_15_2018
pages = {451--481},
file = {PDF:C\:\\Users\\MDS_ghvn82_\$\\Zotero\\storage\\ZLITG4MC\\Sterling et al. - 2018 - Chapter 15 - Accelerator Architecture.pdf:application/pdf},
}


10 changes: 10 additions & 0 deletions distributed-memory/collective.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
\section{Collective communication inefficiencies}
\label{section:distributed-memory:collective}

\subsection{Late broadcaster}

\subsection{Early reduce}

\subsection{Wait at NxN}

\subsection{Early scan}
6 changes: 6 additions & 0 deletions distributed-memory/communication-imbalance.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
\section{Communication imbalance}
\label{section:distributed-memory:communication-imbalance}

\subsection{Varying number of MPI calls}

\subsection{Varying size of messages}
62 changes: 62 additions & 0 deletions distributed-memory/distributed-memory.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
\chapter{Distributed-memory parallelism (inter-node) analysis}
\label{chapter:node-level}



%Reaching this section indicates that we are struggling to scale across multiple nodes.
%This is evidenced by the fact that our intra-node scaling is not good (cmp.~Section~\ref{section:high-level:inter-node}),
%i.e.~we measure what we get on one core and then extrapolate what our given number of cores should yield.
%But they don't:
%The speedup as introduced from \eqref{equation:hpc-terms:speedup} is poor as we increase the core count.
%We leave a lot of potential compute capability unused.



%Our deep dive starts from an analysis if there is enough concurrency in principle to exploit all cores.
%If there are not enough concurrent operations, further analysis is not required.
%The code can be returned immediately to the developers.
%Otherwise, we take it from there (Figure~\ref{figure:core:decision-graph}).


%\subsection*{Preparation}

%Inter-node analysis is all about how efficiently we use multiple threads.
%Therefore, it focuses predominantly on relative quantities:
%How well does the code perform if we add another thread?
%However, we cannot study 128+ measurements in one go---even though modern performance analysis tools have quite powerful capabilities to compare different setups.
%We need to focus on few setups that yield interesting setup.



%\begin{assessmentcrime}
% People study a whole-node run right from the start without a scalability
% analysis beforehand.
%\end{assessmentcrime}



%\noindent
%It makes sense to run a strong scaling test and plot the efficiency.
%Once completed, we can flag those areas where the gradient suddenly changes or
%where the efficiency drops below 80\% or 60\% respectively.
%These are the setups (turning points) on which we should focus most of the time.
%Do not try to study any other setup, as you'll most likely be swamped with data
%that is not relevant or difficult to interpret!



\paragraph*{How it works}

\begin{itemize}[noitemsep]
%\item[$\boxplus$] Run a weak scaling test and plot the efficiency. Narrow down the number of setups of interest, i.e.~identify regions where the efficiency apruptly changes or falls under a threshold.
\item[$\boxplus$] TBD
\end{itemize}


\paragraph*{How it does not work}

\begin{itemize}[noitemsep]
%\item[$\boxminus$] Start with a full-node run right from the start and hope that you spot interesting trends in the data.
\item[$\boxminus$] TBD
\end{itemize}

8 changes: 8 additions & 0 deletions distributed-memory/point-to-point.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
\section{Point-to-point communication inefficiencies}
\label{section:distributed-memory:point-to-point}

\subsection{Late senders}

\subsection{Late receivers}

\subsection{Wrong order}
3 changes: 3 additions & 0 deletions distributed-memory/small-messages.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
\section{Small messages}
\label{section:distributed-memory:small-messages}

6 changes: 6 additions & 0 deletions distributed-memory/workload-imbalance.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
\section{Workload imbalance}
\label{section:distributed-memory:workload-imbalance}

\subsection{Static workload imbalance}

\subsection{Dynamic workload imbalance}
5 changes: 5 additions & 0 deletions main.tex
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,11 @@ \part{Deep Dive}
\input{node-level/hierarchical-decomposition}
\input{node-level/fine-granular-task-serialisation}

\input{distributed-memory/distributed-memory}
\input{distributed-memory/small-messages}
\input{distributed-memory/point-to-point}
\input{distributed-memory/collective}

\part{Resources}
\label{part:resources}

Expand Down