<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<p><font face="FreeSans">Dear All, <br>
</font></p>
<p><font face="FreeSans">The new concurrent orc jit support
speculative compilation with a naive implementation and
laziness. Compiling everything up-front can consume more CPU and
memory than needed and also impose significant effect on
resource constraint systems due to context switching of JIT
threads (coarse level parallelism). The main idea here is to
develop heuristics to find which functions are worth compiling
into executable bits, speculatively using jit threads. <br>
</font></p>
<p><font face="FreeSans">Heuristics can be extracted by analyzing
higher level program representations such as ASTs, CFGs and from
LLVM IR. Profile guided optimization can also used to determine
heuristics with greater confidence level based on previous
execution steps.</font></p>
<p><font face="FreeSans">Goals: <br>
</font></p>
<p><font face="FreeSans">1) Create & Improve APIs to support
heuristic guided speculative compilation in concurrent orc jit.</font></p>
<p><font face="FreeSans">2) Finding key heuristics to decide what to
compile next.</font></p>
<p><font face="FreeSans">3) Bench marking jit with eagerly
speculating full module vs heuristic based approach for
different jit threads.</font></p>
<p><font face="FreeSans">Possible caveats:</font></p>
<p><font face="FreeSans">1) More time spent in analyzing what to
compile next than actually compiling. These can addressed once
we have basic working prototype, so that we can find out the
bottlenecks and remove it. Or may be parallelizing analysis
process.</font></p>
<p><font face="FreeSans"><br>
</font></p>
<p><font face="FreeSans">Currently, I'm trying to find heuristics
that can be used for this project and familiarizing with
concurrent jit design and APIs. <font face="FreeSans">Also,
please note that this idea has been proposed by Lang Hames and
I</font> would like to propose this idea & implementation
for GSoC 2019 :) and I'm improvising this idea. I would like to
know the community responses! <br>
</font></p>
<p><font face="FreeSans">This can serve as a good documentation for
me to write a proposal and to keep things in track. <br>
</font></p>
<p><font face="FreeSans">Any thoughts on finding useful heuristics
are highly appreciated :) I have also started a thread in Numba
JIT project to see what heuristics they are using.</font></p>
<p><font face="FreeSans">Also anyone interested in mentoring this
project please reply! <br>
</font></p>
<p>References:</p>
<p><a href="https://www.youtube.com/watch?v=hILdR8XRvdQ">LLVM Next
Gen JIT API</a></p>
<p><a href="https://www.youtube.com/watch?v=MOQG5vkh9J8">Updating
Orc for concurrency</a></p>
<p><a href="https://www.youtube.com/watch?v=ZCnHxRhQmvs">Thinlto
summaries in JIT</a><br>
</p>
<pre class="moz-signature" cols="72">Have a great day!
PreeJackie</pre>
<pre class="moz-signature" cols="72">--
Have a great day!
PreeJackie</pre>
</body>
</html>