Written beginning of Perf Section.

git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1823 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
kostis 2007-03-10 18:59:32 +00:00
parent fe5b47afbb
commit c679e16cd2

View File

@ -865,9 +865,9 @@ complications:
ISO Prolog standard becomes harder. ISO Prolog standard becomes harder.
\end{itemize} \end{itemize}
We will briefly discuss possible ways of handling these complications. We will briefly discuss possible ways of handling these complications.
However, we note that most Prolog systems do in fact provide indexing However, we note that Prolog systems typically provide indexing for
for dynamic predicates and thus already deal in some way or another dynamic predicates and thus already deal in some way or another with
with these issues. It's just that \JITI makes these problems harder. these issues. It's just that \JITI makes these problems harder.
\section{Implementation in XXX and in YAP} \label{sec:impl} \section{Implementation in XXX and in YAP} \label{sec:impl}
@ -889,7 +889,9 @@ directive for these predicates.} For dynamic predicates \JITI is
employed only if they consist of Datalog facts; if a clause which is employed only if they consist of Datalog facts; if a clause which is
not a Datalog fact is asserted, all dynamically created index tables not a Datalog fact is asserted, all dynamically created index tables
for the predicate are simply dropped and the \jitiONconstant for the predicate are simply dropped and the \jitiONconstant
instruction becomes a \instr{noop}. instruction becomes a \instr{noop}. All these are done automatically,
but the user can disable \JITI in compiled code using an appropriate
compiler option.
YAP implements \JITI since version 5. The current implementation YAP implements \JITI since version 5. The current implementation
supports static code, dynamic code, and the internal database. It supports static code, dynamic code, and the internal database. It
@ -903,24 +905,36 @@ relations: in such cases YAP will maintain a list of matching clauses
at each \jitiSTAR node. Indexing dynamic predicates in YAP follows at each \jitiSTAR node. Indexing dynamic predicates in YAP follows
very much the same algorithm as static indexing: the key idea is that very much the same algorithm as static indexing: the key idea is that
most nodes in the index tree must be allocated separately so that they most nodes in the index tree must be allocated separately so that they
can grow or contract independently. YAP can index arguments with can grow or contract independently. YAP can index arguments where some
unconstrained variables, but only for static predicates, as it would clauses have unconstrained variables, but only for static predicates,
complicate updates. as it would complicate updates.
YAP uses the term JITI (Just-In-Time Indexing) to refer to \JITI. In
the next section we will take the liberty to use this term as a
convenient abbreviation.
\section{Performance Evaluation} \label{sec:perf} \section{Performance Evaluation} \label{sec:perf}
%================================================ %================================================
Next, we evaluate \JITI on a set of benchmarks and on real life Next, we evaluate \JITI on a set of benchmarks and on real life
applications. applications. For the benchmarks of Sect.~\ref{sec:perf:overhead}
and~\ref{sec:perf:speedups}, which involve both systems, we used a 2.4
GHz P4-based laptop with 512~MB of memory running Linux and report
times in milliseconds. For the benchmarks of Sect.~\ref{sec:perf:ILP},
which involve YAP only, we used a
%
VITOR PLEASE ADD
%
and report times in seconds.
\paragraph{Benchmarking environment} \subsection{JITI Overhead} \label{sec:perf:overhead}
%---------------------------------------------------
\subsection{JITI Overhead}
6.2 JITI overhead (show the "bad" cases first) 6.2 JITI overhead (show the "bad" cases first)
present Prolog/tabled benchmarks that do NOT benefit from JITI present Prolog/tabled benchmarks that do NOT benefit from JITI
and measure the time overhead -- hopefully this is low and measure the time overhead -- hopefully this is low
\subsection{JITI Speedups}
\subsection{JITI Speedups} \label{sec:perf:speedups}
%---------------------------------------------------
Here I already have "compress", "mutagenesis" and "sg\_cyl" Here I already have "compress", "mutagenesis" and "sg\_cyl"
The "sg\_cyl" has a really impressive speedup (2 orders of The "sg\_cyl" has a really impressive speedup (2 orders of
magnitude). We should keep the explanation in your text. magnitude). We should keep the explanation in your text.
@ -928,8 +942,8 @@ applications.
If time permits, we should also add some FSA benchmarks If time permits, we should also add some FSA benchmarks
(e.g. "k963", "dg5" and "tl3" from PLDI) (e.g. "k963", "dg5" and "tl3" from PLDI)
\subsection{JITI In ILP} \subsection{JITI in ILP} \label{sec:perf:ILP}
%--------------------------------------------
The need for just-in-time indexing was originally motivated by ILP The need for just-in-time indexing was originally motivated by ILP
applications. Table~\ref{tab:aleph} shows JITI performance on some applications. Table~\ref{tab:aleph} shows JITI performance on some
learning tasks using the ALEPH system~\cite{}. The dataset learning tasks using the ALEPH system~\cite{}. The dataset