<div dir="ltr"><div class="gmail_extra">On Tue, May 27, 2014 at 10:51 AM, Frank Loeffler <span dir="ltr">&lt;<a href="mailto:knarf@cct.lsu.edu" target="_blank">knarf@cct.lsu.edu</a>&gt;</span> wrote:<br></div><div class="gmail_extra">
<div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="">On Tue, May 27, 2014 at 09:46:29AM -0500, Frank Loeffler wrote:<br>
&gt; Wouldn&#39;t that mean that every checkout on such a machine fails, because<br>
&gt; simfactory would unconditionally add these thorns to the thornlist,<br>
&gt; regardless of whether they are actually present or not?<br>
<br>
</div>Replying to myself: Is this really what Simfactory does - or does it<br>
only &quot;enable&quot; these thorns when they are present in the thornlist, but<br>
commented out? If the latter is the case I think it should be fine,<br>
although it might still confuse people that don&#39;t even look at the<br>
simfactory configuration of the machine, and use a thornlist with such a<br>
thorn commented out, but not present. Could we somehow let these users<br>
give a hint why Cactus fails with &#39;thorn not found&#39;, when the original<br>
thornlist clearly commented it out?<br></blockquote><div><br></div><div>As per our previous discussion, the standard ET thorn list will (and this is the current state)</div><div>1. Check out all CUDA and OpenCL thorns, on ALL machines</div>
<div>2. Disable all CUDA and OpenCL thorns when building Cactus, on ALL machines</div><div>If you are using this standard thorn list directly, then this is the only reasonable way to go; other choices don&#39;t make sense.<br>
</div><div><br></div><div>Simfactory pre-processes thorn lists, in the same way it pre-processes option lists and parameter files, expanding variables. It is important to have such a pre-processing step, since it avoids having to do this manually. This is how Simfactory &quot;fixes&quot; things for various machines, it is an important part of how it works.</div>
<div><br></div><div>Blue Waters supports both CUDA and OpenCL. We now have two options:</div><div>1. Use the standard ET thorn list there, i.e. disabling CUDA and OpenCL by default</div><div>2. Automatically enable CUDA and OpenCL thorns</div>
<div><br></div><div>As others mentioned, it does not make sense to enable CUDA and OpenCL everywhere, since it would not be supported everywhere. Enabling the thorns but adding a mechanism that turns these thorns into dummy thorns that do nothing also doesn&#39;t make sense -- think of a BSSN thorn written in CUDA; turning it into a dummy thorn that does nothing on a non-CUDA machine would just mean that BSSN evolution doesn&#39;t happen there. There are machines that support CUDA and there are machines that don&#39;t, and if you want to use CUDA then you will need to get an error message when you try to use a machine that doesn&#39;t support CUDA.</div>
<div><br></div><div>So -- how do we want to support CUDA on Blue Waters?</div><div><br></div><div>1. Ask people to manually change the thorn list, in effect asking them to maintain one thorn list per machine</div><div>2. Let Simfactory do this, since it already knows what works on what machine and what doesn&#39;t</div>
<div><br></div><div>I don&#39;t think there are any other choices.</div><div><br></div><div>In case you are wondering: What I propose won&#39;t break checking out thorns on any machine, and won&#39;t break the build on any machine, and won&#39;t require people to do special things for special machines. I regularly build on many machines, and I do so in an automated manner, and I don&#39;t maintain per-machine thorn lists or parameter files. Simfactory has an MDB that encodes all the machines&#39; peculiarities, and the information there is sufficient to use all of our machines efficiently, and in an automated manner.</div>
<div><br></div><div>There is the argument of &quot;this would surprise people&quot;. If we are worried about people being surprised that a CUDA thorn can&#39;t be activated on a non-CUDA machine, then maybe we need to raise our expectations a bit. If we are worried about the converse -- that people are surprised that CUDA is available on Blue Waters -- then maybe we should re-think our choice of what the default should be (currently: CUDA not available). I&#39;m sure people can live with CUDA &quot;suddenly&quot; being available on Blue Waters.</div>
<div><br></div><div>-erik</div></div><div><br></div>-- <br>Erik Schnetter &lt;<a href="mailto:schnetter@cct.lsu.edu" target="_blank">schnetter@cct.lsu.edu</a>&gt;<br><a href="http://www.perimeterinstitute.ca/personal/eschnetter/" target="_blank">http://www.perimeterinstitute.ca/personal/eschnetter/</a>
</div></div>