<div dir="ltr">Thanks for your timely reply.<div><br></div><div>We are in fact trying to copy to /local which is local to each node.  So far the tmpdir is only setup on one node and it never makes an appearance on the other nodes.  The grad student and professor I&#39;m working with are using openmpi and are familiar with the mpirun commands.</div>

<div><br></div><div>I think the idea is that with larger jobs (and I have yet to get a handle on what that means) this would be the approach to offload work and disk io.</div><div><br></div><div>We have a situation similar to what you describe where the /home filesystem is exported to all the nodes via a panasas filesystem.  </div>

<div>Panasas seems like a pretty good solution to me . . . so far.  (I&#39;ve done so many different iterations of disk subsystems, IBM SSA, Hitachi, StorageTek, Sun, Netapp that I&#39;m kind of jaded by now.)  We can run jobs on many nodes with no problem this way.  The working directory is the user&#39;s home directory.  </div>

<div><br></div><div>We&#39;ll have to do some more experiments.  The staging idea looks like it has more promise.  We have a professor who is doing some genome research and he uses large (there&#39;s that vague word again) data sets, so that might be a better approach for what he&#39;s doing. </div>

<div><br></div><div>Thanks again all for your advice.  And have a good weekend.  I&#39;ll let you know how our experiments go.</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Nov 1, 2013 at 1:53 PM, Gus Correa <span dir="ltr">&lt;<a href="mailto:gus@ldeo.columbia.edu" target="_blank">gus@ldeo.columbia.edu</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">PS -<br>
<br>
A) For an alternative method to stagein/stageout files, see:<br>
<br>
<a href="http://docs.adaptivecomputing.com/torque/help.htm#topics/6-dataManagement/fileStaging.htm?Highlight=stage%20in" target="_blank">http://docs.adaptivecomputing.com/torque/help.htm#topics/6-dataManagement/fileStaging.htm?Highlight=stage%20in</a><br>


<br>
B) If your $TMPDIR needs to be created locally on the nodes,<br>
you may want to do this using a prologue script,<br>
and delete it when the job ends with an epilogue script:<br>
<br>
<a href="http://docs.adaptivecomputing.com/torque/help.htm#topics/12-appendices/prologueAndEpliogueScripts.htm?Highlight=epilog%20script" target="_blank">http://docs.adaptivecomputing.com/torque/help.htm#topics/12-appendices/prologueAndEpliogueScripts.htm?Highlight=epilog%20script</a><br>


<div class="HOEnZb"><div class="h5"><br>
<br>
On 11/01/2013 03:42 PM, Gus Correa wrote:<br>
&gt; Hi Jack<br>
&gt;<br>
&gt; 1. You need to enable job scheduling:<br>
&gt;<br>
&gt; qmgr -c &#39;set server scheduling = True&#39;<br>
&gt;<br>
&gt;<br>
&gt; 2. I am not sure I understood right, but it looks like to<br>
&gt; me that your $TMPDIR is on a local disk on the compute nodes, right?<br>
&gt;<br>
&gt; Staging executables and data in and out to local disk<br>
&gt; is possible (but may be painful).<br>
&gt; If you want to do this for parallel jobs, you need to copy<br>
&gt; the executable and data to *all* $TMPDIR disks on each node<br>
&gt; participating in that particular job.<br>
&gt; This is probably why your 2-node job fails.<br>
&gt; And this is also why staging in is painful (copying to all nodes).<br>
&gt;<br>
&gt;<br>
&gt; 3. Instead of item 2. above, it is much easier to have a NFS shared<br>
&gt; directory (or directories) across the whole cluster where<br>
&gt; the data and executables live. In this case you don&#39;t need to<br>
&gt; copy anything to local disks.<br>
&gt; It is enough to add to the job script a like like this:<br>
&gt;<br>
&gt; cd $PBS_O_WORKDIR<br>
&gt;<br>
&gt; which will cd to the directory from which the job was launched with qsub<br>
&gt; (and is presumably the work directory where the executable and data are).<br>
&gt;<br>
&gt; For a modest sized cluster (which yours seems to be, 30 nodes or so) NFS<br>
&gt; should work OK, unless the jobs are very IO intensive.<br>
&gt;<br>
&gt; I hope this helps,<br>
&gt; Gus Correa<br>
&gt;<br>
&gt; On 11/01/2013 03:11 PM, Jack Vant wrote:<br>
&gt;&gt; First, pardon me for my obvious ignorance. I&#39;m new to hpc<br>
&gt;&gt; administration and I&#39;ve managed to get torque and maui working with some<br>
&gt;&gt; queues, but I now have eager grad students and professors who want to<br>
&gt;&gt; use their cluster. We&#39;re having a problem when we try and run parallel<br>
&gt;&gt; jobs with openmpi.<br>
&gt;&gt;<br>
&gt;&gt; More specifically, we&#39;re trying to run parallel jobs with openmpi while<br>
&gt;&gt; making use of the $tmpdir variable as a staging area of sorts. The<br>
&gt;&gt; theory is that users with large jobs would copy their executables,<br>
&gt;&gt; configs, etc. into the $tmpdir and when done copy the results back out.<br>
&gt;&gt; We can run a job against one node, but when we try a couple the<br>
&gt;&gt; $tmpdir is only created on one node and the job fails to run. We&#39;re<br>
&gt;&gt; trying to emulate something we&#39;ve seen explained well by the folks at<br>
&gt;&gt; Wayne State Something like this to do all the copying:<br>
&gt;&gt;<br>
&gt;&gt; cd $TMPDIR<br>
&gt;&gt; cp /wsu/home/at/at80/at8036/pbs/job_name/script_file $TMPDIR<br>
&gt;&gt; cp /wsu/home/at/at80/at8036/pbs/job_name/data_file $TMPDIR<br>
&gt;&gt;<br>
&gt;&gt; $TMPDIR/$myexefile<br>
&gt;&gt;<br>
&gt;&gt; mv $TMPDIR/* /wsu/home/at/at80/at8036/pbs/job_name/completed/.<br>
&gt;&gt;<br>
&gt;&gt; I&#39;m leaving out the PBS directives stanza.<br>
&gt;&gt;<br>
&gt;&gt; We are using Torque version 4.2.2 and Maui 3.3.1. We haven&#39;t tweaked<br>
&gt;&gt; Maui at all. It&#39;s the default install right now, and the Torque setup<br>
&gt;&gt; is pretty minimal with queues and server that look like this:<br>
&gt;&gt;<br>
&gt;&gt; So after many experiments we are wondering why torque perseverates on<br>
&gt;&gt; node-32 or node-22? (which is where the $tmpdir gets created) Why<br>
&gt;&gt; doesn&#39;t it setup the environment on the other nodes even though they are<br>
&gt;&gt; allocated?<br>
&gt;&gt;<br>
&gt;&gt; I&#39;m including the results of qmgr -c &#39;p s&#39;<br>
&gt;&gt;<br>
&gt;&gt; #<br>
&gt;&gt;<br>
&gt;&gt; # Create queues and set their attributes.<br>
&gt;&gt;<br>
&gt;&gt; #<br>
&gt;&gt;<br>
&gt;&gt; #<br>
&gt;&gt;<br>
&gt;&gt; # Create and define queue cpu.q<br>
&gt;&gt;<br>
&gt;&gt; #<br>
&gt;&gt;<br>
&gt;&gt; create queue cpu.q<br>
&gt;&gt;<br>
&gt;&gt; set queue cpu.q queue_type = Execution<br>
&gt;&gt;<br>
&gt;&gt; set queue cpu.q acl_host_enable = False<br>
&gt;&gt;<br>
&gt;&gt; set queue cpu.q acl_hosts = node-29.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue cpu.q acl_hosts += node-28.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue cpu.q acl_hosts += node-27.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue cpu.q acl_hosts += node-26.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue cpu.q acl_hosts += node-25.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue cpu.q acl_hosts += node-24.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue cpu.q acl_hosts += node-23.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue cpu.q acl_hosts += node-32.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue cpu.q acl_hosts += node-31.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue cpu.q acl_hosts += node-30.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue cpu.q resources_max.walltime = 240:00:00<br>
&gt;&gt;<br>
&gt;&gt; set queue cpu.q resources_min.walltime = 00:00:00<br>
&gt;&gt;<br>
&gt;&gt; set queue cpu.q resources_default.neednodes = cpu<br>
&gt;&gt;<br>
&gt;&gt; set queue cpu.q enabled = True<br>
&gt;&gt;<br>
&gt;&gt; set queue cpu.q started = True<br>
&gt;&gt;<br>
&gt;&gt; #<br>
&gt;&gt;<br>
&gt;&gt; # Create and define queue gpu.q<br>
&gt;&gt;<br>
&gt;&gt; #<br>
&gt;&gt;<br>
&gt;&gt; create queue gpu.q<br>
&gt;&gt;<br>
&gt;&gt; set queue gpu.q queue_type = Execution<br>
&gt;&gt;<br>
&gt;&gt; set queue gpu.q acl_host_enable = False<br>
&gt;&gt;<br>
&gt;&gt; set queue gpu.q acl_hosts = node-19.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue gpu.q acl_hosts += node-09.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue gpu.q acl_hosts += node-18.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue gpu.q acl_hosts += node-08.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue gpu.q acl_hosts += node-17.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue gpu.q acl_hosts += node-07.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue gpu.q acl_hosts += node-16.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue gpu.q acl_hosts += node-06.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue gpu.q acl_hosts += node-15.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue gpu.q acl_hosts += node-05.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue gpu.q acl_hosts += node-14.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue gpu.q acl_hosts += node-04.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue gpu.q acl_hosts += node-13.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue gpu.q acl_hosts += node-03.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue gpu.q acl_hosts += node-22.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue gpu.q acl_hosts += node-12.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue gpu.q acl_hosts += node-02.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue gpu.q acl_hosts += node-21.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue gpu.q acl_hosts += node-11.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue gpu.q acl_hosts += node-01.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue gpu.q acl_hosts += node-20.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue gpu.q acl_hosts += node-10.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue gpu.q resources_max.walltime = 240:00:00<br>
&gt;&gt;<br>
&gt;&gt; set queue gpu.q resources_min.walltime = 00:00:00<br>
&gt;&gt;<br>
&gt;&gt; set queue gpu.q resources_default.neednodes = gpu<br>
&gt;&gt;<br>
&gt;&gt; set queue gpu.q enabled = True<br>
&gt;&gt;<br>
&gt;&gt; set queue gpu.q started = True<br>
&gt;&gt;<br>
&gt;&gt; #<br>
&gt;&gt;<br>
&gt;&gt; # Create and define queue batch<br>
&gt;&gt;<br>
&gt;&gt; #<br>
&gt;&gt;<br>
&gt;&gt; create queue batch<br>
&gt;&gt;<br>
&gt;&gt; set queue batch queue_type = Execution<br>
&gt;&gt;<br>
&gt;&gt; set queue batch acl_host_enable = False<br>
&gt;&gt;<br>
&gt;&gt; set queue batch acl_hosts = node-29.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue batch acl_hosts += node-19.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue batch acl_hosts += node-09.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue batch acl_hosts += node-28.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue batch acl_hosts += node-18.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue batch acl_hosts += node-08.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue batch acl_hosts += node-27.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue batch acl_hosts += node-17.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue batch acl_hosts += node-07.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue batch acl_hosts += node-26.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue batch acl_hosts += node-16.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue batch acl_hosts += node-06.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue batch acl_hosts += node-25.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue batch acl_hosts += node-15.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue batch acl_hosts += node-05.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue batch acl_hosts += node-24.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue batch acl_hosts += node-14.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue batch acl_hosts += node-04.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue batch acl_hosts += node-23.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue batch acl_hosts += node-13.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue batch acl_hosts += node-03.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue batch acl_hosts += node-32.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue batch acl_hosts += node-22.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue batch acl_hosts += node-12.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue batch acl_hosts += node-02.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue batch acl_hosts += node-31.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue batch acl_hosts += node-21.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue batch acl_hosts += node-11.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue batch acl_hosts += node-01.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue batch acl_hosts += node-30.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue batch acl_hosts += node-20.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue batch acl_hosts += node-10.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue batch resources_max.walltime = 240:00:00<br>
&gt;&gt;<br>
&gt;&gt; set queue batch resources_min.walltime = 00:00:00<br>
&gt;&gt;<br>
&gt;&gt; set queue batch resources_default.walltime = 01:00:00<br>
&gt;&gt;<br>
&gt;&gt; set queue batch enabled = True<br>
&gt;&gt;<br>
&gt;&gt; set queue batch started = True<br>
&gt;&gt;<br>
&gt;&gt; #<br>
&gt;&gt;<br>
&gt;&gt; # Create and define queue all.q<br>
&gt;&gt;<br>
&gt;&gt; #<br>
&gt;&gt;<br>
&gt;&gt; create queue all.q<br>
&gt;&gt;<br>
&gt;&gt; set queue all.q queue_type = Execution<br>
&gt;&gt;<br>
&gt;&gt; set queue all.q acl_host_enable = False<br>
&gt;&gt;<br>
&gt;&gt; set queue all.q acl_hosts = node-29.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue all.q acl_hosts += node-19.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue all.q acl_hosts += node-09.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue all.q acl_hosts += node-28.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue all.q acl_hosts += node-18.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue all.q acl_hosts += node-08.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue all.q acl_hosts += node-27.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue all.q acl_hosts += node-17.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue all.q acl_hosts += node-07.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue all.q acl_hosts += node-26.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue all.q acl_hosts += node-16.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue all.q acl_hosts += node-06.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue all.q acl_hosts += node-25.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue all.q acl_hosts += node-15.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue all.q acl_hosts += node-05.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue all.q acl_hosts += node-24.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue all.q acl_hosts += node-14.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue all.q acl_hosts += node-04.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue all.q acl_hosts += node-23.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue all.q acl_hosts += node-13.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue all.q acl_hosts += node-03.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue all.q acl_hosts += node-32.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue all.q acl_hosts += node-22.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue all.q acl_hosts += node-12.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue all.q acl_hosts += node-02.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue all.q acl_hosts += node-31.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue all.q acl_hosts += node-21.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue all.q acl_hosts += node-11.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue all.q acl_hosts += node-01.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue all.q acl_hosts += node-30.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue all.q acl_hosts += node-20.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue all.q acl_hosts += node-10.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set queue all.q resources_max.walltime = 240:00:00<br>
&gt;&gt;<br>
&gt;&gt; set queue all.q resources_min.walltime = 00:00:00<br>
&gt;&gt;<br>
&gt;&gt; set queue all.q resources_default.neednodes = all<br>
&gt;&gt;<br>
&gt;&gt; set queue all.q enabled = True<br>
&gt;&gt;<br>
&gt;&gt; set queue all.q started = True<br>
&gt;&gt;<br>
&gt;&gt; #<br>
&gt;&gt;<br>
&gt;&gt; # Set server attributes.<br>
&gt;&gt;<br>
&gt;&gt; #<br>
&gt;&gt;<br>
&gt;&gt; set server acl_hosts = master.cm.cluster<br>
&gt;&gt;<br>
&gt;&gt; set server default_queue = batch<br>
&gt;&gt;<br>
&gt;&gt; set server log_events = 511<br>
&gt;&gt;<br>
&gt;&gt; set server mail_from = adm<br>
&gt;&gt;<br>
&gt;&gt; set server scheduler_iteration = 600<br>
&gt;&gt;<br>
&gt;&gt; set server node_check_rate = 150<br>
&gt;&gt;<br>
&gt;&gt; set server tcp_timeout = 300<br>
&gt;&gt;<br>
&gt;&gt; set server job_stat_rate = 45<br>
&gt;&gt;<br>
&gt;&gt; set server poll_jobs = True<br>
&gt;&gt;<br>
&gt;&gt; set server mom_job_sync = True<br>
&gt;&gt;<br>
&gt;&gt; set server next_job_number = 372<br>
&gt;&gt;<br>
&gt;&gt; set server moab_array_compatible = True<br>
&gt;&gt;<br>
&gt;&gt; [roo<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; --<br>
&gt;&gt; Jack Vant<br>
&gt;&gt; System Engineer - HPC<br>
&gt;&gt; Office of Information Technology<br>
&gt;&gt; Boise State University<br>
&gt;&gt; 208-426-4446<br>
&gt;&gt; 208-863-0031<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; torqueusers mailing list<br>
&gt;&gt; <a href="mailto:torqueusers@supercluster.org">torqueusers@supercluster.org</a><br>
&gt;&gt; <a href="http://www.supercluster.org/mailman/listinfo/torqueusers" target="_blank">http://www.supercluster.org/mailman/listinfo/torqueusers</a><br>
&gt;<br>
<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>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div dir="ltr">Jack Vant<br>System Engineer - HPC<br>Office of Information Technology<br>Boise State University<br>208-426-4446<br>208-863-0031</div>


</div>