...
To run a shorter "interactive" session (very useful for debugging since you don't have to wait for a batch job to start after fixing each typo:
Code Block |
---|
monarin@cori02: salloc -C knl -N 1 -t 1:00:00 -q interactive -A lcls --image=docker:slaclcls/lcls-py2-root:latest
salloc: Pending job allocation 32421205
salloc: job 32421205 queued and waiting for resources
salloc: job 32421205 has been allocated resources
salloc: Granted job allocation 32421205
salloc: Waiting for resource configuration
salloc: Nodes nid02346 are ready for job
monarin@nid02346: srun -n 3 shifter ./run.sh
2
0
1
monarin@nid02346: cat run.sh
#!/bin/bash
source /img/conda.local/env.local
source activate psana_base
python test_mpi.py |
And another approach that gets you a prompt "inside" the shifter container's conda environment:
Code Block |
---|
(login to a cori login node, then execute this command which allocates a node for you to use for 1 hour) salloc -C knl -N 1 -t 1:00:00 -q interactive -A lcls --image=docker:slaclcls/lcls-py2-root:latest (once that command completes) shifter /bin/bash (get a shell in the shifter image) source /img/conda.local/env.sh (setup conda) source activate psana_base (activate the appropriate conda environment) export SIT_PSDM_DATA=/global/cscratch1/sd/psdatmgr/data/psdm (psana_base) cpo@nid02387:~$ more ~/junk.py from psana import * dsource = MPIDataSource('exp=mfx11116:run=602:dir=/global/cscratch1/sd/psdatmgr/data/psdm/MFX/mfx11116/xtc:smd') det = Detector('Jungfrau1M') for nevt,evt in enumerate(dsource.events()): calib = det.calib(evt) if calib is None: print 'none' else: print calib.shape if nevt>5: break (psana_base) cpo@nid02387:~$ python junk.py (2, 512, 1024) (2, 512, 1024) (2, 512, 1024) (2, 512, 1024) (2, 512, 1024) (2, 512, 1024) (2, 512, 1024) (psana_base) cpo@nid02387:~$ |
...