this is for holding javascript data
dcdelia
over 8 years ago
Commit id: 7dc2e90c75c28515dc3e18cd0f7c4e63346819c4
deletions | additions
diff --git a/artifact/session2.tex b/artifact/session2.tex
index 4270f6b..249dfc3 100644
--- a/artifact/session2.tex
+++ b/artifact/session2.tex
...
\subsubsection{Session 2: Performance Figures}
The experiments can be repeated by executing scripts on a selection of the \shootout\ benchmarks~\cite{shootout}. Each benchmark was compiled to LLVM IR using {\tt clang} as described in \mysection\ref{ss:bench-setup}. For each benchmark {\tt X},
{\tt {\small\tt tinyvm/shootout/X/} contains the unoptimized and optimized ({\tt -O1}) IR code, each in two versions:
\begin{itemize}[parsep=0pt]
\item {\tt bench} and {\tt bench-O1}: IR code of the benchmark;
diff --git a/artifact/session3.tex b/artifact/session3.tex
index e0f0725..02e67c7 100644
--- a/artifact/session3.tex
+++ b/artifact/session3.tex
...
\subsubsection{Session 3: {\tt feval} optimization in McVM}
McVM is a virtual machine for MATLAB developed at McGill University. As a by-product of our project, we ported it from the LLVM legacy JIT to MCJIT, and later extended it with a new specialization mechanism for {\tt feval} calls. The source code for this version
is along with the MATLAB benchmarks listed in \mysection\ref{ss:bench-setup} are publicly available at \url{https://github.com/dcdelia/mcvm}.
%Experiments Experiments reported in \mytable\ref{tab:feval}
can be repeated using a number of scripts provided along with a McVM build in {\small\tt /home/osrkit/Desktop/mcvm/}. Pre-requirements for McVM compilation are header files for a number of scientific libraries (ATLAS, BLAS, and LAPACKE) and the Boehm garbage collector, which can be built automatically using the script {\tt bootstrap.sh} provided in the repository.
For each benchmark {\tt X}, {\small\tt benchmarks/scripts/} contains three MATLAB scripts to use as input for {\tt mcvm}:
\begin{itemize}[parsep=0pt]
\item {\tt base/X}: single run of original code (i.e., {\tt feval}-based);
\item {\tt direct/X}: single run of code optimized by hand (i.e., with direct calls);
\item {\tt many/X}: multiple runs of original code (for code caching).
\end{itemize}
\noindent We manually collected figures from the console output and computed speedups for the different settings. We show how to run the code using {\tt odeEuler} as an example. The platform used to obtain reported numbers is the same as in session 2.
To determine a baseline for speedup computation, we let {\tt mcvm} perform a single run of the original code with no {\tt feval} optimization. Note that we can selectively enable or disable {\tt feval} optimization using the {\tt -jit\_feval\_opt} flag:
\begin{small}
\begin{verbatim}
$ cd ~/Desktop/mcvm
$ ./mcvm -jit_feval_opt false <
benchmarks/scripts/base/odeEuler
***********************************************
McVM - The McLab Virtual Machine v1.0
Visit http://www.sable.mcgill.ca for more info.
***********************************************
>: >: Compiling function: "testSH"
Compiling function: "odeEuler"
Compiling function: "testSHfun"
Compiling function: "rhsSteelHeat"
Compiling function: "testSHfun"
Compiling function: "rhsSteelHeat"
[TOC] Elapsed time: 32.552112 seconds
t y_Euler
0.0000 1.000000
80.0000 679.644212
\end{verbatim}
\end{small}