<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>