<html><head><meta http-equiv="Content-Type" content="text/html charset=iso-8859-1"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">I add CUDA_VISIBLE_DEVICES to users' pbs scripts using the qsub wrapper. If they need to pass the device numbers as an input, then they should always start from zero no matter what their real device numbers are. So, I defined another variable CUDA_DEVICES and asked the users to use this.<div><br></div><div>As an example, let's say there are 8 GPUs on the host. If user requests 3 gpus, and he/she got 0,1,2. Another user rquests 3 gpus and he/she got 3,4,5.</div><div><br></div><div>Then CUDA_VISIBLE_DEVICES for the first user is 0,1,2</div><div>CUDA_DEVICES for the first user is 0 1 2</div><div><br></div><div>For the second user CUDA_VISIBLE_DEVICES is 3,4,5</div><div>CUDA_DEVICES is 0,1,2</div><div><br></div><div>Only problem is we allow users logging onto machines where his/her jobs are running. This means, they can login onto the machine and run jobs on other gpus as well.</div><div>Another thing is I have asked my users to not to redefine CUDA_VISIBLE_DEVICES in their scripts.</div><div><div><br></div><div>These two functions in my qsub wrapper take care of this.</div><div><br></div><div><div>function define_cuda_devices ()</div><div>{</div><div>&nbsp; &nbsp; &nbsp; &nbsp; if [ $user_shell = 'bash' ];then</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo 'export CUDA_DEVICES=`seq 0 $(($(grep -c $HOSTNAME $PBS_GPUFILE)-1))`'</div><div>&nbsp; &nbsp; &nbsp; &nbsp; elif [ $user_shell = 'tcsh' ];then</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo 'setenv CUDA_DEVICES `seq 0 $(($(grep -c $HOSTNAME $PBS_GPUFILE)-1))`'</div><div>&nbsp; &nbsp; &nbsp; &nbsp; fi</div><div>}</div><div><br></div><div>function define_cuda_visible_devices ()</div><div>{</div><div>&nbsp; &nbsp; &nbsp; &nbsp; if [ $user_shell = 'bash' ];then</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo 'export CUDA_VISIBLE_DEVICES=`grep $HOSTNAME $PBS_GPUFILE | awk -F'\''-gpu'\'' '\''{printf A$2;A=","}'\''`'</div><div>&nbsp; &nbsp; &nbsp; &nbsp; elif [ $user_shell = 'tcsh' ];then</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo 'setenv CUDA_VISIBLE_DEVICES `grep $HOSTNAME $PBS_GPUFILE | awk -F'\''-gpu'\'' '\''{printf A$2;A=","}'\''`'</div><div>&nbsp; &nbsp; &nbsp; &nbsp; fi</div><div>}</div><div><br></div><div><br></div><div>Sreedhar.</div><div><br></div><div><br></div><div><br><div><div>On Oct 2, 2013, at 2:25 PM, Jagga Soorma &lt;<a href="mailto:jagga13@gmail.com">jagga13@gmail.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div dir="ltr">Thanks Michael. &nbsp;That was the problem. &nbsp;After building it via rpmbuild I was able to get the gpu_status reported. &nbsp;Any idea how I can make sure our jobs are spread across the gpu's. &nbsp;Is there anything I need to do during job submission or will it just spread 1 job per gpu?<div>
<br></div><div>Thanks,</div><div>-J</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Oct 2, 2013 at 10:45 AM, Michael Jennings <span dir="ltr">&lt;<a href="mailto:mej@lbl.gov" target="_blank">mej@lbl.gov</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Wednesday, 02 October 2013, at 10:38:57 (-0700),<br>
<div class="im">Jagga Soorma wrote:<br>
<br>
&gt; Thanks for your reply Eva. &nbsp;I just tried compiling the 4.2.5 release but<br>
&gt; still can't see the gpu status. &nbsp;Here is what I have done:<br>
&gt;<br>
&gt; --<br>
&gt; On server did:<br>
&gt; ./configure --enable-nvidia-gpus --enable-debug<br>
&gt; make<br>
&gt; make install<br>
&gt;<br>
&gt; On client did:<br>
&gt; ./configure --enable-nvidia-gpus --enable-debug<br>
&gt; make<br>
&gt; make rpm<br>
&gt; installed the torque and torque-client rpm<br>
<br>
</div>This won't work. &nbsp;There's currently no GPU support in the spec file.<br>
You'll need to do:<br>
<br>
rpmbuild --define 'acflags --enable-nvidia-gpus' --with debug -ta torque-4.2.5.tar.gz<br>
<br>
and then install the resulting torque and torque-client RPMs.<br>
<span class="HOEnZb"><font color="#888888"><br>
Michael<br>
<br>
--<br>
Michael Jennings &lt;<a href="mailto:mej@lbl.gov">mej@lbl.gov</a>&gt;<br>
Senior HPC Systems Engineer<br>
High-Performance Computing Services<br>
Lawrence Berkeley National Laboratory<br>
Bldg 50B-3209E &nbsp; &nbsp; &nbsp; &nbsp;W: <a href="tel:510-495-2687" value="+15104952687">510-495-2687</a><br>
MS 050B-3209 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;F: <a href="tel:510-486-8615" value="+15104868615">510-486-8615</a><br>
</font></span><div class="HOEnZb"><div class="h5">_______________________________________________<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>
</div></div></blockquote></div><br></div>
_______________________________________________<br>torqueusers mailing list<br><a href="mailto:torqueusers@supercluster.org">torqueusers@supercluster.org</a><br>http://www.supercluster.org/mailman/listinfo/torqueusers<br></blockquote></div><br></div></div></div></body></html>