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