Skip to content

Mathematica

Mathematica logo

Description and Overview

Mathematica is a fully integrated environment for technical computing. It performs symbolic manipulation of equations, integrals, differential equations, and most other mathematical expressions. Numeric results can be evaluated as well.

How to Use Mathematica

Running in the Notebook Interface

To use the graphical interface to Mathematica, you will need to connect to a NERSC machine with a graphical environment. You can do so with X11, but performance will be much better if you use NoMachine (NX). In NoMachine, you can simply click the Perlmutter button to get a login shell that has graphics enabled. In X11, you can log in with -Y.

mylaptop$ ssh -Y perlmutter.nersc.gov

Tip

We highly recommend the use of NX to invoke a graphical session and run the Mathematica notebook interface.

Next, you will need to load the Mathematica module. To use the default version of Mathematica, use

nersc$ module load mathematica

To start up Mathematica once the module is loaded, you can simply type

nersc$ mathematica

You should see the Mathematica logo ("Spikey") appear, followed by the application interface.

Mathematica Licensing

NERSC's Mathematica licenses are for a limited number of seats. Once you are finished using Mathematica, please be sure you disconnect your terminal session so that your seat becomes available to the next user. If you use NX, remember to exit Mathematica within your NX session before closing, as NX will otherwise keep the session alive, preventing other users from launching Mathematica.

When starting up a new Mathematica session, check to be sure that you don't already have an instance of Mathematica running. The most common issue with Mathematica licensing at NERSC is that another user is inadvertently using multiple seats.

Running Mathematica Scripts

To run Mathematica scripts, you can do so in interactive mode or in batch mode. Both approaches require the use of the job scheduler.

To run in interactive mode, use salloc to obtain access to a compute node. To avoid using multiple license seats at once (always a good thing), specify a single node and a single task per node. If you want to take advantage of parallelism in your script, you can specify more than one CPU per task. An allocation to run on four cores in the interactive QOS would be obtained with a command like the following:

nersc$ salloc  -N 1 -n 1 -c 4 -q interactive -C cpu -t 00:30:00

Running the script is then as simple as

nersc$ srun ./mymathscript.m

To run in batch mode, you will need to write a Slurm batch script and then use sbatch to put your job into the queue. An example batch script that makes 8 cores available to your script follows.

#!/bin/bash
#SBATCH -q shared
#SBATCH -t 00:30:00
#SBATCH -n 1
#SBATCH -c 8
#SBATCH -C cpu

module load mathematica
srun ./myscript.m

If you want to take advantage of parallelism in Mathematica, you can use the application's built-in parallel commands. (See the Wolfram web site for more about parallel commands in Mathematica.) Following is an example script that works on Perlmutter. With Perlmutter, you can use up to 128 cores. Be sure the first line of your script points to the correct directory for the machine on which you're running and your desired version of Mathematica.

#!/global/common/software/nersc/pm-2021q4/sw/mathematica/13.0.1/Executables/wolframscript -script

(* Limit Mathematica to requested resources *)
Unprotect[$ProcessorCount]; $ProcessorCount = 8;

(* calculate some Mersenne primes on one core, then on many *)

MersennePrimeQ[n_Integer] := PrimeQ[2^n - 1]
DistributeDefinitions[MersennePrimeQ]
slow = AbsoluteTiming[Select[Range[5000], MersennePrimeQ]]
WriteString[$Output, slow]
fast = AbsoluteTiming[Parallelize[Select[Range[5000], MersennePrimeQ]]]
WriteString[$Output, fast]

Documentation

Extensive on-line documentation is available at the Wolfram web site.

Mathematica Documentation