-
Notifications
You must be signed in to change notification settings - Fork 0
/
talk-kabanov-um-postdoc-colloquium.tex
138 lines (122 loc) · 4.76 KB
/
talk-kabanov-um-postdoc-colloquium.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
\documentclass[10pt, aspectratio=169, progressbar=frametitle]{beamer}
\usetheme[numbering=fraction]{metropolis}
% -----------------------------------------------------------------------------
% Fonts
\usepackage[utf8]{inputenc}
\usepackage[defaultsans,scale=1.0]{lato}
\usepackage{fourier}
\usepackage[scale=1.05]{inconsolata}
\usepackage{microtype}
\usefonttheme[onlymath]{serif}
% -----------------------------------------------------------------------------
% Graphics
\usepackage{graphicx}
\usepackage{pgfplots}
\usepackage{tikz}
\usepackage[beamer,customcolors]{hf-tikz}
\usetikzlibrary{arrows.meta, calc, positioning, shapes.geometric}
\input{tikz/styles.tex}
\graphicspath{{./assets}}
% -----------------------------------------------------------------------------
% Define useful colors.
\colorlet{black}{black!50!gray}
\colorlet{green}{green!50!gray}
\colorlet{blue}{blue!50!gray}
\colorlet{CBlue}{blue!15}
\colorlet{CBlueD}{blue!95!gray}
\colorlet{CRed}{red!15}
\colorlet{CRedD}{red!65!gray}
\colorlet{CGreenD}{green!60!gray}
\colorlet{COrange}{orange}
% -----------------------------------------------------------------------------
\setbeamersize{text margin left=0.5cm, text margin right=0.5cm}
% -----------------------------------------------------------------------------
% Title info
\title{Open Interfaces for Scientific Computing}
\author{Dmitry I. Kabanov, Ren\'e Fritze, Stephan Rave, Mario Ohlberger}
\institute{University of Münster}
\date{9 November 2023}
% -----------------------------------------------------------------------------
\begin{document}
\maketitle
\begin{frame}{Typical situation in scientific computing}
\begin{itemize}
\item Student Floyd is mostly proficient in Python
\item However, for the new project, he needs to run a Monte-Carlo
simulation on a forward model implemented as a C solver
\item Which means that he needs to write bindings to invoke the solver
\item He learns about another solver (in another language) and wants to try it
\item There are \alert{two challenges:} different languages and different interfaces
\end{itemize}
\end{frame}
\begin{frame}{Traditional way}
\begin{minipage}{0.45\textwidth}
\begin{itemize}
\item For a solver in C provide bindings to Python, Julia, R, \dots
\item Repeat for a set of $I$ implementations of algorithms and $L$ languages
\item It leads to $I \times L$ amount of work if we want to provide
bindings for each algorithm in each language
\end{itemize}
\end{minipage}\hfill
\begin{minipage}{0.45\textwidth}
\input{tikz/pairwise_bindings.tex}
\end{minipage}
\end{frame}
\begin{frame}{Another solution}
To solve both of these problems:
\begin{itemize}
\item provide automatic bindings between different languages
\item provide generic interfaces for typical numerical problems
\item Examples of generic interfaces are \texttt{scipy.optimize} in Python
and \texttt{DifferentialEquations.jl} in Julia
for solving differential equations
\end{itemize}
\end{frame}
\begin{frame}{Open Interfaces subproject of the MaRDI project
(\url{mardi4nfdi.de})}
\begin{minipage}{0.45\textwidth}
To solve both problems simultaneously:
\begin{itemize}
\item Provide a mediator library \texttt{liboif} that handles
data marshalling between different languages and provides a set
of generic interfaces for typical numerical problems
\item Each interface allows for many implementations
\item For $I$ implementations and $L$ languages leads to $I + L$
amount of work
\end{itemize}
\end{minipage}\hfill%
\begin{minipage}{0.50\textwidth}
\input{tikz/oif_bindings.tex}
\end{minipage}
\end{frame}
\begin{frame}{Software architecture}
\begin{center}
\includegraphics[scale=0.09]{arch.png}
\end{center}
\end{frame}
\begin{frame}{Currently supported types, languages, problems}
\begin{itemize}
\item Types:
\begin{itemize}
\item \texttt{OIF\_F64} (64-bit floating-point numbers, a.k.a. C \texttt{double}),
\item \texttt{OIF\_ARRAY\_F64} (arrays of doubles)
\item \texttt{OIF\_CALLBACK} user-defined functions
(e.g., right-hand side functions of differential equations)
\end{itemize}
\item Languages: Python, C. For C bindings, special structure \texttt{OIFArrayF64} and auxiliary
functions are implemented to conveniently pass arrays
along with their shape
\item Problems
\begin{itemize}
\item quadratic equations: $ax^2 + bx + c = 0$
\item systems of linear algebraic equations: $Ax = b$
\item initial value problems: $y'(t) = f(t, y),\ y(t_0) = y_0$
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}[standout]
\centering
\Huge
Thank you!
\end{frame}
\end{document}