Skip to content

Releases: tomopy/tomopy

lprec wrapper update and minor bugs

07 Jun 18:12
Compare
Choose a tag to compare

This release contains an update to the lprec wrapper and bug fixes for the documentation and the new GPU accelerated code.

GPU support, rotation-based recon, MSVC support

23 May 17:33
Compare
Choose a tag to compare
  • Version is now pulled from git tags instead of from VERSION file
  • dxchange is no longer a required dependency
  • CMake build system to handle addition of code in two new languages: C++ and CUDA
  • Python bindings to C++/CUDA code still go through C interface (i.e. no direct binding)
  • SIRT and MLEM have been implemented on the GPU and CPU using rotation-based algorithm
    • GPU support has been validated for Windows and Linux
    • CPU version uses OpenCV for rotation
      • OpenCV distributed via conda + MinGW on Windows does not work. Use MSVC compiler on Windows.
    • GPU version uses NPP for rotation
    • benchmarking on NVIDIA P100: ~11x slower than gridrec but vastly improved reconstruction quality
    • benchmarking on NVIDIA V100: per-slice speed-up over ray-based algorithm is ~650x, e.g. a TomoBank reconstruction (2048p + 1,500 proj angles) formerly requiring ~6.5 hours is completed in ~40 seconds
  • Support for Microsoft Visual C++ (MSVC) compiler
    • Implemented gridrec in C++ (uses std::complex) which is enabled by default on Windows
  • To enable new algorithms, include accelerated=True to tomopy.recon for SIRT and MLEM
    • there are other options available but unless there is an explicitly understanding the effects of the other parameters, use the defaults.
  • Multi-GPU support is available
    • Automatic detection of number of available devices
    • Multiple threads started at Python level automatically spread out over the number of available GPUs
  • Secondary thread-pools created in C++ code to provide highly efficient communication with the GPU and additional parallelism on the CPU.
    • When running on the GPU, set ncore parameter to tomopy.recon to the number of GPUs available.
    • Each "Python" thread creates a unique secondary thread-pool with a default size of 2 * number-of-cpus. This is intentional and, in general, the larger the secondary thread-pool, the more efficiently the CPU-GPU communication latency is hidden. However, in general, more than 24 threads per thread-pool provides no benefit (all latency is essentially hidden at that point)

Detector drift auto detection

29 Jan 17:26
2adc14f
Compare
Choose a tag to compare
  • NEW: Detector drift auto detection for APS-1ID beamline data (#367)
  • BLD: Change build targets to Python 2.7, 3.6, 3.7

Benchmarking tools for performance optimization

29 Jan 17:25
a9d28d7
Compare
Choose a tag to compare
  • NEW: Arguments added for alignment functions (#352)
  • NEW: Benchmarking via PyCTest
  • ENH: Optimizations in utils.c
  • BLD: Initial work transitioning build system to CMake

TomoPy 1.2.0

08 Oct 17:51
Compare
Choose a tag to compare
  • Added Windows build support for python>=3.5
  • Updated build system to use GNU Make
  • Add Expectation Maximization, Total Variation, Log-Polar, and Gradient descent reconstruction algorithms
  • Rebased master branch to remove history of large unused files and reduce repository size

TomoPy 1.1.2

15 Nov 21:04
Compare
Choose a tag to compare

Updates

  • Removed all remnants of pyfftw, now that mkl_fft is on conda-forge.
  • Moved the logic of loading fft implementation to _fft_loader.py called from init.py.
  • Optimizations to rotation.py to minimize creation of intermediary numpy arrays.
  • Conda-forge channel is set-up as the default distribution channel.
  • Alignment is now available and the FAQ is edited correspondingly.
  • Add UFO wrapper and adapt documentation.
  • Wrote more efficient code for _reciprocal_grid and _reciprocal_coord.
  • Encapsulated uses of fft, ifft and fft2, ifft2 by replacing direct calls to pyfftw.interfaces.numpy functions with calls to wrapper functions defined in tomopy.util.misc.
  • Wrote definitions of these functions in terms of mkl_fft functions, in terms of pyfftw functions and in terms of numpy.fft functions as fall-back.
  • Supported in-place operations with overwrite_input=True.
  • in _retrieve_phase ifft2 is now done in-place for efficiency.
  • Used floating point functions, i.e. ceilf, sinf, cosf, etc. instead
    of functions with doubles signature, i.e. ceil, sin, cos, etc..
  • Replaced use of lroundf(x) with (int) roundf(x).
  • The latter one can be vectorized, while the former can not.
  • Icc-specific pragmas get applied to loops to assist vectorization
    if Intel C Compiler is used to compile the code.
  • The loop updating H was split in two to avoid genuine vector dependencies
    inhibiting vectorization by ICC.
  • Use 64-bytes aligned memory allocation from X/Open-7 posix standard
    instead of using fftw allocator.
  • unctions _elipsoid and _transform now use numpy arrays for intermediate computations rather than Python lists.
  • Added two "re-projection" based algorithms for automated vertical and horizontal alignment of projection images.
  • Changed smin and smax arguments in call to _search_coarse in the large sinograms case to smin / 4.0 and smax / 4.0 in order to incorporate downsampling.
  • VisibleDeprecationWarning: using a non-integer number instead of an integer will result in an error in the future.

TomoPy 1.1.0

10 Oct 05:35
Compare
Choose a tag to compare
TomoPy 1.1.0 Pre-release
Pre-release

New modules

  • alignment: Automated alignment of projection images.

New dependencies

  • numexpr
  • futures # [py2k]

TomoPy 1.0.0

18 May 18:28
Compare
Choose a tag to compare

New features

  • FFTW implementation is now adopted. All functions that rely on FFTs such as gridrec, phase retrieval, stripe removal, etc. are now using the FFTW implementation through PyFFTW.
  • sinogram_order is added to recon as an additional argument. It determines whether data is a stack of sinograms (True, y-axis first axis) or a stack of radiographs (False). Default is False, but we plan to make it True in the upcoming release.
  • Reconstruction algorithms only copies data if necessary.
  • Updated library to support new mproc and recon functions. The data is now passed in sinogram order to recon functions. Also updated tests.
  • ncores and nchunks are now independent.
  • Setting nchunks to zero removes the dimension. That allows for the functions work on 2D data rather than 3D data.
  • Sliced data are used so that each process only receives the data it needs. No more istart and iend variables for setting up indices in parallel processes.
  • Functions will reuse sharedmem arrays if they can.

New functions

New packages in Conda channel

Deprecated features

  • All data I/O related functions are deprecated. They are available through DXchange package.
  • Removed fft.h and fft.c, they are now completely replaced with FFTW.

Backward incompatible changes

  • emission argument is removed from recon. After this change the tomographic image reconstruction algorithms always assume data to be normalized.

Contributors