Macaulay2¶
Macaulay2 is a software system for research in algebraic geometry and commutative algebra. It is designed to be easy to use and provides a powerful programming environment. It is particularly well-suited for computations in algebraic geometry, commutative algebra, and related areas.
Macaulay2 is provided via an Apptainer container and can run in either CPU or GPU mode. Use the module macaulay2/1.24.11
to access the environment.
CPU Mode (Default)¶
Macaulay2 can run in a regular CPU environment by default. No additional configuration is needed.
Loading the Module:
Terminal
module load macaulay2
M2
Helper commands:
M2-help
– Show help informationM2-script
– Run a script non-interactivelyM2-interactive
– Start in quiet mode (no banner)
Inside Macaulay2:
Terminal
R = QQ[x, y]
I = ideal(x^3 + y^2 - 1)
gens gb I
Interactive CPU Access with srun:
To start an interactive session on a general compute node (CPU-only):
Terminal
srun --partition=aoraki --mem=4G --cpus-per-task=2 --time=00:30:00 --pty bash
Once on the node:
Terminal
module load macaulay2
M2
GPU Mode (Requires GPU Node)¶
To use GPU acceleration, you must be on a GPU-capable node and request a GPU using SLURM.
Set USE_GPU=1
before loading the module to enable GPU support:
Interactive GPU Access with srun:
To run interactively on the aoraki_gpu
partition:
Terminal
srun --partition=aoraki_gpu --gres=gpu:1 --mem=8G --cpus-per-task=2 --time=00:30:00 --pty bash
Then:
Terminal
export USE_GPU=1
module load macaulay2
M2
GPU SLURM Batch Job Example:
Create a file named macaulay2_gpu.slurm
with the following content:
Terminal
#!/bin/bash
#SBATCH --job-name=m2-gpu
#SBATCH --partition=aoraki_gpu
#SBATCH --gres=gpu:1
#SBATCH --time=00:10:00
#SBATCH --mem=4G
#SBATCH --cpus-per-task=2
#SBATCH --output=m2-gpu-%j.out
export USE_GPU=1
module load macaulay2
M2 <<'EOF'
R = QQ[a,b]
I = ideal(a^4 + b^4 - 1)
gens gb I
EOF
Submit the job:
Terminal
sbatch macaulay2_gpu.slurm
Troubleshooting¶
-
M2: command not found
: Ensure the module is loaded. -
GPU not detected: Make sure you set
export USE_GPU=1
before loading the module, and requested a GPU in your SLURM job. -
To verify GPU access inside the container:
Terminal
apptainer exec --nv /opt/macaulay2/1.24.11/macaulay2.sif nvidia-smi