nabu.pipeline.fullfield.computations module¶
- nabu.pipeline.fullfield.computations.estimate_required_memory(process_config, delta_z=None, delta_a=None, max_mem_allocation_GB=None, fft_plans=True, debug=False)[source]¶
Estimate the memory (RAM) in Bytes needed for a reconstruction.
- Parameters:
process_config (ProcessConfig object) – Data structure with the processing configuration
delta_z (int, optional) – How many lines are to be loaded in the each projection image. Default is to load lines [start_z:end_z] (where start_z and end_z come from the user configuration file)
delta_a (int, optional) – How many (partial) projection images to load at the same time. Default is to load all the projection images.
max_mem_allocation_GB (float, optional) – Maximum amount of memory in GB for one single array.
- Returns:
required_memory – Total required memory (in bytes).
- Return type:
float
- Raises:
ValueError if one single-array allocation exceeds "max_mem_allocation_GB" –
Notes
pycuda <= 2022.1 cannot use arrays with more than 2**32 items (i.e 17.18 GB for float32). This was solved in more recent versions.
- nabu.pipeline.fullfield.computations.estimate_max_chunk_size(available_memory_GB, process_config, pipeline_part='all', n_rows=None, step=10, max_mem_allocation_GB=None, fft_plans=True, debug=False)[source]¶
Estimate the maximum size of the data chunk that can be loaded in memory.
- Parameters:
available_memory_GB (float) – available memory in Giga Bytes (GB - not GiB !).
process_config (ProcessConfig) – ProcessConfig object
pipeline_part (str) –
- Which pipeline part to consider. Possible options are:
”full”: Account for all the pipeline steps (reading data all the way to reconstruction).
”radios”: Consider only the processing steps on projection images (ignore sinogram-based steps and reconstruction)
”sinogram”: Consider only the processing steps related to sinograms and reconstruction
n_rows (int, optional) – How many lines to load in each projection. Only accounted for pipeline_part=”radios”.
step (int, optional) – Step size when doing the iterative memory estimation
max_mem_allocation_GB (float, optional) – Maximum size (in GB) for one single array.
- Returns:
n_max – If pipeline_par is “full” or “sinos”: return the maximum number of lines that can be loaded in all the projections while fitting memory, i.e data[:, 0:n_max, :] If pipeline_part is “radios”, return the maximum number of (partial) images that can be loaded while fitting memory, i.e data[:, zmin:zmax, 0:n_max]
- Return type:
int
Notes
pycuda <= 2022.1 cannot use arrays with more than 2**32 items (i.e 17.18 GB for float32). This was solved in more recent versions.