cubie.outputhandling.output_sizes
Array sizing classes for output buffer and array management.
This module provides classes for calculating and managing the sizes of various arrays used in CUDA batch solving, including buffers for intermediate calculations and output arrays for results. All classes inherit from ArraySizingClass which provides utilities for memory allocation.
Classes
Base class for array sizing with memory allocation utilities. |
|
|
Input array sizes for batch integration runs. |
|
Output array sizes for batch integration runs. |
|
Buffer sizes for integrator inner loop calculations. |
|
Heights of output arrays for different variable types. |
|
Output array sizes for a single integration run. |
|
Buffer sizes for summary metric calculations. |
- class cubie.outputhandling.output_sizes.ArraySizingClass[source]
Bases:
ABC
Base class for array sizing with memory allocation utilities.
This abstract base class provides common functionality for all array sizing classes, including a method to ensure minimum array sizes for memory allocation purposes.
Notes
All derived classes inherit the nonzero property which is useful for allocating memory where zero-sized arrays would cause issues.
- property nonzero: ArraySizingClass
Return a copy with all sizes having a minimum of one element.
- Returns:
Copy of the object with all integer and tuple sizes ensured to be at least 1, useful for memory allocation.
- Return type:
Notes
This method creates a new object instance with modified size values to prevent zero-sized array allocations which can cause issues in CUDA memory management.
- class cubie.outputhandling.output_sizes.BatchInputSizes(initial_values: Tuple[int, int] = (1, 1), parameters: Tuple[int, int] = (1, 1), forcing_vectors: Tuple[int, int | None] = (1, None), stride_order: Tuple[str, ...] = ('run', 'variable'))[source]
Bases:
ArraySizingClass
Input array sizes for batch integration runs.
This class specifies the sizes of input arrays needed for batch processing, including initial conditions, parameters, and forcing terms.
- initial_values
Shape of initial values array as (n_runs, n_states).
- parameters
Shape of parameters array as (n_runs, n_parameters).
- forcing_vectors
Shape of forcing vectors array as (n_drivers, time_steps).
- stride_order
Order of dimensions in the input arrays.
- classmethod from_solver(solver_instance: BatchSolverKernel) BatchInputSizes [source]
Create input array sizes from a BatchSolverKernel object.
- Parameters:
solver_instance (BatchSolverKernel) – Solver instance containing batch and system configuration.
- Returns:
Input array sizes for the batch run.
- Return type:
- class cubie.outputhandling.output_sizes.BatchOutputSizes(state: Tuple[int, int, int] = (1, 1, 1), observables: Tuple[int, int, int] = (1, 1, 1), state_summaries: Tuple[int, int, int] = (1, 1, 1), observable_summaries: Tuple[int, int, int] = (1, 1, 1), stride_order: Tuple[str, ...] = ('time', 'run', 'variable'))[source]
Bases:
ArraySizingClass
Output array sizes for batch integration runs.
This class provides 3D array sizes (time × run × variable) for output arrays from batch integration runs.
- state
- Shape of state output array as (time_samples, n_runs,
n_variables).
- observables
Shape of observable output array as (time_samples, n_runs, n_variables).
- state_summaries
Shape of state summary array as (summary_samples, n_runs, n_summaries).
- observable_summaries
Shape of observable summary array as (summary_samples, n_runs, n_summaries).
- stride_order
Order of dimensions in the output arrays.
- classmethod from_solver(solver_instance: BatchSolverKernel) BatchOutputSizes [source]
Create batch output sizes from a BatchSolverKernel object.
- Parameters:
solver_instance (BatchSolverKernel) – Solver instance containing batch and output configuration.
- Returns:
Output array sizes for the batch run.
- Return type:
Notes
Constructs 3D array sizes by combining single run sizes with the number of runs in the batch.
- class cubie.outputhandling.output_sizes.LoopBufferSizes(state_summaries: int | None = 1, observable_summaries: int | None = 1, state: int | None = 1, observables: int | None = 1, dxdt: int | None = 1, parameters: int | None = 1, drivers: int | None = 1)[source]
Bases:
ArraySizingClass
Buffer sizes for integrator inner loop calculations.
This class holds the sizes of all buffers used in the main integration loop, including system state buffers and summary calculation buffers.
Notes
Combines system-based buffer sizes (state, dxdt, parameters) with output-derived buffer sizes (summaries) to provide a complete view of memory requirements for the integration loop.
- classmethod from_solver(solver_instance: BatchSolverKernel) LoopBufferSizes [source]
Create buffer sizes from a BatchSolverKernel object.
- Parameters:
solver_instance (BatchSolverKernel) – Solver instance containing system and output configuration.
- Returns:
Buffer sizes extracted from the solver configuration.
- Return type:
- classmethod from_system_and_output_fns(system: GenericODE, output_fns: OutputFunctions) LoopBufferSizes [source]
Create buffer sizes from system and output function objects.
- Parameters:
system (GenericODE) – System model containing state and parameter dimensions.
output_fns (OutputFunctions) – Output functions containing summary buffer requirements.
- Returns:
Combined buffer sizes for the integration loop.
- Return type:
- class cubie.outputhandling.output_sizes.OutputArrayHeights(state: int = 1, observables: int = 1, state_summaries: int = 1, observable_summaries: int = 1, per_variable: int = 1)[source]
Bases:
ArraySizingClass
Heights of output arrays for different variable types.
This class specifies the height (number of elements) required for output arrays storing results from batch integrations.
- classmethod from_output_fns(output_fns: OutputFunctions) OutputArrayHeights [source]
Create output array heights from an OutputFunctions object.
- Parameters:
output_fns (OutputFunctions) – Output functions object containing configuration information.
- Returns:
Array heights calculated from the output configuration.
- Return type:
Notes
The state height includes an extra element if time saving is enabled.
- class cubie.outputhandling.output_sizes.SingleRunOutputSizes(state: Tuple[int, int] = (1, 1), observables: Tuple[int, int] = (1, 1), state_summaries: Tuple[int, int] = (1, 1), observable_summaries: Tuple[int, int] = (1, 1), stride_order: Tuple[str, ...] = ('time', 'variable'))[source]
Bases:
ArraySizingClass
Output array sizes for a single integration run.
This class provides 2D array sizes (time × variable) for output arrays from a single integration run.
- state
Shape of state output array as (time_samples, n_variables).
- observables
Shape of observable output array as (time_samples, n_variables).
- state_summaries
Shape of state summary array as (summary_samples, n_summaries).
- observable_summaries
Shape of observable summary array as (summary_samples, n_summaries).
- classmethod from_output_fns_and_run_settings(output_fns, run_settings)[source]
Create output sizes from output functions and run settings.
- Parameters:
output_fns (OutputFunctions) – Output functions containing variable configuration.
run_settings (IntegratorRunSettings) – Run settings containing timing information.
- Returns:
Output array sizes for a single run.
- Return type:
Notes
This method is primarily used for testing. In normal operation, the from_solver method is preferred.
- classmethod from_solver(solver_instance: BatchSolverKernel) SingleRunOutputSizes [source]
Create output sizes from a BatchSolverKernel object.
- Parameters:
solver_instance (BatchSolverKernel) – Solver instance containing timing and output configuration.
- Returns:
Output array sizes for a single run.
- Return type:
- class cubie.outputhandling.output_sizes.SummariesBufferSizes(state: int | None = 1, observables: int | None = 1, per_variable: int | None = 1)[source]
Bases:
ArraySizingClass
Buffer sizes for summary metric calculations.
This class provides a clean interface for accessing summary buffer sizes with descriptive names rather than accessing them through more complex object hierarchies.
Notes
Most commonly used via the from_output_fns class method which extracts the relevant sizes from an OutputFunctions object.
- classmethod from_output_fns(output_fns: OutputFunctions) SummariesBufferSizes [source]
Create buffer sizes from an OutputFunctions object.
- Parameters:
output_fns (OutputFunctions) – Output functions object containing buffer size information.
- Returns:
Buffer sizes extracted from the output functions configuration.
- Return type: