pub struct SuperLuDistSolver { /* private fields */ }superlu_dist only.Expand description
SuperLU_DIST distributed direct solver
Implementations§
Source§impl SuperLuDistSolver
impl SuperLuDistSolver
Sourcepub fn with_options(options: SuperLuDistOptions) -> Self
pub fn with_options(options: SuperLuDistOptions) -> Self
Create a new SuperLU_DIST solver with custom options
Sourcepub fn set_diagonal_pivot_threshold(&mut self, threshold: f64) -> &mut Self
pub fn set_diagonal_pivot_threshold(&mut self, threshold: f64) -> &mut Self
Set the diagonal pivot threshold
Sourcepub fn set_column_permutation(&mut self, perm: ColumnPermutation) -> &mut Self
pub fn set_column_permutation(&mut self, perm: ColumnPermutation) -> &mut Self
Set the column permutation strategy
Sourcepub fn set_iterative_refinement(
&mut self,
refine: IterativeRefinement,
) -> &mut Self
pub fn set_iterative_refinement( &mut self, refine: IterativeRefinement, ) -> &mut Self
Set the iterative refinement strategy
Sourcepub fn set_print_level(&mut self, level: u8) -> &mut Self
pub fn set_print_level(&mut self, level: u8) -> &mut Self
Set the print level for diagnostics
Sourcepub fn set_panel_size(&mut self, size: usize) -> &mut Self
pub fn set_panel_size(&mut self, size: usize) -> &mut Self
Set the panel size for local dense factorization
Sourcepub fn set_3d_factorization(
&mut self,
enable: bool,
depth: Option<usize>,
) -> &mut Self
pub fn set_3d_factorization( &mut self, enable: bool, depth: Option<usize>, ) -> &mut Self
Enable 3D communication-avoiding factorization
Sourcepub fn set_memory_tradeoff(&mut self, factor: f64) -> &mut Self
pub fn set_memory_tradeoff(&mut self, factor: f64) -> &mut Self
Set memory trade-off factor for 3D algorithm
Sourcepub fn set_max_concurrent_panels(&mut self, max_panels: usize) -> &mut Self
pub fn set_max_concurrent_panels(&mut self, max_panels: usize) -> &mut Self
Set maximum concurrent panels
Sourcepub fn set_async_panel_updates(&mut self, enable: bool) -> &mut Self
pub fn set_async_panel_updates(&mut self, enable: bool) -> &mut Self
Enable asynchronous panel updates
Sourcepub fn set_static_pivoting(&mut self, enable: bool) -> &mut Self
pub fn set_static_pivoting(&mut self, enable: bool) -> &mut Self
Set static pivoting mode
Sourcepub fn set_row_permutation(&mut self, perm: RowPermutation) -> &mut Self
pub fn set_row_permutation(&mut self, perm: RowPermutation) -> &mut Self
Set the row permutation strategy
Sourcepub fn set_replace_tiny_pivots(&mut self, enable: bool) -> &mut Self
pub fn set_replace_tiny_pivots(&mut self, enable: bool) -> &mut Self
Set whether to replace tiny pivots
Sourcepub fn set_process_grid(&mut self, rows: usize, cols: usize) -> &mut Self
pub fn set_process_grid(&mut self, rows: usize, cols: usize) -> &mut Self
Set the process grid dimensions
Sourcepub fn set_process_grid_auto(&mut self) -> &mut Self
pub fn set_process_grid_auto(&mut self) -> &mut Self
Use automatic process grid determination
Sourcepub fn with_complete_options(self, options: SuperLuDistOptions) -> Self
pub fn with_complete_options(self, options: SuperLuDistOptions) -> Self
Configure a complete set of options via SuperLuDistOptions
Sourcepub fn builder() -> SuperLuDistBuilder
pub fn builder() -> SuperLuDistBuilder
Create a new solver with fluent configuration
Sourcepub fn options(&self) -> &SuperLuDistOptions
pub fn options(&self) -> &SuperLuDistOptions
Get a reference to the current options
Sourcepub fn enable_iterative_refinement(&mut self) -> &mut Self
pub fn enable_iterative_refinement(&mut self) -> &mut Self
Enable iterative refinement with default configuration
Sourcepub fn set_refinement_config(&mut self, config: RefinementConfig) -> &mut Self
pub fn set_refinement_config(&mut self, config: RefinementConfig) -> &mut Self
Configure iterative refinement with custom settings
Sourcepub fn set_residual_method(&mut self, method: ResidualMethod) -> &mut Self
pub fn set_residual_method(&mut self, method: ResidualMethod) -> &mut Self
Set the residual computation method for iterative refinement
Sourcepub fn disable_iterative_refinement(&mut self) -> &mut Self
pub fn disable_iterative_refinement(&mut self) -> &mut Self
Disable iterative refinement
Sourcepub fn refinement_stats(&self) -> Option<&RefinementStats>
pub fn refinement_stats(&self) -> Option<&RefinementStats>
Get refinement statistics from the last solve (if available)
Sourcepub fn set_workspace_memory_limit(&mut self, limit_mb: usize) -> &mut Self
pub fn set_workspace_memory_limit(&mut self, limit_mb: usize) -> &mut Self
Configure workspace memory settings
Sourcepub fn set_aggressive_memory_reuse(&mut self, enable: bool) -> &mut Self
pub fn set_aggressive_memory_reuse(&mut self, enable: bool) -> &mut Self
Enable aggressive memory reuse for better performance
Sourcepub fn set_preallocation_strategy(
&mut self,
strategy: PreallocationStrategy,
) -> &mut Self
pub fn set_preallocation_strategy( &mut self, strategy: PreallocationStrategy, ) -> &mut Self
Set workspace preallocation strategy
Sourcepub fn workspace_memory_stats(&self) -> Option<WorkspaceMemoryStats>
pub fn workspace_memory_stats(&self) -> Option<WorkspaceMemoryStats>
Get workspace memory statistics (if workspace is set up)
Sourcepub fn optimize_workspace(&mut self) -> Result<(), KError>
pub fn optimize_workspace(&mut self) -> Result<(), KError>
Optimize workspace memory usage
Sourcepub fn clear_workspace_temp_data(&mut self) -> Result<(), KError>
pub fn clear_workspace_temp_data(&mut self) -> Result<(), KError>
Clear workspace temporary data to free memory
Sourcepub fn workspace_needs_cleanup(&self) -> bool
pub fn workspace_needs_cleanup(&self) -> bool
Check if workspace needs cleanup due to memory pressure
pub fn clear_factors(&mut self)
pub fn has_factors(&self) -> bool
Trait Implementations§
Source§impl Default for SuperLuDistSolver
impl Default for SuperLuDistSolver
Source§impl LinearSolver<CsrMatrix<f64>, Vec<f64>> for SuperLuDistSolver
impl LinearSolver<CsrMatrix<f64>, Vec<f64>> for SuperLuDistSolver
type Error = KError
type Scalar = f64
fn solve( &mut self, a: &CsrMatrix<f64>, pc: Option<&(dyn Preconditioner<CsrMatrix<f64>, Vec<f64>> + '_)>, b: &Vec<f64>, x: &mut Vec<f64>, pc_side: PcSide, comm: &UniverseComm, monitors: Option<&[Box<MonitorCallback<Self::Scalar>>]>, _work: Option<&mut Workspace>, ) -> Result<SolveStats<f64>, KError>
fn setup_workspace(&mut self, _work: &mut Workspace)
fn solve_simple(
&mut self,
a: &M,
pc: Option<&(dyn Preconditioner<M, V> + '_)>,
b: &V,
x: &mut V,
pc_side: PcSide,
comm: &UniverseComm,
) -> Result<SolveStats<Self::Scalar>, Self::Error>where
Self: Sized,
fn solve_with_monitors(
&mut self,
a: &M,
pc: Option<&(dyn Preconditioner<M, V> + '_)>,
b: &V,
x: &mut V,
pc_side: PcSide,
comm: &UniverseComm,
monitors: &[Box<MonitorCallback<Self::Scalar>>],
) -> Result<SolveStats<Self::Scalar>, Self::Error>where
Self: Sized,
fn solve_with_workspace(
&mut self,
a: &M,
pc: Option<&(dyn Preconditioner<M, V> + '_)>,
b: &V,
x: &mut V,
pc_side: PcSide,
comm: &UniverseComm,
work: &mut Workspace,
) -> Result<SolveStats<Self::Scalar>, Self::Error>where
Self: Sized,
Source§impl Solver<CsrMatrix<f64>> for SuperLuDistSolver
impl Solver<CsrMatrix<f64>> for SuperLuDistSolver
type Error = KError
fn setup( &mut self, a: &CsrMatrix<f64>, comm: &UniverseComm, ) -> Result<(), Self::Error>
fn factor(&mut self, a: &CsrMatrix<f64>) -> Result<(), Self::Error>
fn solve( &mut self, b: &[f64], x: &mut [f64], comm: &UniverseComm, ) -> Result<SolveStats<f64>, Self::Error>
fn reuse_factorization(&self) -> bool
Auto Trait Implementations§
impl Freeze for SuperLuDistSolver
impl RefUnwindSafe for SuperLuDistSolver
impl Send for SuperLuDistSolver
impl Sync for SuperLuDistSolver
impl Unpin for SuperLuDistSolver
impl UnsafeUnpin for SuperLuDistSolver
impl UnwindSafe for SuperLuDistSolver
Blanket Implementations§
Source§impl<Src, Scheme> ApproxFrom<Src, Scheme> for Srcwhere
Scheme: ApproxScheme,
impl<Src, Scheme> ApproxFrom<Src, Scheme> for Srcwhere
Scheme: ApproxScheme,
Source§fn approx_from(src: Src) -> Result<Src, <Src as ApproxFrom<Src, Scheme>>::Err>
fn approx_from(src: Src) -> Result<Src, <Src as ApproxFrom<Src, Scheme>>::Err>
Source§impl<Dst, Src, Scheme> ApproxInto<Dst, Scheme> for Srcwhere
Dst: ApproxFrom<Src, Scheme>,
Scheme: ApproxScheme,
impl<Dst, Src, Scheme> ApproxInto<Dst, Scheme> for Srcwhere
Dst: ApproxFrom<Src, Scheme>,
Scheme: ApproxScheme,
Source§type Err = <Dst as ApproxFrom<Src, Scheme>>::Err
type Err = <Dst as ApproxFrom<Src, Scheme>>::Err
Source§fn approx_into(self) -> Result<Dst, <Src as ApproxInto<Dst, Scheme>>::Err>
fn approx_into(self) -> Result<Dst, <Src as ApproxInto<Dst, Scheme>>::Err>
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T, Dst> ConvAsUtil<Dst> for T
impl<T, Dst> ConvAsUtil<Dst> for T
Source§impl<T> ConvUtil for T
impl<T> ConvUtil for T
Source§fn approx_as<Dst>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst>,
fn approx_as<Dst>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst>,
Source§fn approx_as_by<Dst, Scheme>(self) -> Result<Dst, Self::Err>
fn approx_as_by<Dst, Scheme>(self) -> Result<Dst, Self::Err>
Source§impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T, U> Imply<T> for U
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> ShellContext for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§unsafe fn to_subset_unchecked(&self) -> SS
unsafe fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.