Pari / GP

“PARI/GP is a widely used computer system designed for fast computations in number theory (factorizations, algebraic number theory, elliptic curves, modular forms, L functions…), but also contains a large number of other useful functions to compute with mathematical entities such as matrices, polynomials, power series, algebraic numbers etc., and a lot of transcendental functions.” - https://pari.math.u-bordeaux.fr/

To load the PARI library and gp shell, use:

module load pari-gp

Note that Pari / GP is ONLY available on compute nodes 22-26. Therefore to launch the interative shell on a compute node, you need to specify in your srun command that you’ll need nodes with Pari/GP compatibility:

srun --constraint=pari-gp --pty gp

You can add any additional resource requests after the srun command, before the --pty flag. For example, to specify your computations will need 8gb of memory:

srun --mem=8G --constraint=pari-gp --pty gp

To run a gp script instead of using the interactive interface, you can submit a sbatch script. An example of such a script is as follows:

#!/bin/bash

#SBATCH --job-name=pari-parallel
#SBATCH --nodes=1
#SBATCH --constraint=pari-gp
#SBATCH --ntasks-per-node=1
#SBATCH --cpus-per-task=2
#SBATCH --mem=8000
#SBATCH --time=0-01:00:00

module load pari-gp
gp < example_parallel_script.gp

Note that the default version of PARI/GP that loads with module load pari-gp has been compiled to work with POSIX threads (multiple threads within a single node). For more info on parallel programming with pari, please see the official Pari/GP documentation, from the latest stable release: https://pari.math.u-bordeaux.fr/pub/pari/manuals/2.13.0/parallel.pdf