Daniele Cono D'Elia edited case-study.tex  over 8 years ago

Commit id: 48dedf7ad7a6b898efa4460f7f5d4c4c23b9dd12

deletions | additions      

       

Once a state mapping object has been constructed, the optimizer calls our OSR library to generate the continuation function for the OSR transition and eventually compiles it through MCJIT. A pointer to the compiled function is stored in the code cache and returned to the stub, which invokes it through an indirect call passing the live state saved at the OSR point.  \subsection{Experimental results}  We have evaluated the effectiveness of our technique on four benchmarks, namely {\tt odeEuler}, {\tt odeMidpt}, {\tt odeRK4}, and {\tt sim\_anl}. The first three benchmarks solve an ODE for heat treating simulation using the Euler, midpoint, and Range-Kutta method, respectively; the last benchmark minimizes the six-hump camelback function with the method of simulated annealing. We report the speed-ups enabled by our technique in Table~\ref{tab:feval}, using the running times for McVM's \feval\ default dispatcher as baseline. As the dispatcher typically JIT-compiles the invoked function, we also analyzed running times when the dispatcher calls a previously compiled function. In the last column, we report speed-ups from a modified version of the benchmarks in which each \feval\ call is replaced by hand with a direct call to the function in use for the specific benchmark.    \begin{table}  % dirty hack for text wrapping 

sim_anl & 1.009 & 1.564 & 1.606 & 1.612 \\   \hline  \end{tabular}   \caption{Speedup \caption{\label{tab:feval} Speedup  comparison for \feval\ optimization.} \end{table}     We are unable to report performance metrics for the solution by Lameed and Hendren as their implementation is not publicly available. According to numbers shown in their paper~\cite{lameed2013feval}, their OSR-based approach on average yields a fraction of the speed-up from hand-coded calls equal to $52\%$, ranging from $9.2\%$ to $93.9\%$; for the JIT-based approach this fraction grows to $90.6\%$, and is never smaller than $75.7\%$.