Full-field pipeline without needing GPU
This MR is a first step toward a pipeline that does not need GPU at all.
With the current implementation (CudaFullFieldPipeline
inheriting from FullFieldPipeline
), it is theoretically possible to run a reconstruction without needing Cuda. However:
- Some steps are still very slow with the numpy backend
-
Reconstructor
s require cuda in the current state - it should not be! - Imports can be sometimes overlooked (crash if cuda is not present in some situations)
This MR focuses on simple solutions (numpy + multithread). OpenCL will be considered later.
To do
-
List the performance bottleneck steps on CPU --> See below -
FFTW support for CTFPhaseRetrieval
-
Unit test -
Integration in pipeline
-
-
Multi-thread support for Histogram -
Multi-thread support for binning -
Multi-thread support for Unsharpwill be done later -
Multi-thread support for Logwill be done later -
Pipeline: ensure nabu nabu.conf
works even without Cuda installed -
End-to-end tests, measure the speed of CPU-only pipeline
Bonus:
-
Update CTFPhaseRetrieval
so that API follows the design decisions -
Update test_ctf
-
End-to-end CTF test -
Update documentation for CTF and get_num_threads
behavior -
Refactor Reconstructor
s - close #260 (closed)
Close #230 (closed), #261 (closed)
Notes
- When referring to "CPU-only pipeline", the "backend" terminology should be used to avoid confusion. "CPU-numpy", "CPU-opencl", "GPU-cuda", "GPU-opencl", ...
- Some steps might still be very slow even with numpy + multi-thread: histogram, backprojection. Only a dedicated implementation (C++/OpenCL) can bring reasonable performances for these.
Edited by Pierre Paleo