<div dir="ltr">A more fruitful approach might be pipelining the compiler:<div><br></div><div>- files enter the pipeline in reverse dependency order</div><div>- have a thread (stage) to read those files into memory</div><div>- have a thread to tokenize and parse the files and form the data structure</div><div>- have a thread to do intermediary processing</div><div>- have a thread to generate the output representation for the back end</div><div><br></div><div>You'll only get a maximum 4x speedup and you'll only be as fast as the slowest thread, but you can reliably tune the divisions based on simple benchmarking of each thread. You're very likely to get somewhat close to the 4x speedup. This works best when there is a 1:1 between pipeline stages and cores. If you were ambitious you could attempt an 8 stage pipeline for 8 core processors.</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Aug 8, 2015 at 8:05 PM, Jay K <span dir="ltr"><<a href="mailto:jay.krell@cornell.edu" target="_blank">jay.krell@cornell.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div dir="ltr">Is anyone interested in updating m3front to be multi-threaded?<div><br></div><div>I haven't seen a single core system in a while.</div><div><br></div><div>Surely each module can be compiled separately, possibly with some serialization around compiling interfaces?</div><div><br></div><div>Thanks,</div><div> - Jay<br><br></div> </div></div>
<br>_______________________________________________<br>
M3devel mailing list<br>
<a href="mailto:M3devel@elegosoft.com">M3devel@elegosoft.com</a><br>
<a href="https://mail.elegosoft.com/cgi-bin/mailman/listinfo/m3devel" rel="noreferrer" target="_blank">https://mail.elegosoft.com/cgi-bin/mailman/listinfo/m3devel</a><br>
<br></blockquote></div><br></div>