<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Sep 6, 2013 at 3:20 PM, Dave Ulrick <span dir="ltr">&lt;<a href="mailto:d-ulrick@comcast.net" target="_blank">d-ulrick@comcast.net</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi,<br>
<br>
We recently upgraded to TORQUE 4.2.4.1 so I took the opportunity to enable<br>
nVidia GPU support. It provides some GPU statistics in the &#39;pbsnodes&#39;<br>
output that my users might find of some use, but I&#39;m having a challenge<br>
with figuring out how to support it in a reliable and frugal manner.<br>
<br>
My issue has to do with how the GPU code gets the stats by calling<br>
&#39;nvidia-smi -q&#39; every few seconds. This is reasonably efficient if the<br>
nVidia driver is using persistence mode. If it isn&#39;t, the nVidia driver is<br>
loaded when nvidia-smi initializes the GPUs, then unloaded when nvidia-smi<br>
exits. On our compute nodes it takes .2-.5 wall seconds for the driver<br>
to load. This keeps an otherwise idle compute node busy enough that load<br>
average can go above 0.20. Persistence mode eliminates the<br>
driver load/unload overhead, but we&#39;re seeing that some user applications<br>
can fail when they try to initialize the GPUs if the previous application<br>
didn&#39;t properly release them. Such applications work fine when persistence<br>
mode is disabled.<br>
<br>
At this point our options seem to be:<br>
<br>
1. TORQUE GPU support enabled with nVidia persistence mode on: GPU stats<br>
and minimum driver overhead but questionable application reliability.<br>
<br>
2. TORQUE GPU support disabled with nVidia persistence mode off: no GPU<br>
stats with increased driver overhead but good application reliability.<br>
<br>
3. TORQUE GPU support enabled with nVidia persistence mode off: GPU stats<br>
and good app reliability but high driver overhead.<br>
<br>
If you&#39;re using TORQUE GPU support, have you noticed the issue I&#39;m seeing?<br>
If so, how have you chosen to cope? If you&#39;ve enabled nVidia persistence<br>
mode, how are your users managing to run GPU apps that can reliably<br>
initialize the GPUs even if the previous GPU app failed to release them<br>
properly? Our GPU users are using CUDA 5.0.<br>
<br>
Thanks,<br>
Dave<br>
<span class=""><font color="#888888">--<br>
Dave Ulrick<br>
<a href="mailto:d-ulrick@comcast.net">d-ulrick@comcast.net</a><br>
_______________________________________________<br>
torqueusers mailing list<br>
<a href="mailto:torqueusers@supercluster.org">torqueusers@supercluster.org</a><br>
<a href="http://www.supercluster.org/mailman/listinfo/torqueusers" target="_blank">http://www.supercluster.org/mailman/listinfo/torqueusers</a><br>
</font></span></blockquote></div><br></div><div class="gmail_extra">Dave, <br></div><div class="gmail_extra"><br></div><div class="gmail_extra">The following explains how to get rid of the nvidia-smi call and get torque to call the api instead.<br>
</div><div class="gmail_extra"><br>TORQUE configuration
                <p>There are three configuration (./configure) options available for use with Nvidia GPGPUs:</p>
                <ul><li value="1">--enable-nvidia-gpus</li><li value="2">--with-nvml-lib=DIR</li><li value="3">--with-nvml-include=DIR</li></ul>
                <p><span class="">--enable-nvidia-gpus</span> is used to enable the new features for the Nvidia GPGPUs. By default, the pbs_moms use the <span class="">nvidia_smi</span> command to interface with the Nvidia GPUs.</p>

                <div class="">
                    <p>./configure --enable-nvidia-gpus</p>
                </div>
                <p>To use the NVML (NVIDIA Management Library) API instead of nvidia-smi, configure TORQUE using <span class="">--with-nvml-lib=DIR</span> and <span class="">--with-nvml-include=DIR</span>. These commands specify the location of the <span class="">libnvidia-ml</span> library and the location of the <span class="">nvml.h</span> include file.</p>

                <div class="">
                    <p>./configure -with-nvml-lib=/usr/lib</p>
                    <p>--with-nvml-include=/usr/local/cuda/Tools/NVML</p></div>
                <p>By default, when TORQUE is configured with <span class="">--enable-nvidia-gpus</span> the <span class="">$TORQUE_HOME/nodes</span> file is automatically updated with the correct GPU count for each MOM node.</p>

                <p class=""><a class="" name="260xDriver"></a>GPU modes for NVIDIA 260.x driver</p>
                <ul><li value="1">0 – Default - Shared mode available for multiple processes</li><li value="2">1 – Exclusive - Only one COMPUTE thread is allowed to run on the GPU</li><li value="3">2 – Prohibited - No COMPUTE contexts are allowed to run on the GPU</li>
</ul>
                <p class=""><a class="" name="270xDriver"></a>GPU Modes for NVIDIA 270.x driver</p>
                <ul><li value="1">0 – Default - Shared mode available for multiple processes</li><li value="2">1 – Exclusive Thread - Only one COMPUTE thread is allowed to run on the GPU (v260 exclusive)</li><li value="3">
2 – Prohibited - No COMPUTE contexts are allowed to run on the GPU</li><li value="4">3 – Exclusive Process - Only one COMPUTE process is allowed to run on the GPU</li></ul>
                <p class=""><a class="" name="gpuStatus"></a></p><br></div><div class="gmail_extra"><br>-- <br>Ken Nielson<br>+1 801.717.3700 office +1 801.717.3738 fax<br>1712 S. East Bay Blvd, Suite 300  Provo, UT  84606<br>
<a href="http://www.adaptivecomputing.com" target="_blank">www.adaptivecomputing.com</a><br><br>
</div></div>