<div dir="ltr"><br><div class="gmail_extra"><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>
(where target depends on ~hundreds of different and mostly independent<br>
tests). But my understanding from recent Google searching is that the<br>
-j option for GNU Make is not MPI-aware, i.e., only works for the<br>
cores for a single computer (node) in a cluster.  So in a cluster you<br>
would have to assign the above task to just one node and simply accept<br>
that you cannot scale NNN up to the total number of cores in that<br>
cluster.<br></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br></blockquote></div><div><br></div><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/">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">https://stackoverflow.com/questions/32752446/using-compiler-prefix-commands-with-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><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div>Eric<br></div></div></div></div></div>
</div></div>