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