Comparing the performance of Filtered BackProjection (FBP) and Log-Polar Reconstruction (LPRec) tomography pipelines using the httomo, Nabu and TomoCuPy tomography suites.
- batch sbatch scripts to execute jobs on the supercomputer cluster. These scripts target Komondor and need modifications to run elsewhere.
- pipelines Tomography pipeline definitions
- scripts Extra scripts e.g. to generate the input dataset
- environment.yml Conda environment definition
- justfile Common task definitions for the just command runner
- tomobenchmarks.def Definition of the Singularity/Apptainer image to execute the benchmarks in
- Make sure, that the just command runner and the conda package manager is installed and available on the path.
- Build the Conda environment:
just recreate-env. Note, that this removes and recreates the environment namedtomobenchmarks. - Generate the input dataset:
just generate-input. This creates a Nexus file in the working directory that is a synthesized Shepp-Logan phantom. The format is compatible with all benchmarked tomography suites. - Run all small-data benchmarks:
just run-all. This executes all pipelines defined in the repository.
Note, that these steps are specific to the Komondor supercomputer, and must be adapted to run on other systems.
- Build the Singularity/Apptainer image:
module load apptainer
apptainer --verbose build tomobenchmarks.sif tomobenchmarks.def
- Generate the input datasets. Since this task is compute-intensive, it should be executed on the CPU partition of the cluster. The job is submitted by
sbatch, andsynthetic.nxandsynthetic-huge.nxshould appear in the working directory as a result.
sbatch batch/generate-input-data.sbatch
- Run the small benchmark suite on the GPU partition of the cluster. This uses a single GPU. The resulting logs and output data files are generated in the working directory.
sbatch batch/run-default.sbatch
- Run the large benchmarks on the GPU partition of the cluster. These use all 4 GPUs on a single node. In this case, both benchmarks should be executed as a separate job:
sbatch batch/run-httomo-fbp-preproc.sbatch
sbatch batch/run-nabu-fbp-preproc.sbatch