\documentclass[tikz]{standalone} \usepackage{tikz} \usepackage{pgfplots} \usepackage{pgfmath} \usepackage{libertine} \usetikzlibrary{calc} \renewcommand{\familydefault}{\sfdefault} \definecolor{mfem@blue}{RGB}{100,150,230} \definecolor{mfem@green}{RGB}{75,200,75} \definecolor{mfem@red}{RGB}{200,75,75} \definecolor{mfem@orange}{RGB}{252,186,3} \begin{document} \begin{tikzpicture} \begin{scope}[shift={(0,-0.6)}] \node at (0.8,6.1) {\large Application}; \draw[ top color=mfem@red!10!white, bottom color=mfem@red!40!white, mfem@red!60!black, ] (0.0,-1.2) rectangle ++(1.6,0.8) node[pos=.5,align=center,color=black] {Ratel}; \draw[-stealth, line width=0.5pt] (1.6, -0.8) -- ++(1.6,2.4-0.2); % PETSc \draw[ top color=mfem@red!10!white, bottom color=mfem@red!40!white, mfem@red!60!black, ] (0.0,0.0) rectangle ++(1.6,0.8) node[pos=.5,align=center,color=black] {PETSc}; \draw[-stealth, line width=0.5pt] (1.6, 0.4) -- ++(1.6,1.2-0.1); % Nek5000 \draw[ top color=mfem@red!10!white, bottom color=mfem@red!40!white, mfem@red!60!black, ] (0.0,1.2) rectangle ++(1.6,0.8) node[pos=.5,align=center,color=black] {Nek5000}; \draw[-stealth, line width=0.5pt] (1.6, 1.6) -- ++(1.6,0.0); % MFEM \draw[ top color=mfem@red!10!white, bottom color=mfem@red!40!white, mfem@red!60!black, ] (0.0,2.4) rectangle ++(1.6,0.8) node[pos=.5,align=center,color=black] {MFEM}; \draw[-stealth, line width=0.5pt] (1.6, 2.8) -- ++(1.6,-1.2+0.1); \end{scope} \begin{scope}[shift={(3.2,0)}] \begin{scope}[shift={(0,-0.6)}] \node at (0.8,6.1) {\large Library}; \draw[ top color=mfem@blue!10!white, bottom color=mfem@blue!40!white, mfem@blue!60!black, ] (0.0,1.2) rectangle ++(1.6,0.8) node[pos=.5,align=center,color=black] {libCEED}; \draw[-stealth, line width=0.5pt] (1.6, 1.6) -- ++(1.6,3.6); \draw[-stealth, line width=0.5pt] (1.6, 1.6) -- ++(1.6,2.4); \draw[-stealth, line width=0.5pt] (1.6, 1.6) -- ++(1.6,1.2); \draw[-stealth, line width=0.5pt] (1.6, 1.6) -- ++(1.6,0.0); \draw[-stealth, line width=0.5pt] (1.6, 1.6) -- ++(1.6,-1.2); \draw[-stealth, line width=0.5pt] (1.6, 1.6) -- ++(1.6,-2.4); \draw[-stealth, line width=0.5pt] (1.6, 1.6) -- ++(1.6,-3.6); \end{scope} \end{scope} \begin{scope}[shift={(6.4,0)}] \begin{scope}[shift={(0,-0.6)}] \node at (0.95,6.1) {\large Backends}; % C \draw[ top color=black!5!white, bottom color=black!20!white, black!80!white, ] (0.0,4.8) rectangle ++(2.0,0.8) node[pos=.5,align=center,color=black] {Pure C}; \draw[-stealth, line width=0.5pt] (2.0, 5.2) -- ++(1.2,-0.8+0.15); % AVX \draw[ top color=black!5!white, bottom color=black!20!white, black!80!white, ] (0.0,3.6) rectangle ++(2.0,0.8) node[pos=.5,align=center,color=black] {AVX}; \draw[-stealth, line width=0.5pt] (2.0, 4.0) -- ++(1.2,+0.4+0.025); % LIBXSMM \draw[ top color=black!5!white, bottom color=black!20!white, black!80!white, ] (0.0,2.4) rectangle ++(2.0,0.8) node[pos=.5,align=center,color=black] {LIBXSMM}; \draw[-stealth, line width=0.5pt] (2.0, 2.8) -- ++(1.2,1.5-0.025); \draw[ top color=black!5!white, bottom color=black!20!white, black!80!white, ] (0.0,1.2) rectangle ++(2.0,0.8) node[pos=.5,align=center,color=black] {CUDA}; \draw[-stealth, line width=0.5pt] (2.0, 1.6) -- ++(1.2,0.4); \draw[ top color=black!5!white, bottom color=black!20!white, black!80!white, ] (0.0,0.0) rectangle ++(2.0,0.8) node[pos=.5,align=center,color=black] {HIP}; \draw[-stealth, line width=0.5pt] (2.0, 0.4) -- ++(1.2,0.0+0.025); \draw[ top color=black!5!white, bottom color=black!20!white, black!80!white, ] (0.0,-1.2) rectangle ++(2.0,0.8) node[pos=.5,align=center,color=black] {SYCL}; \draw[-stealth, line width=0.5pt] (2.0, -0.8) -- ++(1.2,-0.3+0); % MAGMA \draw[ top color=black!5!white, bottom color=black!20!white, black!80!white, ] (0.0,-2.4) rectangle ++(2.0,0.8) node[pos=.5,align=center,color=black] {MAGMA}; \draw[-stealth, line width=0.5pt] (2.0, -2.0) -- ++(1.2,4.0-0.15); \draw[-stealth, line width=0.5pt] (2.0, -2.0) -- ++(1.2,2.5-0.15); \end{scope} \end{scope} \begin{scope}[shift={(9.6,0)}] \begin{scope}[shift={(0,-0.6)}] \node at (0.95,6.1) {\large Hardware}; % CPU \draw[ top color=mfem@green!20!white, bottom color=mfem@green!60!white, mfem@green!60!black, ] (0.0,4.0) rectangle ++(2.4,0.8) node[pos=.5,align=center,color=black] {CPU}; % CUDA GPU \draw[ top color=mfem@green!20!white, bottom color=mfem@green!60!white, mfem@green!60!black, ] (0.0,1.5) rectangle ++(2.4,0.8) node[pos=.5,align=center,color=black] {NVIDIA GPU}; % ROCm GPU \draw[ top color=mfem@green!20!white, bottom color=mfem@green!60!white, mfem@green!60!black, ] (0.0,-0.0) rectangle ++(2.4,0.8) node[pos=.5,align=center,color=black] {AMD GPU}; \draw[ top color=mfem@green!20!white, bottom color=mfem@green!60!white, mfem@green!60!black, ] (0.0,-1.5) rectangle ++(2.4,0.8) node[pos=.5,align=center,color=black] {Intel GPU}; \end{scope} \end{scope} \end{tikzpicture} \end{document}