Skip to content

Memory-Centric X-ray Image Reconstruction (GPU version)

Notifications You must be signed in to change notification settings

merthidayetoglu/MemXCT-GPU

Repository files navigation

SC20 SCC Reproducibility Challenge Instructions

All work based off of this SC19 paper

Compile

Make Sure Dependencies are Installed

  1. C++ Compiler
  2. MPI Compiler
  3. CUDA Compiler

Modify Makefile

There are Makefiles for Blue Waters (K20x) and OLCF Summit (V100) and TACC Frontera (Quadro RTX 5000) systems. You should use one of these to modify according to your system.

Download Datasets

We provide the challenge datasets over Box. Dimensions (Theta x Rho) and corresponding application memory footprints are given below.

Test Datasest:

  • ADS1 (360x256): 512 MB
  • ADS2 (750x512): 3.6 GB
  • ADS3 (1500x1024): 28 GB
  • ADS4 (2400x2048): 180 GB

Challenge Datasets:

  • CDS1 (750x512): 3.6 GB
  • CDS2 (375x1024): 7.0 GB
  • CDS2 (1501x2048): 112 GB

Each dataset requires a theta file and a sinogram file. Use the code below to directly download datasets to your cluster.

wget https://uofi.box.com/shared/static/ql76fxfrnec1jdl8dc4f2g4ihwekn9oj -O ADS1_theta.bin
wget https://uofi.box.com/shared/static/zmt3vq5k0jaqgcay4a7yscv2a0viyxlc -O ADS1_sinogram.bin

wget https://uofi.box.com/shared/static/yrsr9brzl6q03bmnunfk65k33ykvfr8o -O ADS2_theta.bin
wget https://uofi.box.com/shared/static/wssrib7ud9na1k5zxxjm3kabd2bcrjwu -O ADS2_sinogram.bin

wget https://uofi.box.com/shared/static/vi1uiecpqqiz7rjtty6fbxxwn1feoib0 -O ADS3_theta.bin
wget https://uofi.box.com/shared/static/icxtknbrndv8i2d83mc87ppjxepty8jz -O ADS3_sinogram.bin

wget https://uofi.box.com/shared/static/tbjk9dksog7qqick66nbcnq4ngais1yd -O ADS4_theta.bin
wget https://uofi.box.com/shared/static/ki7smuurh34cleayvwfxhjfn9mgsnega -O ADS4_sinogram.bin

wget https://uofi.box.com/shared/static/a09sxg1zmsboeybgpyn8dltt9lhufrdw -O CDS1_theta.bin
wget https://uofi.box.com/shared/static/uozr0yjsigb5vsvhx7rxk1zlgquvx7jr -O CDS1_sinogram.bin

wget https://uofi.box.com/shared/static/ssn58r8esn3sycyhvi0pp5h548r8dlqk -O CDS2_theta.bin
wget https://uofi.box.com/shared/static/z62gyxknj8drmb11ei10gk1anw4u7c7p -O CDS2_sinogram.bin

wget https://uofi.box.com/shared/static/wmlwosi2dbvqf4jua5xzmq9sy3yhomyy -O CDS3_theta.bin
wget https://uofi.box.com/shared/static/1gedpig7mu3scns8qjf9fmqgkp0tqxzf -O CDS3_sinogram.bin

Run

Edit input parameters and run the application using run script. Update one of the run scripts for your system.

#DOMAIN INFORMATION
export NUMTHE= #Number of Rotations (according to the input dataset)
export NUMRHO= #Number of Channels (according to the input dataset)
export PIXSIZE= #Pixel Size (should be 1)
#SOLVER DATA
export NUMITER= #Number of Iterations (should be 24)
#TILE SIZE (MUST BE POWER OF TWO)
export SPATSIZE= #Spatial Tile Size (tuning parameter)
export SPECSIZE= #Spectral Tile Size (tuning parameter)
#BLOCK SIZE
export PROJBLOCK= #Projection Thread Block Size (tuning parameter)
export BACKBLOCK= #Backprojection Thread Block Size (tuning parameter)
#BUFFER SIZE
export PROJBUFF= #Projection Buffer Size in KB (tuning parameter)
export BACKBUFF= #Backprojection Buffer Size in KB (tuning parameter)
#I/O FILES
export THEFILE= #input theta file path
export SINFILE= #input sinogram file path
export OUTFILE= #output image file path

#RUN COMMAND COMES HERE

You should see residual error drops in each iteration.

Verify

Download Fiji open source, lightweight, standalone scientific visualization tool. Import the raw image file and inspect the image to verify the code. Sinogram (input) and tomogram (output) test data should look as below.

ADS1 Sinogram (360x256) ADS1 Tomogram (256x256)
ADS2 Sinogram (750x512) ADS2 Tomogram (512x512)
ADS3 Sinogram (1500x1024) ADS3 Tomogram (1024x1024)
ADS4 Sinogram (2400x2048) ADS4 Tomogram (2048x2048)

About

Memory-Centric X-ray Image Reconstruction (GPU version)

Resources

Stars

Watchers

Forks