\documentclass[tikz]{standalone} \usepackage{tikz} \usepackage{pgfplots} \usepackage{pgfmath} \usepackage{libertine} \usetikzlibrary{calc} \renewcommand{\familydefault}{\sfdefault} \definecolor{ceed@blue}{RGB}{100,150,230} \definecolor{ceed@green}{RGB}{75,200,75} \definecolor{ceed@red}{RGB}{200,75,75} \definecolor{ceed@orange}{RGB}{252,186,3} \pgfplotsset{compat=1.18} \begin{document} \begin{tikzpicture} \begin{scope}[shift={(0,-0.6)}] \node at (1.0,6.1) {\large Application}; % PETSc \draw[ top color=ceed@red!10!white, bottom color=ceed@red!40!white, ceed@red!60!black, ] (0.0,3.0) rectangle ++(1.6,0.8) node[pos=.5,align=center,color=black] {PETSc}; \draw[-stealth, line width=0.5pt] (1.6, 3.0+0.4) -- ++(1.6,-1.2-0.4); % Ratel \draw[ top color=ceed@red!10!white, bottom color=ceed@red!40!white, ceed@red!60!black, ] (0.0,1.8) rectangle ++(1.6,0.8) node[pos=.5,align=center,color=black] {Ratel}; \draw[-stealth, line width=0.5pt] (1.6, 1.8+0.4) -- ++(1.6,0.0-0.55); % HONEE \draw[ top color=ceed@red!10!white, bottom color=ceed@red!40!white, ceed@red!60!black, ] (0.0,0.6) rectangle ++(1.6,0.8) node[pos=.5,align=center,color=black] {HONEE}; \draw[-stealth, line width=0.5pt] (1.6, 0.6+0.4) -- ++(1.6,1.2-0.65); % MFEM \draw[ top color=ceed@red!10!white, bottom color=ceed@red!40!white, ceed@red!60!black, ] (0.0,-0.6) rectangle ++(1.6,0.8) node[pos=.5,align=center,color=black] {MFEM}; \draw[-stealth, line width=0.5pt] (1.6, -0.6+0.4) -- ++(1.6,2.4-0.8); \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=ceed@blue!10!white, bottom color=ceed@blue!40!white, ceed@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,-1.2+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.0+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.1-0.025); % CUDA \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.0+0.025); % HIP \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); % SYCL \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.0+0.025); % 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,3.7-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 (1.1,6.1) {\large Hardware}; % CPU \draw[ top color=ceed@green!20!white, bottom color=ceed@green!60!white, ceed@green!60!black, ] (0.0,3.6) rectangle ++(2.2,0.8) node[pos=.5,align=center,color=black] {CPU}; % CUDA GPU \draw[ top color=ceed@green!20!white, bottom color=ceed@green!60!white, ceed@green!60!black, ] (0.0,1.2) rectangle ++(2.2,0.8) node[pos=.5,align=center,color=black] {NVIDIA GPU}; % ROCm GPU \draw[ top color=ceed@green!20!white, bottom color=ceed@green!60!white, ceed@green!60!black, ] (0.0,-0.0) rectangle ++(2.2,0.8) node[pos=.5,align=center,color=black] {AMD GPU}; % Intel GPU \draw[ top color=ceed@green!20!white, bottom color=ceed@green!60!white, ceed@green!60!black, ] (0.0,-1.2) rectangle ++(2.2,0.8) node[pos=.5,align=center,color=black] {Intel GPU}; \end{scope} \end{scope} \end{tikzpicture} \end{document}