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