xref: /libCEED/doc/img/tex/libCEEDBackends.tex (revision 952cecad55ddc8c97d031e83f1ca1b20c215bb84)
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