Backends API
Backend Interface
Backend abstraction layer for array operations.
This module provides a unified interface for array operations that can be executed on different backends (CPU with NumPy, GPU with CuPy, etc.).
- class prismo.backends.Backend[source]
Bases:
ABCAbstract base class for computational backends.
All backends must implement this interface to provide array operations for electromagnetic field computations.
- abstractmethod asarray(data, dtype=None)[source]
Convert data to backend array (no-copy if possible).
- Return type:
- abstractmethod to_numpy(array)[source]
Convert backend array to NumPy array (for CPU).
- Return type:
- prismo.backends.get_backend(backend=None, device_id=0)[source]
Get a backend instance.
If no backend is specified, returns the current global backend or automatically selects the best available backend (GPU preferred).
- prismo.backends.set_backend(backend, device_id=0)[source]
Set the global backend for computations.
- Parameters:
- Returns:
The initialized backend instance.
- Return type:
- Raises:
ValueError – If the requested backend is not available.
- prismo.backends.list_available_backends()[source]
List all available backends on this system.
- Returns:
List of backend names (e.g., [‘numpy’, ‘cupy’, ‘metal’]).
- Return type:
List[str]
- class prismo.backends.MetalBackend(device_id=0, use_unified_memory=True)[source]
Bases:
BackendMetal-based backend for GPU computations on macOS.
This backend uses Metal for GPU-accelerated array operations. Requires macOS and Metal framework to be available.
- Parameters:
- asarray(data, dtype=None)[source]
Convert data to backend array (no-copy if possible).
- Return type:
Backend Functions
get_backend
set_backend
- prismo.backends.set_backend(backend, device_id=0)[source]
Set the global backend for computations.
- Parameters:
- Returns:
The initialized backend instance.
- Return type:
- Raises:
ValueError – If the requested backend is not available.
list_available_backends
Backend Classes
Backend (Abstract)
- class prismo.backends.base.Backend[source]
Abstract base class for computational backends.
All backends must implement this interface to provide array operations for electromagnetic field computations.
- abstractmethod asarray(data, dtype=None)[source]
Convert data to backend array (no-copy if possible).
- Return type:
- abstractmethod to_numpy(array)[source]
Convert backend array to NumPy array (for CPU).
- Return type:
NumPyBackend
- class prismo.backends.numpy_backend.NumPyBackend[source]
NumPy-based backend for CPU computations.
This backend uses NumPy for all array operations and is always available.
- asarray(data, dtype=None)[source]
Convert data to backend array (no-copy if possible).
- Return type:
CuPyBackend
- class prismo.backends.cupy_backend.CuPyBackend(device_id=0)[source]
CuPy-based backend for GPU computations.
This backend uses CuPy for GPU-accelerated array operations. Requires CUDA and CuPy to be installed.
- Parameters:
device_id (int, optional) – CUDA device ID to use. Default is 0.
- asarray(data, dtype=None)[source]
Convert data to backend array (no-copy if possible).
- Return type:
- to_numpy(array)[source]
Convert CuPy array to NumPy array (transfers from GPU to CPU).
- Return type: