1*b473a062SJed Brown\documentclass[tikz]{standalone} 2*b473a062SJed Brown\usepackage{tikz} 3*b473a062SJed Brown\usepackage{pgfplots} 4*b473a062SJed Brown\usepackage{pgfmath} 5*b473a062SJed Brown\usepackage{libertine} 6*b473a062SJed Brown\usetikzlibrary{calc} 7*b473a062SJed Brown 8*b473a062SJed Brown\renewcommand{\familydefault}{\sfdefault} 9*b473a062SJed Brown 10*b473a062SJed Brown\definecolor{mfem@blue}{RGB}{100,150,230} 11*b473a062SJed Brown\definecolor{mfem@green}{RGB}{75,200,75} 12*b473a062SJed Brown\definecolor{mfem@red}{RGB}{200,75,75} 13*b473a062SJed Brown\definecolor{mfem@orange}{RGB}{252,186,3} 14*b473a062SJed Brown 15*b473a062SJed Brown\begin{document} 16*b473a062SJed Brown 17*b473a062SJed Brown\begin{tikzpicture} 18*b473a062SJed Brown 19*b473a062SJed Brown\begin{scope}[shift={(0,-0.6)}] 20*b473a062SJed Brown \node at (0.8,6.1) {\large Application}; 21*b473a062SJed Brown 22*b473a062SJed Brown \draw[ 23*b473a062SJed Brown top color=mfem@red!10!white, 24*b473a062SJed Brown bottom color=mfem@red!40!white, 25*b473a062SJed Brown mfem@red!60!black, 26*b473a062SJed Brown ] (0.0,-1.2) rectangle ++(1.6,0.8) 27*b473a062SJed Brown node[pos=.5,align=center,color=black] {Ratel}; 28*b473a062SJed Brown \draw[-stealth, line width=0.5pt] (1.6, -0.8) -- ++(1.6,2.4-0.2); 29*b473a062SJed Brown 30*b473a062SJed Brown % PETSc 31*b473a062SJed Brown \draw[ 32*b473a062SJed Brown top color=mfem@red!10!white, 33*b473a062SJed Brown bottom color=mfem@red!40!white, 34*b473a062SJed Brown mfem@red!60!black, 35*b473a062SJed Brown ] (0.0,0.0) rectangle ++(1.6,0.8) 36*b473a062SJed Brown node[pos=.5,align=center,color=black] {PETSc}; 37*b473a062SJed Brown \draw[-stealth, line width=0.5pt] (1.6, 0.4) -- ++(1.6,1.2-0.1); 38*b473a062SJed Brown 39*b473a062SJed Brown % Nek5000 40*b473a062SJed Brown \draw[ 41*b473a062SJed Brown top color=mfem@red!10!white, 42*b473a062SJed Brown bottom color=mfem@red!40!white, 43*b473a062SJed Brown mfem@red!60!black, 44*b473a062SJed Brown ] (0.0,1.2) rectangle ++(1.6,0.8) 45*b473a062SJed Brown node[pos=.5,align=center,color=black] {Nek5000}; 46*b473a062SJed Brown \draw[-stealth, line width=0.5pt] (1.6, 1.6) -- ++(1.6,0.0); 47*b473a062SJed Brown 48*b473a062SJed Brown % MFEM 49*b473a062SJed Brown \draw[ 50*b473a062SJed Brown top color=mfem@red!10!white, 51*b473a062SJed Brown bottom color=mfem@red!40!white, 52*b473a062SJed Brown mfem@red!60!black, 53*b473a062SJed Brown ] (0.0,2.4) rectangle ++(1.6,0.8) 54*b473a062SJed Brown node[pos=.5,align=center,color=black] {MFEM}; 55*b473a062SJed Brown \draw[-stealth, line width=0.5pt] (1.6, 2.8) -- ++(1.6,-1.2+0.1); 56*b473a062SJed Brown\end{scope} 57*b473a062SJed Brown 58*b473a062SJed Brown\begin{scope}[shift={(3.2,0)}] 59*b473a062SJed Brown \begin{scope}[shift={(0,-0.6)}] 60*b473a062SJed Brown \node at (0.8,6.1) {\large Library}; 61*b473a062SJed Brown \draw[ 62*b473a062SJed Brown top color=mfem@blue!10!white, 63*b473a062SJed Brown bottom color=mfem@blue!40!white, 64*b473a062SJed Brown mfem@blue!60!black, 65*b473a062SJed Brown ] (0.0,1.2) rectangle ++(1.6,0.8) 66*b473a062SJed Brown node[pos=.5,align=center,color=black] {libCEED}; 67*b473a062SJed Brown 68*b473a062SJed Brown \draw[-stealth, line width=0.5pt] (1.6, 1.6) -- ++(1.6,3.6); 69*b473a062SJed Brown \draw[-stealth, line width=0.5pt] (1.6, 1.6) -- ++(1.6,2.4); 70*b473a062SJed Brown \draw[-stealth, line width=0.5pt] (1.6, 1.6) -- ++(1.6,1.2); 71*b473a062SJed Brown \draw[-stealth, line width=0.5pt] (1.6, 1.6) -- ++(1.6,0.0); 72*b473a062SJed Brown \draw[-stealth, line width=0.5pt] (1.6, 1.6) -- ++(1.6,-1.2); 73*b473a062SJed Brown \draw[-stealth, line width=0.5pt] (1.6, 1.6) -- ++(1.6,-2.4); 74*b473a062SJed Brown \draw[-stealth, line width=0.5pt] (1.6, 1.6) -- ++(1.6,-3.6); 75*b473a062SJed Brown \end{scope} 76*b473a062SJed Brown\end{scope} 77*b473a062SJed Brown 78*b473a062SJed Brown\begin{scope}[shift={(6.4,0)}] 79*b473a062SJed Brown \begin{scope}[shift={(0,-0.6)}] 80*b473a062SJed Brown \node at (0.95,6.1) {\large Backends}; 81*b473a062SJed Brown 82*b473a062SJed Brown % C 83*b473a062SJed Brown \draw[ 84*b473a062SJed Brown top color=black!5!white, 85*b473a062SJed Brown bottom color=black!20!white, 86*b473a062SJed Brown black!80!white, 87*b473a062SJed Brown ] (0.0,4.8) rectangle ++(2.0,0.8) 88*b473a062SJed Brown node[pos=.5,align=center,color=black] {Pure C}; 89*b473a062SJed Brown \draw[-stealth, line width=0.5pt] (2.0, 5.2) -- ++(1.2,-0.8+0.15); 90*b473a062SJed Brown 91*b473a062SJed Brown % AVX 92*b473a062SJed Brown \draw[ 93*b473a062SJed Brown top color=black!5!white, 94*b473a062SJed Brown bottom color=black!20!white, 95*b473a062SJed Brown black!80!white, 96*b473a062SJed Brown ] (0.0,3.6) rectangle ++(2.0,0.8) 97*b473a062SJed Brown node[pos=.5,align=center,color=black] {AVX}; 98*b473a062SJed Brown \draw[-stealth, line width=0.5pt] (2.0, 4.0) -- ++(1.2,+0.4+0.025); 99*b473a062SJed Brown 100*b473a062SJed Brown % LIBXSMM 101*b473a062SJed Brown \draw[ 102*b473a062SJed Brown top color=black!5!white, 103*b473a062SJed Brown bottom color=black!20!white, 104*b473a062SJed Brown black!80!white, 105*b473a062SJed Brown ] (0.0,2.4) rectangle ++(2.0,0.8) 106*b473a062SJed Brown node[pos=.5,align=center,color=black] {LIBXSMM}; 107*b473a062SJed Brown \draw[-stealth, line width=0.5pt] (2.0, 2.8) -- ++(1.2,1.5-0.025); 108*b473a062SJed Brown 109*b473a062SJed Brown \draw[ 110*b473a062SJed Brown top color=black!5!white, 111*b473a062SJed Brown bottom color=black!20!white, 112*b473a062SJed Brown black!80!white, 113*b473a062SJed Brown ] (0.0,1.2) rectangle ++(2.0,0.8) 114*b473a062SJed Brown node[pos=.5,align=center,color=black] {CUDA}; 115*b473a062SJed Brown \draw[-stealth, line width=0.5pt] (2.0, 1.6) -- ++(1.2,0.4); 116*b473a062SJed Brown 117*b473a062SJed Brown \draw[ 118*b473a062SJed Brown top color=black!5!white, 119*b473a062SJed Brown bottom color=black!20!white, 120*b473a062SJed Brown black!80!white, 121*b473a062SJed Brown ] (0.0,0.0) rectangle ++(2.0,0.8) 122*b473a062SJed Brown node[pos=.5,align=center,color=black] {HIP}; 123*b473a062SJed Brown \draw[-stealth, line width=0.5pt] (2.0, 0.4) -- ++(1.2,0.0+0.025); 124*b473a062SJed Brown 125*b473a062SJed Brown \draw[ 126*b473a062SJed Brown top color=black!5!white, 127*b473a062SJed Brown bottom color=black!20!white, 128*b473a062SJed Brown black!80!white, 129*b473a062SJed Brown ] (0.0,-1.2) rectangle ++(2.0,0.8) 130*b473a062SJed Brown node[pos=.5,align=center,color=black] {SYCL}; 131*b473a062SJed Brown \draw[-stealth, line width=0.5pt] (2.0, -0.8) -- ++(1.2,-0.3+0); 132*b473a062SJed Brown 133*b473a062SJed Brown % MAGMA 134*b473a062SJed Brown \draw[ 135*b473a062SJed Brown top color=black!5!white, 136*b473a062SJed Brown bottom color=black!20!white, 137*b473a062SJed Brown black!80!white, 138*b473a062SJed Brown ] (0.0,-2.4) rectangle ++(2.0,0.8) 139*b473a062SJed Brown node[pos=.5,align=center,color=black] {MAGMA}; 140*b473a062SJed Brown \draw[-stealth, line width=0.5pt] (2.0, -2.0) -- ++(1.2,4.0-0.15); 141*b473a062SJed Brown \draw[-stealth, line width=0.5pt] (2.0, -2.0) -- ++(1.2,2.5-0.15); 142*b473a062SJed Brown 143*b473a062SJed Brown \end{scope} 144*b473a062SJed Brown\end{scope} 145*b473a062SJed Brown 146*b473a062SJed Brown\begin{scope}[shift={(9.6,0)}] 147*b473a062SJed Brown \begin{scope}[shift={(0,-0.6)}] 148*b473a062SJed Brown \node at (0.95,6.1) {\large Hardware}; 149*b473a062SJed Brown 150*b473a062SJed Brown % CPU 151*b473a062SJed Brown \draw[ 152*b473a062SJed Brown top color=mfem@green!20!white, 153*b473a062SJed Brown bottom color=mfem@green!60!white, 154*b473a062SJed Brown mfem@green!60!black, 155*b473a062SJed Brown ] (0.0,4.0) rectangle ++(2.4,0.8) 156*b473a062SJed Brown node[pos=.5,align=center,color=black] {CPU}; 157*b473a062SJed Brown 158*b473a062SJed Brown % CUDA GPU 159*b473a062SJed Brown \draw[ 160*b473a062SJed Brown top color=mfem@green!20!white, 161*b473a062SJed Brown bottom color=mfem@green!60!white, 162*b473a062SJed Brown mfem@green!60!black, 163*b473a062SJed Brown ] (0.0,1.5) rectangle ++(2.4,0.8) 164*b473a062SJed Brown node[pos=.5,align=center,color=black] {NVIDIA GPU}; 165*b473a062SJed Brown 166*b473a062SJed Brown % ROCm GPU 167*b473a062SJed Brown \draw[ 168*b473a062SJed Brown top color=mfem@green!20!white, 169*b473a062SJed Brown bottom color=mfem@green!60!white, 170*b473a062SJed Brown mfem@green!60!black, 171*b473a062SJed Brown ] (0.0,-0.0) rectangle ++(2.4,0.8) 172*b473a062SJed Brown node[pos=.5,align=center,color=black] {AMD GPU}; 173*b473a062SJed Brown 174*b473a062SJed Brown \draw[ 175*b473a062SJed Brown top color=mfem@green!20!white, 176*b473a062SJed Brown bottom color=mfem@green!60!white, 177*b473a062SJed Brown mfem@green!60!black, 178*b473a062SJed Brown ] (0.0,-1.5) rectangle ++(2.4,0.8) 179*b473a062SJed Brown node[pos=.5,align=center,color=black] {Intel GPU}; 180*b473a062SJed Brown 181*b473a062SJed Brown \end{scope} 182*b473a062SJed Brown\end{scope} 183*b473a062SJed Brown 184*b473a062SJed Brown\end{tikzpicture} 185*b473a062SJed Brown\end{document} 186