Skip to content
Snippets Groups Projects
slurm_gen.py 1.93 KiB
Newer Older
baptiste.coudray's avatar
baptiste.coudray committed
#!/usr/bin/env python3
import subprocess


baptiste.coudray's avatar
baptiste.coudray committed
def slurm_gpu(file, version, ntasks, mem_per_cpu, time):
baptiste.coudray's avatar
baptiste.coudray committed
    return f"""#!/bin/sh

baptiste.coudray's avatar
baptiste.coudray committed
#SBATCH --job-name={file[0]}.out
#SBATCH --output={file[0]}-{version}-{ntasks}.out.o%j
baptiste.coudray's avatar
baptiste.coudray committed
#SBATCH --ntasks={ntasks}
#SBATCH --cpus-per-task=1
#SBATCH --partition=shared-gpu
#SBATCH --gpus=ampere:{min(ntasks, 2)}
baptiste.coudray's avatar
baptiste.coudray committed
#SBATCH --mem-per-cpu={mem_per_cpu}
#SBATCH --time={time}

module load CUDA

srun {file[1]}_{version}_bench {min(ntasks, 8)} {file[2]} {file[2]} {file[2]}
baptiste.coudray's avatar
baptiste.coudray committed
def slurm_cpu(file, version, ntasks, mem_per_cpu, time):
baptiste.coudray's avatar
baptiste.coudray committed
    return f"""#!/bin/sh

baptiste.coudray's avatar
baptiste.coudray committed
#SBATCH --job-name={file[0]}.out
#SBATCH --output={file[0]}-{version}-{ntasks}.out.o%j
baptiste.coudray's avatar
baptiste.coudray committed
#SBATCH --ntasks={ntasks}
#SBATCH --cpus-per-task=1
baptiste.coudray's avatar
baptiste.coudray committed
#SBATCH --partition=shared-cpu
baptiste.coudray's avatar
baptiste.coudray committed
#SBATCH --mem-per-cpu={mem_per_cpu}
#SBATCH --time={time}

srun {file[1]}_{version}_bench 1 {file[2]} {file[2]} {file[2]}
baptiste.coudray's avatar
baptiste.coudray committed
FILES = [
    ["elem"], ["/home/users/c/coudrayb/projet-de-bachelor/elementary/cmake-build-release/elementary", 300000000],
    ["gol"], ["/home/users/c/coudrayb/projet-de-bachelor/game_of_life/cmake-build-release/game_of_life", 30000],
    ["lbm"], ["/home/users/c/coudrayb/projet-de-bachelor/lattice_boltzmann/cmake-build-release/lattice_boltzmann", 300]
baptiste.coudray's avatar
baptiste.coudray committed
]
HOURS = ["12:00:00", "06:00:00", "03:00:00", "02:00:00", "01:00:00", "01:00:00", "01:00:00"]
baptiste.coudray's avatar
baptiste.coudray committed


def main():
    for version in ["cuda"]:
baptiste.coudray's avatar
baptiste.coudray committed
        for i in range(0, 8):
baptiste.coudray's avatar
baptiste.coudray committed
            ntasks = 2 ** i
            mem_per_cpu = 13000
baptiste.coudray's avatar
baptiste.coudray committed
            file = FILES[0]
            time = HOURS[i]
baptiste.coudray's avatar
baptiste.coudray committed
            if version == "seq" or version == "mc":
baptiste.coudray's avatar
baptiste.coudray committed
                content = slurm_cpu(file, version, ntasks, mem_per_cpu, time)
baptiste.coudray's avatar
baptiste.coudray committed
            else:
baptiste.coudray's avatar
baptiste.coudray committed
                content = slurm_gpu(file, version, ntasks, mem_per_cpu, time)
baptiste.coudray's avatar
baptiste.coudray committed
            filename = f"srun_{version}_{ntasks}.sh"
            with open(filename, "w") as fh:
                fh.write(content)
            subprocess.run(["/usr/bin/sbatch", filename])


if __name__ == '__main__':
    main()