Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revisionBoth sides next revision | ||
doku:mathematica [2015/05/13 08:33] – [Parallel Usage] ir | doku:mathematica [2021/12/09 20:12] – [VSC-2] goldenberg | ||
---|---|---|---|
Line 1: | Line 1: | ||
======= Mathematica Batch Jobs ======= | ======= Mathematica Batch Jobs ======= | ||
- | ===== VSC-2 ===== | ||
- | ==== Sun Grid Engine ==== | ||
- | The simplest way is to create a file with your mathematica commands, e.g. ' | ||
- | < | ||
- | # the following option makes sure the job will run in the current directory | ||
- | #$ -cwd | ||
- | # this option makes sure the job has the same environment variables as the submission shell | ||
- | #$ -V | ||
- | MATHDIR=/ | + | ===== VSC-3 ===== |
- | $MATHDIR/ | + | === SLURM === |
- | </ | + | In order to be able to use Mathematica, |
- | If we name the above file as math-job.sh and place it in the same directory as math-input.m we can submit it from the same directory | + | |
< | < | ||
- | user@l01 $ qsub math-job.sh | + | [username@l32]$ module avail # select a Mathematica version |
+ | [username@l32]$ module load Mathematica/ | ||
+ | [username@l32]$ module list # check loaded modules | ||
+ | Currently Loaded Modulefiles: | ||
+ | 1) Mathematica/ | ||
</ | </ | ||
+ | (See also the introduction to the [[https:// | ||
- | The output will be left in file '' | + | Now, Mathematica can be called by |
- | + | ||
- | You could also incorporate mathematica commands in the job file itself, rather then have them in a separate file: | + | |
< | < | ||
- | #$ -cwd | + | [username@l32]$ math |
- | #$ -V | + | |
- | + | ||
- | MATHDIR=/ | + | |
- | + | ||
- | $MATHDIR/math << | + | |
- | 1+1 | + | |
- | 3*3 | + | |
- | END_MATH_COMMANDS | + | |
</ | </ | ||
- | The above notations means that everything between "<< | + | ==== Example: Parallel Mathematica Task ==== |
- | ==== Parallel Usage ==== | + | Mathematica script example '' |
- | Jobscript: | + | |
< | < | ||
- | #$ -N parallel | ||
- | #$ -q all.q | ||
- | #$ -pe mpich 32 | ||
+ | GetEnvironment[" | ||
+ | math = Environment[" | ||
+ | kernelsperhost = 16 | ||
+ | hosts=Import[" | ||
- | # $TMPDIR/ | ||
- | # copy this file to a temporary file which will be read in by Mathematica; | ||
- | # in the following the small Mathematics m-file will start a kernel on each machine; | ||
- | # since the kernel on the master is already running, | ||
- | # it is sufficient to start the kernels | ||
- | # beginning with the second host in the machines file. | ||
- | cp -v $TMPDIR/ | ||
- | |||
- | / | ||
- | |||
- | </ | ||
- | |||
- | Mathematica script named '' | ||
- | |||
- | < | ||
- | (* configuration for starting remote kernels *) | ||
Needs[" | Needs[" | ||
- | $RemoteCommand= " | + | $RemoteCommand = "ssh -x -f -l `3` `1` " |
- | (* initialize the kernels on all machines defined in the host file *) | ||
- | hosts=Import[" | + | (* first host with one kernel less *) |
+ | LaunchKernels[RemoteMachine[hosts[[1]], kernelsperhost-1]]; | ||
- | (* on the master node initialize only one kernel less, since one is already running *) | ||
imin=2; | imin=2; | ||
imax=Length[hosts]; | imax=Length[hosts]; | ||
idelta=1; | idelta=1; | ||
- | Do[ | + | Do[ |
- | Print[" | + | LaunchKernels[RemoteMachine[hosts[[i]], kernelsperhost]]; |
- | LaunchKernels[RemoteMachine[hosts[[i]]]];, | + | |
- | {i, | + | |
- | ] | + | |
- | |||
- | (* actual calculation *) | ||
primelist = ParallelTable[Prime[k], | primelist = ParallelTable[Prime[k], | ||
Print[primelist] | Print[primelist] | ||
- | |||
</ | </ | ||
- | + | sbatch job script | |
- | ===== VSC-3 ===== | + | '' |
- | === SLURM === | + | |
- | In order to be able to use Mathematica, | + | |
< | < | ||
- | [username@l32]$ module avail | + | #!/bin/bash |
- | [username@l32]$ module load Mathematica/ | + | # |
- | [username@l32]$ module list # check loaded modules | + | #SBATCH -J par |
- | Currently Loaded Modulefiles: | + | #SBATCH -N 2 |
- | 1) Mathematica/ | + | #SBATCH -L mathematica@vsc |
- | </ | + | |
- | (See also the introduction to the [[https:// | + | |
- | Now, Mathematica can be called by | ||
- | < | ||
- | [username@l32]$ math | ||
- | </ | ||
- | ==== Example: Parallel | + | module purge |
+ | module load Mathematica/10.0.2 # load desired version | ||
+ | |||
+ | |||
+ | export MATH_BIN=`which math` | ||
+ | #export MATH_PROC=16 | ||
+ | scontrol show hostnames $SLURM_NODELIST > nodelist | ||
+ | #execute prolog for getting access to license everywhere | ||
+ | srun hostname | ||
- | Using the same Mathematica script example '' | ||
- | < | ||
- | #!/bin/bash | ||
- | # | ||
- | #SBATCH -J par # job name | ||
- | #SBATCH -N 2 # number of nodes=2 | ||
- | #SBATCH --ntasks-per-node=16 | ||
- | #SBATCH --ntasks-per-core=1 | ||
- | #SBATCH --threads-per-core=1 | ||
- | math -run "<<math.m" | + | math -run < math-vsc3.m |
</ | </ | ||