<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">2018-01-12 11:14 GMT+01:00 Eric Noulard <span dir="ltr"><<a href="mailto:eric.noulard@gmail.com" target="_blank">eric.noulard@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><span class="gmail-"><br><div class="gmail_quote">2018-01-12 10:58 GMT+01:00 Alan W. Irwin <span dir="ltr"><<a href="mailto:irwin@beluga.phys.uvic.ca" target="_blank">irwin@beluga.phys.uvic.ca</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">I am looking into the practicality of using clusters containing ~5<br>
cheap ARM 8-core computers (such as the Banana Pi M3) to rapidly build<br>
and test software (since even with ccache I am currently spending a<br>
lot of my time waiting for tests to complete as I develop my<br>
software).  Such clusters would give you ~40 cores which is a lot of<br>
computer power for ~$500 or so.  But, of course, the issue with<br>
clusters is how to use them efficiently?<br>
<br>
For one 8-core M3 you would expect<br>
<br>
make -j<NNN> target<br>
<br>
to scale linearly with NNN up to the saturation limit of roughly NNN=8<br></blockquote></div></span></div></div></blockquote><div><br></div><div>A side note on that.</div><div>Sometimes you want to control the 'load' more than the "parallelism".</div><div>With make (or ninja) you can ask for **load** limitation using:</div><div><br></div><div>make -l <N></div><div>and</div><div>ninja -l <N></div><div><br></div><div>i.e. if you have 8 core and you want to keep 1 of them "calm" then</div><div>make -l 7 </div><div><br></div><div>is interesting.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><span class="gmail-"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"></blockquote></div><div><br></div></span><div>AFAIU what you want is "distributed ctest" not really distributed build right?</div><div>For distributed build you may have a look at distcc (<a href="http://distcc.org/" target="_blank">http://distcc.org/</a>)  which seems already used</div><div>by CMake-enabled project like ccache is</div><div>(<a href="https://stackoverflow.com/questions/32752446/using-compiler-prefix-commands-with-cmake-distcc-ccache/34317588" target="_blank">https://stackoverflow.com/<wbr>questions/32752446/using-<wbr>compiler-prefix-commands-with-<wbr>cmake-distcc-ccache/34317588</a>)</div><div><br></div><div>Now I'm not quite sure to understand why you speak of MPI-awareness ?</div><div>Are your test including MPI which would mean that some executable are already eating up more than one core?</div><div>Or do you have a big collection of mono-processor tests you want to run on the cluster?</div></div></div></blockquote><div><br></div><div>Concerning high-level distributed execution on a cluster I would have a look at something</div><div>like OpenPBS: <a href="http://www.rguha.net/writing/pub/opbs.html">http://www.rguha.net/writing/pub/opbs.html</a> (now apparently  <a href="http://pbspro.org/">http://pbspro.org/</a>).</div><div><br></div><div>Once you have your PBS cluster setup I would say that you would need to write a small test driver</div><div>that would launch the tests on the cluster instead of launching them locally.</div><div><br></div></div><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div>Eric<br></div></div></div></div></div>
</div></div>