COMPUTATIONAL MACHINERY & OPEN-SOURCE JULIA
Open-source physics packages, real-time FCIQMC algorithms, Slurm HPC cluster pipelines, and numerical toolsets.
01 // SCIENTIFIC JULIA: RIMU.JL & REAL-TIME FCIQMC
[MERGED PR #19]
Full Configuration Interaction Quantum Monte Carlo (FCIQMC) has revolutionized ground-state calculations of strongly interacting quantum systems. However, real-time quantum dynamics governed by $e^{-iHt}$ suffer from the dynamic phase problem. Within the Brand research group, we developed RimuRealTime.jl to enable numerically stable unitary propagation using symplectic algorithms.
# Implementation of InternalCoherence Post-Step Strategy for Real-Time FCIQMC
# Joachim Brand Lab // Massey University (Auckland, NZ)
using Rimu
using Rimu.Hamiltonians
import Rimu.Interfaces: post_step
struct InternalCoherence{T<:AbstractFloat} <: PostStepStrategy
threshold::T
damping_factor::T
end
InternalCoherence(; threshold=0.05, damping_factor=0.98) =
InternalCoherence(promote(threshold, damping_factor)...)
@inline function post_step(strategy::InternalCoherence, step::Int, state::ComplexFciqmcState)
walkers = state.walker_vector
corr = compute_sign_correlator(walkers)
# Check if stochastic phase oscillations have compromised signal-to-noise
if abs(corr) < strategy.threshold
# Symplectically damp high-frequency orthogonal phase fluctuations
damp_orthogonal_phase!(walkers, strategy.damping_factor)
end
return state
end
function compute_sign_correlator(w::AbstractVector{Complex{T}}) where T
real_sum = sum(real, w)
imag_sum = sum(imag, w)
norm_sq = sum(abs2, w)
return (real_sum^2 + imag_sum^2) / (norm_sq + eps(T))
end
02 // ALGORITHMIC TOOLSETS & HAMILTONIAN SOLVERS
[TESTED SUITE]
High-performance Julia solver for 1D extended Fermi-Hubbard chains. Implements sparse Hamiltonian matrices, bitwise occupation basis generation, and Lanczos/Arnoldi iterations using KrylovKit.jl.
- • CDW and SDW structure factor computation
- • Non-Hermitian asymmetric hopping support
- • Multithreaded sparse-matrix vector multiplication
Algorithmic compiler synthesizing single-qubit unitaries $U \in SU(2)$ into exact and $\varepsilon$-approximate Clifford+T gate circuits. Developed during research at Inria Paris-Saclay.
- • Algebraic factoring in cyclotomic rings $\mathbb{Z}[\frac{1}{\sqrt{2}}, i]$
- • Canonical Matsumoto-Amano normal form verification
- • T-count and ancilla minimization algorithms
Variational Quantum Eigensolver (VQE) and Quantum Approximate Optimization Algorithm (QAOA) benchmark suite comparing statevector backends against noisy shot simulation.
- • PennyLane & PyTorch gradient descent backends
- • Quantum natural gradient (QNG) optimizer
- • Barren plateau avoidance strategies in deep ansatze
Split-step Fourier spectral method solver for 1D and quasi-1D Gross-Pitaevskii equations with contact and non-local interaction potentials.
- • Symplectic 4th-order Yoshida time-stepping
- • Imaginary time ground-state preparation
- • Real-time soliton collision phase extraction
03 // SLURM BATCH ORCHESTRATION & HPC ARTIFACT PIPELINES
PRODUCTION CLUSTER DEPLOYMENTLarge-scale FCIQMC and Gross-Pitaevskii simulations require parameter sweeps spanning hundreds of coupling strengths ($g_{1D}$) and interaction regimes ($U/t, V/t$). Below is the standard Slurm job array template used across our Massey University HPC cluster nodes:
#!/usr/bin/env bash
# ==============================================================================
# SLURM PRODUCTION SCRIPT // REAL-TIME FCIQMC DYNAMICS SWEEP
# Joachim Brand Lab // Massey University Auckland
# ==============================================================================
#SBATCH --job-name=fciqmc_sweep
#SBATCH --partition=parallel
#SBATCH --nodes=4
#SBATCH --ntasks-per-node=32
#SBATCH --cpus-per-task=1
#SBATCH --time=48:00:00
#SBATCH --mem=128G
#SBATCH --array=1-100%20
#SBATCH --output=/nesi/nobackup/massey_phys/logs/%x_%A_%a.out
#SBATCH --error=/nesi/nobackup/massey_phys/logs/%x_%A_%a.err
module purge
module load Julia/1.10.2-GCC-12.3.0
module load OpenMPI/4.1.5-GCC-12.3.0
export JULIA_NUM_THREADS=32
export OPENBLAS_NUM_THREADS=32
PARAM_FILE="config/sweep_parameters.csv"
LINE=$(sed -n "$((SLURM_ARRAY_TASK_ID + 1))p" "$PARAM_FILE")
IFS=',' read -r RUN_ID G_COUPLING N_WALKERS DT T_MAX <<< "$LINE"
echo "=========================================================="
echo "LAUNCHING TASK $SLURM_ARRAY_TASK_ID on $(hostname)"
echo "PARAMETERS: G=$G_COUPLING, WALKERS=$N_WALKERS, DT=$DT, T_MAX=$T_MAX"
echo "=========================================================="
srun julia --project=@. scripts/run_realtime_fciqmc.jl \
--coupling "$G_COUPLING" \
--walkers "$N_WALKERS" \
--dt "$DT" \
--tmax "$T_MAX" \
--outdir "/nesi/nobackup/massey_phys/data/run_${SLURM_ARRAY_JOB_ID}_${SLURM_ARRAY_TASK_ID}"
echo "TASK $SLURM_ARRAY_TASK_ID COMPLETED AT $(date -u '+%Y-%m-%dT%H:%M:%SZ')"
To securely retrieve HDF5 / JLD2 simulation artifacts from remote Massey/NeSI supercomputers directly to local Neovim/Julia buffers without manual scp commands:
rsync -avz -e "ssh -J gateway.massey.ac.nz" node01:/nesi/nobackup/massey_phys/data/ ./scratch/artifacts/