This package provides a framework for automating the reduction of Feynman integrals using Integration-by-Parts (IBP) identities and sector decomposition. It transforms sector structures into directed acyclic graphs (DAGs) and generates Petri net representations for parallel computation using GPI-Space.
sudo apt update
sudo apt install -y build-essential ca-certificates coreutils curl \
environment-modules gfortran git gpg lsb-release python3 \
python3-distutils python3-venv unzip zip
- Create and set up working directory:
mkdir -p ~/singular-gpispace
cd ~/singular-gpispace
- Set environment variables (add to
~/.bashrc
for persistence):
echo 'export software_ROOT=~/singular-gpispace' >> ~/.bashrc
echo 'export install_ROOT=~/singular-gpispace' >> ~/.bashrc
source ~/.bashrc
- Install Spack:
# Clone Spack
git clone https://github.com/spack/spack.git $software_ROOT/spack
# Switch to stable version
cd $software_ROOT/spack
git checkout releases/v0.23
# Initialize Spack
. $software_ROOT/spack/share/spack/setup-env.sh
# Bootstrap Spack
spack spec zlib
- Install gspc-feynman:
# Add package repository
git clone https://github.com/singular-gpispace/spack-packages.git $software_ROOT/spack-packages
spack repo add $software_ROOT/spack-packages
# Install package
spack install gspc-feynman
- Configure Environment:
# Set environment variables
export GSPC_FEYNMAN_INSTALL_DIR=$(spack location -i gspc-feynman)
export GPI_SPACE_HOME=$(spack location -i [email protected])
export GSPC_HOME=$GPI_SPACE_HOME
export SINGULAR_INSTALL_DIR=$(spack location -i [email protected])
export GSPC_FEYNMAN_EXAMPLES_DIR=$GSPC_FEYNMAN_INSTALL_DIR/share/examples
export SINGULARPATH=$GSPC_FEYNMAN_INSTALL_DIR
export LD_LIBRARY_PATH=$GSPC_HOME/lib:$GSPC_FEYNMAN_INSTALL_DIR/lib:$LD_LIBRARY_PATH
The recommended way to start is using the provided setup script:
$GSPC_FEYNMAN_INSTALL_DIR/libexec/setup.sh
After pressing Ctrl+C
to stop watching the monitor:
# Change to working directory
cd $software_ROOT
# Load Singular
spack load [email protected]
# Start Singular
Singular
If you prefer manual setup:
# Create logs directory
mkdir -p $software_ROOT/logs
# Get GPI-Space binary path
GPISPACE_BIN=$(spack location -i [email protected])/bin
# Start monitor with logging
[ -f $software_ROOT/logs/monitor.txt ] && rm $software_ROOT/logs/monitor.txt
cd $GPISPACE_BIN && ./gspc-logging-to-stdout.exe --port 9876 >> $software_ROOT/logs/monitor.txt 2>&1 &
# Monitor the output
tail -f $software_ROOT/logs/monitor.txt
LIB "templategspc.lib";
// Configure GPI-Space
configToken gc = configure_gspc();
gc.options.tmpdir = "tempdir";
gc.options.nodefile = "nodefile";
gc.options.procspernode = 4;
gc.options.loghostfile = "loghostfile";
gc.options.logport = 9876;
// Define graph structure
ring R = 0, x, dp;
list v = list(1, 2, 3, 4, 5, 6); // vertices
list e = list(
list(6, 1), // edge 6->1
list(4, 6), // edge 4->6
list(1, 2), // edge 1->2
list(3, 5), // edge 3->5
list(4, 3), // edge 4->3
list(2, 5), // edge 2->5
list(5, 6), // edge 5->6
list(1), // external leg 1
list(2), // external leg 2
list(3), // external leg 3
list(4) // external leg 4
);
// Define target integrals
list targetInt = list(
list(1, 1, 1, -1, -3, -1, -1, -1, -1),
list(1, -1, 1, -1, -3, -1, -1, -4, -1)
);
// Compute sector decomposition
list L = v, e, targetInt;
def re = gspc_feynman(L, gc);
-
Monitor Not Starting
- Check if port is in use:
netstat -tuln | grep 9876
- Check log file:
cat $software_ROOT/logs/monitor.txt
- If "Connection refused" errors in Singular:
# Kill any existing monitor processes pkill -f gspc-logging-to-stdout.exe # Start monitor with proper environment export software_ROOT=~/singular-gpispace mkdir -p $software_ROOT/logs GPISPACE_BIN=$(spack location -i [email protected])/bin cd $GPISPACE_BIN && ./gspc-logging-to-stdout.exe --port 9876 >> $software_ROOT/logs/monitor.txt 2>&1 &
- Check if port is in use:
-
Module Loading Issues
# Reload modules spack load [email protected] spack load [email protected] spack load gspc-feynman
-
SSH Connection Issues
# Test SSH connection ssh localhost echo "SSH connection successful" # Regenerate SSH keys if needed ssh-keygen -t rsa -b 4096 -N '' -f ~/.ssh/id_rsa ssh-copy-id -f -i ~/.ssh/id_rsa localhost
-
[email protected] Not Found If you encounter an error indicating that
[email protected]
is not found:# Run checksum command spack checksum [email protected] # When prompted, select version and press 'c' to checksum # Edit the package file spack edit gpi-space # Ensure it contains: version("24.12", sha256="9cd97b8e41b4494c14a90afff6b801f9cf3b5811205e39c33a481ab09db59920")
Then restart from Install gspc-feynman
# Check environment variables
echo "SINGULAR_INSTALL_DIR: $SINGULAR_INSTALL_DIR"
echo "GSPC_FEYNMAN_INSTALL_DIR: $GSPC_FEYNMAN_INSTALL_DIR"
echo "GSPC_FEYNMAN_EXAMPLES_DIR: $GSPC_FEYNMAN_EXAMPLES_DIR"
echo "SINGULARPATH: $SINGULARPATH"
# Check file permissions
ls -l $software_ROOT/tempdir
ls -l $software_ROOT/nodefile
ls -l $software_ROOT/loghostfile
Contributions are welcome! Please feel free to submit a Pull Request.
Apache License 2.0 - see LICENSE file