Acceleration Backends¶
orGUI has two independent acceleration selectors: one for ROI image
integration and one for CTR structure-factor calculations. Both selectors use
the same process-global syntax. Set ORGUI_ACCEL_BACKEND before importing
the affected module, before starting orGUI, or before launching a batch
script.
ROI Integration¶
ROI integration uses the C++ backend by default. If the C++ extension is not
available and no backend is requested, ROI integration falls back to NumPy.
This is the normal path for the GUI and for batch integrations that call
orgui.app._roi_sum_accel.
To select the ROI backend globally for the current process, set
ORGUI_ACCEL_BACKEND:
# Default: C++ ROI summing and C++ fitted-background support.
export ORGUI_ACCEL_BACKEND=cpp
# Optional: Numba ROI summing for strip-background integration.
export ORGUI_ACCEL_BACKEND=numba
# Disable acceleration and use the explicit NumPy fallback paths.
export ORGUI_ACCEL_BACKEND=numpy
Valid values are cpp, numba, and numpy. If the variable is unset,
cpp is used when available. numpy means no ROI acceleration backend is
selected; the application uses its explicit NumPy fallback integration code.
The Numba backend is imported only when ORGUI_ACCEL_BACKEND=numba is set
or when it is selected explicitly in Python:
import orgui.app._roi_sum_accel as roi_sum
roi_sum.set_accel_backend("cpp")
roi_sum.set_accel_backend("numba")
roi_sum.set_accel_backend("numpy") # disable acceleration
The Numba ROI backend mirrors the C++ strip-background and image accumulation functions:
processImage_CarrprocessImage_bg_CarrcalcMaxSumcalcBgSubcalcMaxSum_bg
Polynomial fitted-background integration is C++ only. When the C++ extension
is available, processImage_polybg_Carr and interpolate_polybg_croi
remain available from orgui.app._roi_sum_accel even if
ORGUI_ACCEL_BACKEND=numba selects Numba for the strip-background counters.
CTR Structure Factors¶
CTR calculations default to the C++ backend when it is available. If the C++ extension is unavailable and no backend is requested, they run the explicit NumPy structure-factor code path. Numba is never selected or imported automatically.
To select the CTR backend globally for the current process, set
ORGUI_ACCEL_BACKEND:
export ORGUI_ACCEL_BACKEND=cpp
export ORGUI_ACCEL_BACKEND=numba
export ORGUI_ACCEL_BACKEND=numpy
Alternatively, select the backend in Python:
from orgui.datautils.xrayutils import CTRuc
CTRuc.set_accel_backend("cpp") # default when available
CTRuc.set_accel_backend("numba") # optional Numba backend
CTRuc.set_accel_backend("numpy") # disable acceleration
The active backend is stored in CTRuc.CTR_ACCEL_BACKEND. To check whether
the optional Numba backend can be loaded, use:
CTRuc.ctr_numba_accel_available()
Calling CTRuc.ctr_numba_accel_available() imports the optional Numba CTR
module when it has not already been probed. CTRuc.set_accel_backend("numba")
raises ValueError if the optional Numba backend cannot be imported.