gschramm / parallelproj

code for parallel TOF and NONTOF projections
MIT License
27 stars 8 forks source link

Binder

OpenMP and CUDA libraries + python interface for 3D Joseph non-TOF and TOF forward and back projectors.

This project provides OpenMP and CUDA implementations and a python interface of 3D Joseph non-TOF and TOF forward and back projectors that can be e.g. used for image reconstruction. The input to the projectors are a list of start and end points for line of responses (LORs) such that they are very flexible and suitable for sinogram and listmode processing.


If you are using parallelproj, we recommend to read and cite our publication


Installation, Documentation & Examples

Please refer to the official documentation here.


Building the OpenMP and CUDA libraries from source (developers only)

Dependencies

Notes

Building using cmake

We use CMake to auto generate a Makefile / Visual Studio project file which is used to compile the libraries. Make sure that cmake and the desired C compiler are on the PATH. The CMakeLists.txt is configured to search for CUDA. If CUDA is not present, compilation of the CUDA lib is skipped.

To build and install the libraries execute:

cd my_project_dir
mkdir build
cd build
cmake ..
cmake --build . --target install --config release

where my_project_dir is the directory that contains this file and the CMakeLists.txt file. Note that for the default installation directory, you usually need admin priviledges. To change the install directory, replace the 1st call to cmake by

cmake -DCMAKE_INSTALL_PREFIX=/foo/bar/myinstalldir ..

To build the documentation (doxygen required) run

cmake --build . --target docs

To run all unit tests execute:

ctest -VV

Setting CMAKE_CUDA_ARCHITECTURES

If you have CUDA available on your system (even if there is no physical CUDA GPU), the default for CMAKE_CUDA_ARCHITECTURES depends on the cmake version you are using.