This version is outdated by a newer approved version.DiffThis version (2021/12/09 20:11) is a draft.
Approvals: 0/1

This is an old revision of the document!


Mathematica Batch Jobs

The simplest way is to create a file with your mathematica commands, e.g. 'math-input.m', and just input that in the batch file.

# 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=/opt/sw/Mathematica/90/bin
$MATHDIR/math < math-input.m

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 with

user@l01 $ qsub math-job.sh

The output will be left in file math-job.sh.o$JOB_ID and any errors in math-job.e$JOB_ID.

You could also incorporate mathematica commands in the job file itself, rather then have them in a separate file:

#$ -cwd
#$ -V

MATHDIR=/opt/sw/Mathematica/90/bin

$MATHDIR/math <<END_MATH_COMMANDS
1+1
3*3
END_MATH_COMMANDS

The above notations means that everything between “«END_MATH_COMMANDS” and “END_MATH_COMMANDS” will be used as math program's input. You can again submit this job with qsub.

SLURM

In order to be able to use Mathematica, you have to load the program with the module load xyz command

[username@l32]$ module avail  # select a Mathematica version
[username@l32]$ module load Mathematica/10.0.2 # load desired version
[username@l32]$ module list   # check loaded modules
Currently Loaded Modulefiles:
  1) Mathematica/10.0.2  

(See also the introduction to the module command.)

Now, Mathematica can be called by

[username@l32]$ math 

Mathematica script example math-vsc3.m:

GetEnvironment["MATH_BIN"]
math = Environment["MATH_BIN"]
kernelsperhost = 16
hosts=Import["nodelist","List"];



Needs["SubKernels`RemoteKernels`"]
$RemoteCommand = "ssh -x -f -l `3` `1` " <> math <> " -mathlink -linkmode Connect `4` -linkname '`2`' -subkernel -noinit" 


(* first host with one kernel less *)
LaunchKernels[RemoteMachine[hosts[[1]], kernelsperhost-1]];

imin=2;
imax=Length[hosts];
idelta=1;

Do[ 
        LaunchKernels[RemoteMachine[hosts[[i]], kernelsperhost]];
        , {i, imin, imax, idelta}] 

primelist = ParallelTable[Prime[k], {k, 1, 20000000}];
Print[primelist]

sbatch job script jobPar.sh:

#!/bin/bash
#
#SBATCH -J par
#SBATCH -N 2
#SBATCH -L mathematica@vsc


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


math -run < math-vsc3.m
[username@l32]$ sbatch jobPar.sh      # submit your job
[username@l32]$ squeue -u username    # check state of your job
  • doku/mathematica.1639080712.txt.gz
  • Last modified: 2021/12/09 20:11
  • by goldenberg