#!/bin/bash
#SBATCH -p RCIF
#requesting one node
#SBATCH -N1
#requesting 40 cpus
#SBATCH -n40
#SBATCH --mail-user=ucapmwe@ucl.ac.uk
#SBATCH --mail-type=ALL

# Request wallclock time (format days-hours:minutes:seconds or hours:minutes:seconds)
#SBATCH --time=48:00:00

# Set the name of the job
#SBATCH --job-name=distanceTest

# Request memory per node: 0 means all memory on node
#SBATCH --mem=0

# Set the working directory and output files
#SBATCH --chdir=/home/cliffordOpt/examples

# ==========================================================================

# --- MODULES --swapPivot 0 & VENV --------------------------------------------------------
cd /home/ucapmwe/cliffordOpt/examples
conda activate cliffordOpt
LD_LIBRARY_PATH=/home/ucapmwe/bin/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH

# --- SET ENVIRONMENT VARIABLES ---------------------------------------------
# Set number of OpenMP threads being used per MPI process: 1 = hyperthreading, 2 = single thread
# export OMP_NUM_THREADS=1


# --- LAUNCH MPI JOB --------------------------------------------------------

# Generate Slurm hostfile (optional, for debugging)
# scontrol show hostnames $SLURM_JOB_NODELIST > hostfile.slurm

# # Get node list as array
# nodes=($(scontrol show hostnames $SLURM_JOB_NODELIST))

# Run on first node with desired params
# srun -n1 python3 runTest.py --method CLISATDist --dataset codeTables --datafile QECC_5-1-3.txt
# srun -n1 python3 runTest.py --method all --dataset all
# wait
#SBATCH --ntasks=40
## GL Benchmark
srun -n1 --exclusive --ntasks=1 --mem-per-cpu 8GB  python3 run_MatFile.py --file GL_all --ixMin 0 --ixMax 0 --mode GL --method astar --qMax 100 -hv 1 -hr 3.0 -hl 1 -ht 1 -hi 1
sleep 2
srun -n1 --exclusive --ntasks=1 --mem-per-cpu 8GB  python3 run_MatFile.py --file GL_all --ixMin 0 --ixMax 0 --mode GL --method astar --qMax 10 -hv 1 -hr 3.0 -hl 1 -ht 1 -hi 1
sleep 2
srun -n1 --exclusive --ntasks=1 --mem-per-cpu 8GB  python3 run_MatFile.py --file GL_all --ixMin 0 --ixMax 0 --mode GL --method CNOT_brug
sleep 2
srun -n1 --exclusive --ntasks=1 --mem-per-cpu 8GB  python3 run_MatFile.py --file GL_all --ixMin 0 --ixMax 0 --mode GL --method CNOT_gaussian
sleep 2
srun -n1 --exclusive --ntasks=1 --mem-per-cpu 8GB  python3 run_MatFile.py --file GL_all --ixMin 0 --ixMax 0 --mode GL --method CNOT_Patel
sleep 2
srun -n1 --exclusive --ntasks=1 --mem-per-cpu 8GB  python3 run_MatFile.py --file GL_all --ixMin 0 --ixMax 0 --mode GL --method greedy -wMax 10 -hv 1 -hr 1 -hl 0 -ht 1 -hi 1
sleep 2
srun -n1 --exclusive --ntasks=1 --mem-per-cpu 8GB  python3 run_MatFile.py --file GL_all --ixMin 0 --ixMax 0 --mode GL --method greedy -wMax 10 -hv 1 -hr 1 -hl 0 -ht 1 -hi 0
sleep 2
srun -n1 --exclusive --ntasks=1 --mem-per-cpu 8GB  python3 run_MatFile.py --file GL_all --ixMin 0 --ixMax 0 --mode GL --method greedy -wMax 10 -hv 1 -hr 1 -hl 0 -ht 0 -hi 1
sleep 2
srun -n1 --exclusive --ntasks=1 --mem-per-cpu 8GB  python3 run_MatFile.py --file GL_all --ixMin 0 --ixMax 0 --mode GL --method greedy -wMax 10 -hv 1 -hr 1 -hl 0 -ht 0 -hi 0
sleep 2
srun -n1 --exclusive --ntasks=1 --mem-per-cpu 8GB  python3 run_MatFile.py --file GL_all --ixMin 0 --ixMax 0 --mode GL --method greedy -wMax 10 -hv 0 -hr 1 -hl 0 -ht 1 -hi 1
sleep 2
srun -n1 --exclusive --ntasks=1 --mem-per-cpu 8GB  python3 run_MatFile.py --file GL_all --ixMin 0 --ixMax 0 --mode GL --method greedy -wMax 10 -hv 0 -hr 1 -hl 1 -ht 1 -hi 1
sleep 2
## Sp Benchmark
srun -n1 --exclusive --ntasks=1 --mem-per-cpu 8GB  python3 run_MatFile.py --file Sp_all --ixMin 0 --ixMax 0 --mode Sp --method astar --qMax 100 -hv 1 -hr 3.0 -hl 1 -ht 1 -hi 1
sleep 2
srun -n1 --exclusive --ntasks=1 --mem-per-cpu 8GB  python3 run_MatFile.py --file Sp_all --ixMin 0 --ixMax 0 --mode Sp --method astar --qMax 10  -hv 1 -hr 3.0 -hl 1 -ht 1 -hi 1
sleep 2
srun -n1 --exclusive --ntasks=1 --mem-per-cpu 8GB  python3 run_MatFile.py --file Sp_all --ixMin 0 --ixMax 0 --mode Sp --method pytket --submethod 0
sleep 2
srun -n1 --exclusive --ntasks=1 --mem-per-cpu 8GB  python3 run_MatFile.py --file Sp_all --ixMin 0 --ixMax 0 --mode Sp --method qiskit --submethod 0
sleep 2
srun -n1 --exclusive --ntasks=1 --mem-per-cpu 8GB  python3 run_MatFile.py --file Sp_all --ixMin 0 --ixMax 0 --mode Sp --method qiskit --submethod 1
sleep 2
srun -n1 --exclusive --ntasks=1 --mem-per-cpu 8GB  python3 run_MatFile.py --file Sp_all --ixMin 0 --ixMax 0 --mode Sp --method greedy -wMax 10 -hv 1 -hr 1 -hl 0 -ht 1 -hi 1
sleep 2
srun -n1 --exclusive --ntasks=1 --mem-per-cpu 8GB  python3 run_MatFile.py --file Sp_all --ixMin 0 --ixMax 0 --mode Sp --method rustiq
sleep 2
srun -n1 --exclusive --ntasks=1 --mem-per-cpu 8GB  python3 run_MatFile.py --file Sp_all --ixMin 0 --ixMax 0 --mode Sp --method volanto
sleep 2
srun -n1 --exclusive --ntasks=1 --mem-per-cpu 8GB  python3 run_MatFile.py --file Sp_all --ixMin 0 --ixMax 0 --mode Sp --method pyzx --submethod 1
sleep 2
## Bravyi Hamiltonians
srun -n1 --exclusive --ntasks=1 --mem-per-cpu 8GB python3 run_QCFile.py --file bravyi_ham --ixMin 0 --ixMax 0 --mode Sp --method qiskit --submethod 1
sleep 2
srun -n1 --exclusive --ntasks=1 --mem-per-cpu 8GB python3 run_QCFile.py --file bravyi_ham --ixMin 0 --ixMax 134 --mode Sp --method greedy -wMax 10 -hv 1 -hr 1 -hl 0 -ht 1 -hi 1
sleep 2
srun -n1 --exclusive --ntasks=1 --mem-per-cpu 8GB python3 run_QCFile.py --file bravyi_ham --ixMin 134 --ixMax 268 --mode Sp --method greedy -wMax 10 -hv 1 -hr 1 -hl 0 -ht 1 -hi 1
sleep 2
srun -n1 --exclusive --ntasks=1 --mem-per-cpu 8GB python3 run_QCFile.py --file bravyi_ham --ixMin 268 --ixMax 402 --mode Sp --method greedy -wMax 10 -hv 1 -hr 1 -hl 0 -ht 1 -hi 1
sleep 2
srun -n1 --exclusive --ntasks=1 --mem-per-cpu 8GB python3 run_QCFile.py --file bravyi_ham --ixMin 402 --ixMax 536 --mode Sp --method greedy -wMax 10 -hv 1 -hr 1 -hl 0 -ht 1 -hi 1
sleep 2
srun -n1 --exclusive --ntasks=1 --mem-per-cpu 8GB python3 run_QCFile.py --file bravyi_ham --ixMin 536 --ixMax 670 --mode Sp --method greedy -wMax 10 -hv 1 -hr 1 -hl 0 -ht 1 -hi 1
sleep 2
srun -n1 --exclusive --ntasks=1 --mem-per-cpu 8GB python3 run_QCFile.py --file bravyi_ham --ixMin 670 --ixMax 804 --mode Sp --method greedy -wMax 10 -hv 1 -hr 1 -hl 0 -ht 1 -hi 1
sleep 2
srun -n1 --exclusive --ntasks=1 --mem-per-cpu 8GB python3 run_QCFile.py --file bravyi_ham --ixMin 804 --ixMax 938 --mode Sp --method greedy -wMax 10 -hv 1 -hr 1 -hl 0 -ht 1 -hi 1
sleep 2
srun -n1 --exclusive --ntasks=1 --mem-per-cpu 8GB python3 run_QCFile.py --file bravyi_ham --ixMin 938 --ixMax 1072 --mode Sp --method greedy -wMax 10 -hv 1 -hr 1 -hl 0 -ht 1 -hi 1
sleep 2
srun -n1 --exclusive --ntasks=1 --mem-per-cpu 8GB python3 run_QCFile.py --file bravyi_ham --ixMin 1072 --ixMax 1206 --mode Sp --method greedy -wMax 10 -hv 1 -hr 1 -hl 0 -ht 1 -hi 1
sleep 2
srun -n1 --exclusive --ntasks=1 --mem-per-cpu 8GB python3 run_QCFile.py --file bravyi_ham --ixMin 1206 --ixMax 1340 --mode Sp --method greedy -wMax 10 -hv 1 -hr 1 -hl 0 -ht 1 -hi 1
sleep 2
srun -n1 --exclusive --ntasks=1 --mem-per-cpu 8GB python3 run_QCFile.py --file bravyi_ham --ixMin 1340 --ixMax 1474 --mode Sp --method greedy -wMax 10 -hv 1 -hr 1 -hl 0 -ht 1 -hi 1
sleep 2
srun -n1 --exclusive --ntasks=1 --mem-per-cpu 8GB python3 run_QCFile.py --file bravyi_ham --ixMin 1474 --ixMax 1608 --mode Sp --method greedy -wMax 10 -hv 1 -hr 1 -hl 0 -ht 1 -hi 1
sleep 2
srun -n1 --exclusive --ntasks=1 --mem-per-cpu 8GB python3 run_QCFile.py --file bravyi_ham --ixMin 1608 --ixMax 1742 --mode Sp --method greedy -wMax 10 -hv 1 -hr 1 -hl 0 -ht 1 -hi 1
sleep 2
srun -n1 --exclusive --ntasks=1 --mem-per-cpu 8GB python3 run_QCFile.py --file bravyi_ham --ixMin 1742 --ixMax 1876 --mode Sp --method greedy -wMax 10 -hv 1 -hr 1 -hl 0 -ht 1 -hi 1
sleep 2
srun -n1 --exclusive --ntasks=1 --mem-per-cpu 8GB python3 run_QCFile.py --file bravyi_ham --ixMin 1876 --ixMax 2010 --mode Sp --method greedy -wMax 10 -hv 1 -hr 1 -hl 0 -ht 1 -hi 1
sleep 2
srun -n1 --exclusive --ntasks=1 --mem-per-cpu 8GB python3 run_QCFile.py --file bravyi_ham --ixMin 2010 --ixMax 2144 --mode Sp --method greedy -wMax 10 -hv 1 -hr 1 -hl 0 -ht 1 -hi 1
sleep 2
srun -n1 --exclusive --ntasks=1 --mem-per-cpu 8GB python3 run_QCFile.py --file bravyi_ham --ixMin 2144 --ixMax 2278 --mode Sp --method greedy -wMax 10 -hv 1 -hr 1 -hl 0 -ht 1 -hi 1
wait