<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
</head>
<body style="font-family: 'Segoe UI',Frutiger,'Frutiger Linotype','Dejavu Sans','Helvetica Neue',Arial,sans-serif; font-size: 14px;">
<div class="hiri-body-wrapper" contenteditable="true">
<div>Is there a way to configure Slurm not to export the environment of the submission node by default?<br>
 </div>
</div>
<div class="hiri-signature-wrapper" contenteditable="true">-- 
<div><strong>Davide Vanzo, PhD</strong></div>
<div>Application Developer</div>
<div>Adjunct Assistant Professor of Chemical and Biomolecular Engineering</div>
<div>Advanced Computing Center for Research and Education (ACCRE)</div>
<div>www.accre.vanderbilt.edu</div>
</div>
 
<div class="hiri-extra" contenteditable="true">
<p>On 2017-12-19 08:12:39-06:00 Jeffrey Frey wrote:</p>
<blockquote style="padding-left:10px; border-left:1px solid #ccc; margin:0">
<div>
<pre class="hiri-plaintext-quote">Don't propagate the submission environment:

srun --export=NONE myprogram



&amp;gt; On Dec 19, 2017, at 8:37 AM, Yair Yarom &lt;irush@cs.huji.ac.il&gt; wrote:
&amp;gt; 
&amp;gt; 
&amp;gt; Thanks for your reply,
&amp;gt; 
&amp;gt; The problem is that users are running on the submission node e.g.
&amp;gt; 
&amp;gt; module load tensorflow
&amp;gt; srun myprogram
&amp;gt; 
&amp;gt; So they get the tensorflow version (and PATH/PYTHONPATH) of the
&amp;gt; submission node's version of tensorflow (and any additional default
&amp;gt; modules).
&amp;gt; 
&amp;gt; There is never a chance to run the "module add ${SLURM_CONSTRAINT}" or
&amp;gt; remove the unwanted modules that were loaded (maybe automatically) on
&amp;gt; the submission node and aren't working on the execution node.
&amp;gt; 
&amp;gt; Thanks,
&amp;gt;    Yair.
&amp;gt; 
&amp;gt; On Tue, Dec 19 2017, "Loris Bennett" &lt;loris.bennett@fu-berlin.de&gt; wrote:
&amp;gt; 
&amp;gt;&amp;gt; Hi Yair,
&amp;gt;&amp;gt; 
&amp;gt;&amp;gt; Yair Yarom &lt;irush@cs.huji.ac.il&gt; writes:
&amp;gt;&amp;gt; 
&amp;gt;&amp;gt;&amp;gt; Hi list,
&amp;gt;&amp;gt;&amp;gt; 
&amp;gt;&amp;gt;&amp;gt; We use here lmod[1] for some software/version management. There are two
&amp;gt;&amp;gt;&amp;gt; issues encountered (so far):
&amp;gt;&amp;gt;&amp;gt; 
&amp;gt;&amp;gt;&amp;gt; 1. The submission node can have different software than the execution
&amp;gt;&amp;gt;&amp;gt;   nodes - different cpu, different gpu (if any), infiniband, etc. When
&amp;gt;&amp;gt;&amp;gt;   a user runs 'module load something' on the submission node, it will
&amp;gt;&amp;gt;&amp;gt;   pass the wrong environment to the task in the execution
&amp;gt;&amp;gt;&amp;gt;   node. e.g. "module load tensorflow" can load a different version
&amp;gt;&amp;gt;&amp;gt;   depending on the nodes.
&amp;gt;&amp;gt;&amp;gt; 
&amp;gt;&amp;gt;&amp;gt; 2. There are some modules we want to load by default, and again this can
&amp;gt;&amp;gt;&amp;gt;   be different between nodes (we do this by source'ing /etc/lmod/lmodrc
&amp;gt;&amp;gt;&amp;gt;   and ~/.lmodrc).
&amp;gt;&amp;gt;&amp;gt; 
&amp;gt;&amp;gt;&amp;gt; For issue 1, we instruct users to run the "module load" in their batch
&amp;gt;&amp;gt;&amp;gt; script and not before running sbatch, but issue 2 is more problematic.
&amp;gt;&amp;gt;&amp;gt; 
&amp;gt;&amp;gt;&amp;gt; My current solution is to write a TaskProlog script that runs "module
&amp;gt;&amp;gt;&amp;gt; purge" and "module load" and export/unset the changed environment
&amp;gt;&amp;gt;&amp;gt; variables. I was wondering if anyone encountered this issue and have a
&amp;gt;&amp;gt;&amp;gt; less cumbersome solution.
&amp;gt;&amp;gt;&amp;gt; 
&amp;gt;&amp;gt;&amp;gt; Thanks in advance,
&amp;gt;&amp;gt;&amp;gt;    Yair.
&amp;gt;&amp;gt;&amp;gt; 
&amp;gt;&amp;gt;&amp;gt; [1] https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.tacc.utexas.edu%2Fresearch-development%2Ftacc-projects%2Flmod&amp;amp;data=02%7C01%7Cdavide.vanzo%40vanderbilt.edu%7C0ea39bfde2134f5d08ad08d546ea871c%7Cba5a7f39e3be4ab3b45067fa80faecad%7C0%7C0%7C636492895581644581&amp;amp;sdata=bG2SKduxy19tfm52%2Boma59eYSHyi798arSmnOiS1x64%3D&amp;amp;reserved=0
&amp;gt;&amp;gt; 
&amp;gt;&amp;gt; I don't fully understand your use-case, but, assuming you can divide
&amp;gt;&amp;gt; your nodes up by some feature, could you define a module per feature
&amp;gt;&amp;gt; which just loads the specific modules needed for that category, e.g. in
&amp;gt;&amp;gt; the batch file you would have
&amp;gt;&amp;gt; 
&amp;gt;&amp;gt;   #SBATCH --constraint=shiny_and_new
&amp;gt;&amp;gt; 
&amp;gt;&amp;gt;   module add ${SLURM_CONSTRAINT}
&amp;gt;&amp;gt; 
&amp;gt;&amp;gt; and would have a module file 'shiny_and_new', with contents like, say,
&amp;gt;&amp;gt; 
&amp;gt;&amp;gt;  module add tensorflow/2.0
&amp;gt;&amp;gt;  module add cuda/9.0
&amp;gt;&amp;gt; 
&amp;gt;&amp;gt; whereas the module 'rusty_and_old' would contain
&amp;gt;&amp;gt; 
&amp;gt;&amp;gt;  module add tensorflow/0.1
&amp;gt;&amp;gt;  module add cuda/0.2
&amp;gt;&amp;gt; 
&amp;gt;&amp;gt; Would that help?
&amp;gt;&amp;gt; 
&amp;gt;&amp;gt; Cheers,
&amp;gt;&amp;gt; 
&amp;gt;&amp;gt; Loris
&amp;gt; 


::::::::::::::::::::::::::::::::::::::::::::::::::::::
Jeffrey T. Frey, Ph.D.
Systems Programmer V / HPC Management
Network &amp;amp; Systems Services / College of Engineering
University of Delaware, Newark DE  19716
Office: (302) 831-6034  Mobile: (302) 419-4976
::::::::::::::::::::::::::::::::::::::::::::::::::::::





&lt;/irush@cs.huji.ac.il&gt;&lt;/loris.bennett@fu-berlin.de&gt;&lt;/irush@cs.huji.ac.il&gt;</pre>
</div>
</blockquote>
</div>
</body>
</html>