\item matplotlib: one of the many plotting library
%% \item matplotlib: one of the many plotting library
\item IPython: Advanced python shell
%% \item IPython: Advanced python shell
\item IPython notebook: web-based interactive computational environment where you can combine code execution, text, mathematics, plots and rich media into a single document
%% \item IPython notebook: web-based interactive computational environment where you can combine code execution, text, mathematics, plots and rich media into a single document
\end{itemize}
%% \end{itemize}
\end{frame}
%% \end{frame}
\begin{frame}{Python}
\begin{frame}{Python}
\begin{itemize}
\begin{itemize}
...
@@ -112,24 +112,24 @@ Montréal, Canada \newline
...
@@ -112,24 +112,24 @@ Montréal, Canada \newline
\end{frame}
\end{frame}
\begin{frame}{Why scripting for GPUs?}
%% \begin{frame}{Why scripting for GPUs?}
\begin{bf}They complement each other\end{bf}
%% \begin{bf}They complement each other\end{bf}
GPUs are everything that high level languages are not
%% GPUs are everything that high level languages are not
\begin{itemize}
%% \begin{itemize}
\item Highly parallel
%% \item Highly parallel
\item Very architecture-sensitive
%% \item Very architecture-sensitive
\item Built for maximum FP/memory throughput
%% \item Built for maximum FP/memory throughput
\item So hard to program that meta-programming is easier
%% \item So hard to program that meta-programming is easier
\end{itemize}
%% \end{itemize}
\begin{bf}Best of both worlds:\end{bf} easily scripted code which invokes high-performance GPU kernels.
%% \begin{bf}Best of both worlds:\end{bf} easily scripted code which invokes high-performance GPU kernels.
\begin{bf}Theano C code generation removes overhead\end{bf} of
%% \begin{bf}Theano C code generation removes overhead\end{bf} of
function calls between Python and C by launching many C functions at once.
%% function calls between Python and C by launching many C functions at once.
\end{frame}
%% \end{frame}
\begin{frame}{Theano}
\begin{frame}{Theano}
...
@@ -141,7 +141,7 @@ Montréal, Canada \newline
...
@@ -141,7 +141,7 @@ Montréal, Canada \newline
\item Limited expressivity means more opportunities optimizations
\item Limited expressivity means more opportunities optimizations
\begin{itemize}
\begin{itemize}
\item No subroutines -> global optimization
\item No subroutines -> global optimization
\item Strongly typed -> compiles to machine instructions
\item Strongly typed -> compiles to C
\item Array oriented -> easy parallelism
\item Array oriented -> easy parallelism
\item Support for looping and branching in expressions
\item Support for looping and branching in expressions
\end{itemize}
\end{itemize}
...
@@ -170,12 +170,6 @@ Montréal, Canada \newline
...
@@ -170,12 +170,6 @@ Montréal, Canada \newline
\end{frame}
\end{frame}
\begin{frame}{Goal of the stack}
We want our cake and eat it too.\newline
Our target is the holy grail: \begin{bf}fast to develop\end{bf} and \begin{bf}fast to run\end{bf}.
\end{frame}
\begin{frame}{libgpuarray}
\begin{frame}{libgpuarray}
Goal: A common GPU $n$-dimensional array that can be reused by all projects, support for both CUDA and OpenCL.
Goal: A common GPU $n$-dimensional array that can be reused by all projects, support for both CUDA and OpenCL.
\newline\newline
\newline\newline
...
@@ -188,13 +182,24 @@ Our target is the holy grail: \begin{bf}fast to develop\end{bf} and \begin{bf}fa
...
@@ -188,13 +182,24 @@ Our target is the holy grail: \begin{bf}fast to develop\end{bf} and \begin{bf}fa
\end{itemize}
\end{itemize}
\item They are incompatible
\item They are incompatible
\begin{itemize}
\begin{itemize}
\item None have the same properties and interface.
\item None have the same properties and interface
\end{itemize}
\end{itemize}
\item All of them are a subset of numpy.ndarray on the GPU!
\item All of them implement a subset of numpy.ndarray properties