Package gov.nih.mipav.model.algorithms
Class CeresSolver.SchurEliminator
java.lang.Object
gov.nih.mipav.model.algorithms.CeresSolver.SchurEliminatorBase
gov.nih.mipav.model.algorithms.CeresSolver.SchurEliminator
- Enclosing class:
CeresSolver
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate booleanprivate double[](package private) intprivate double[](package private) Vector<CeresSolver.Chunk> private CeresSolver.Contextprivate intprivate intprivate intprivate intprivate int(package private) int -
Constructor Summary
ConstructorsConstructorDescriptionSchurEliminator(int kRowBlockSize, int kEBlockSize, int kFBlockSize, CeresSolver.LinearSolverOptions options) -
Method Summary
Modifier and TypeMethodDescriptionvoidBackSubstitute(CeresSolver.BlockSparseMatrix A, double[] b, double[] D, double[] z, double[] y) private voidChunkDiagonalBlockAndGradient(CeresSolver.Chunk chunk, CeresSolver.BlockSparseMatrix A, double[] b, int row_block_counter, double[][] etearr, double[] g, double[] buffer, CeresSolver.BlockRandomAccessMatrix lhs) private voidChunkOuterProduct(int thread_id, CeresSolver.CompressedRowBlockStructure bs, double[][] inverse_ete, double[] buffer, HashMap<Integer, Integer> buffer_layout, CeresSolver.BlockRandomAccessMatrix lhs) private voidEBlockRowOuterProduct(CeresSolver.BlockSparseMatrix A, int row_block_index, CeresSolver.BlockRandomAccessMatrix lhs) voidEliminate(CeresSolver.BlockSparseMatrix A, double[] b, double[] D, CeresSolver.BlockRandomAccessMatrix lhs, double[] rhs) voidfinalize()voidInit(int num_eliminate_blocks, boolean assume_full_rank_ete, CeresSolver.CompressedRowBlockStructure bs) private voidNoEBlockRowOuterProduct(CeresSolver.BlockSparseMatrix A, int row_block_index, CeresSolver.BlockRandomAccessMatrix lhs) private voidNoEBlockRowsUpdate(CeresSolver.BlockSparseMatrix A, double[] b, int row_block_counter, CeresSolver.BlockRandomAccessMatrix lhs, double[] rhs) private voidUpdateRhs(CeresSolver.Chunk chunk, CeresSolver.BlockSparseMatrix A, double[] b, int row_block_counter, double[] inverse_ete_g, double[] rhs)
-
Field Details
-
kRowBlockSize
private int kRowBlockSize -
kEBlockSize
private int kEBlockSize -
kFBlockSize
private int kFBlockSize -
num_threads_
private int num_threads_ -
context_
-
num_eliminate_blocks_
private int num_eliminate_blocks_ -
assume_full_rank_ete_
private boolean assume_full_rank_ete_ -
lhs_row_layout_
-
chunks_
Vector<CeresSolver.Chunk> chunks_ -
buffer_
private double[] buffer_ -
chunk_outer_product_buffer_
private double[] chunk_outer_product_buffer_ -
buffer_size_
int buffer_size_ -
uneliminated_row_begins_
int uneliminated_row_begins_ -
rhs_locks_
-
-
Constructor Details
-
SchurEliminator
public SchurEliminator(int kRowBlockSize, int kEBlockSize, int kFBlockSize, CeresSolver.LinearSolverOptions options)
-
-
Method Details
-
finalize
public void finalize() -
Init
public void Init(int num_eliminate_blocks, boolean assume_full_rank_ete, CeresSolver.CompressedRowBlockStructure bs) - Specified by:
Initin classCeresSolver.SchurEliminatorBase
-
Eliminate
public void Eliminate(CeresSolver.BlockSparseMatrix A, double[] b, double[] D, CeresSolver.BlockRandomAccessMatrix lhs, double[] rhs) - Specified by:
Eliminatein classCeresSolver.SchurEliminatorBase
-
BackSubstitute
public void BackSubstitute(CeresSolver.BlockSparseMatrix A, double[] b, double[] D, double[] z, double[] y) - Specified by:
BackSubstitutein classCeresSolver.SchurEliminatorBase
-
NoEBlockRowsUpdate
private void NoEBlockRowsUpdate(CeresSolver.BlockSparseMatrix A, double[] b, int row_block_counter, CeresSolver.BlockRandomAccessMatrix lhs, double[] rhs) -
NoEBlockRowOuterProduct
private void NoEBlockRowOuterProduct(CeresSolver.BlockSparseMatrix A, int row_block_index, CeresSolver.BlockRandomAccessMatrix lhs) -
ChunkOuterProduct
private void ChunkOuterProduct(int thread_id, CeresSolver.CompressedRowBlockStructure bs, double[][] inverse_ete, double[] buffer, HashMap<Integer, Integer> buffer_layout, CeresSolver.BlockRandomAccessMatrix lhs) -
UpdateRhs
private void UpdateRhs(CeresSolver.Chunk chunk, CeresSolver.BlockSparseMatrix A, double[] b, int row_block_counter, double[] inverse_ete_g, double[] rhs) -
ChunkDiagonalBlockAndGradient
private void ChunkDiagonalBlockAndGradient(CeresSolver.Chunk chunk, CeresSolver.BlockSparseMatrix A, double[] b, int row_block_counter, double[][] etearr, double[] g, double[] buffer, CeresSolver.BlockRandomAccessMatrix lhs) -
EBlockRowOuterProduct
private void EBlockRowOuterProduct(CeresSolver.BlockSparseMatrix A, int row_block_index, CeresSolver.BlockRandomAccessMatrix lhs)
-