Arcane  4.1.12.0
Developer documentation
Loading...
Searching...
No Matches
Arcane::AlephKernel Class Reference
Inheritance diagram for Arcane::AlephKernel:
Collaboration diagram for Arcane::AlephKernel:

Public Member Functions

 AlephKernel (IParallelMng *, Integer, IAlephFactory *, Integer=0, Integer=0, bool=false)
 AlephKernel (ITraceMng *, ISubDomain *, IAlephFactory *, Integer=0, Integer=0, bool=false)
 AlephKernel (ISubDomain *, Integer alephUnderlyingSolver=0, Integer alephNumberOfCores=0)
void setup (void)
void initialize (Integer, Integer)
void break_and_return (void)
AlephVectorcreateSolverVector (void)
AlephMatrixcreateSolverMatrix (void)
void postSolver (AlephParams *, AlephMatrix *, AlephVector *, AlephVector *)
void workSolver (void)
AlephVectorsyncSolver (Integer, Integer &, Real *)
IAlephFactoryfactory ()
AlephTopologytopology ()
AlephOrderingordering ()
AlephIndexingindexing ()
Integer rank ()
Integer size ()
ISubDomainsubDomain ()
bool isParallel ()
bool isInitialized ()
bool thereIsOthers ()
bool isAnOther ()
IParallelMngparallel ()
IParallelMngworld ()
Integer underlyingSolver ()
bool isCellOrdering ()
Integer index ()
bool configured ()
void mapranks (Array< Integer > &)
bool hitranks (Integer, ArrayView< Integer >)
Integer nbRanksPerSolver ()
ArrayView< IntegersolverRanks (Integer i)
IParallelMngsubParallelMng (Integer i)
IAlephTopologygetTopologyImplementation (Integer i)
AlephKernelSolverInitializeArgumentssolverInitializeArgs ()
Public Member Functions inherited from Arcane::TraceAccessor
 TraceAccessor (ITraceMng *m)
 Constructs an accessor via the trace manager m.
 TraceAccessor (const TraceAccessor &rhs)
 Copy constructor.
TraceAccessoroperator= (const TraceAccessor &rhs)
 Copy assignment operator.
virtual ~TraceAccessor ()
 Frees resources.
ITraceMngtraceMng () const
 Trace manager.
TraceMessage info () const
 Flow for an information message.
TraceMessage pinfo () const
 Flow for a parallel information message.
TraceMessage info (char category) const
 Flow for an information message of a given category.
TraceMessage pinfo (char category) const
 Flow for a parallel information message of a given category.
TraceMessage info (bool v) const
 Flow for an information message.
TraceMessage warning () const
 Flow for a warning message.
TraceMessage pwarning () const
TraceMessage error () const
 Flow for an error message.
TraceMessage perror () const
TraceMessage log () const
 Flow for a log message.
TraceMessage plog () const
 Flow for a log message.
TraceMessage logdate () const
 Flow for a log message preceded by the date.
TraceMessage fatal () const
 Flow for a fatal error message.
TraceMessage pfatal () const
 Flow for a parallel fatal error message.
TraceMessageDbg debug (Trace::eDebugLevel=Trace::Medium) const
 Flow for a debug message.
Trace::eDebugLevel configDbgLevel () const
 Debug level of the configuration file.
TraceMessage info (Int32 verbose_level) const
 Flow for an information message of a given level.
TraceMessage linfo () const
 Flow for an information message with the local information level of this instance.
TraceMessage linfo (Int32 relative_level) const
 Flow for an information message with the local information level of this instance.
void fatalMessage (const StandaloneTraceMessage &o) const

Static Public Attributes

static constexpr int SOLVER_HYPRE = 2
static constexpr int SOLVER_TRILINOS = 3
static constexpr int SOLVER_CUDA = 4
static constexpr int SOLVER_PETSC = 5

Private Member Functions

Ref< IParallelMng_createUnderlyingParallelMng (Integer)

Private Attributes

ISubDomainm_sub_domain = nullptr
bool m_isParallel
Integer m_rank
Integer m_size
Integer m_world_size
bool m_there_are_idles
bool m_i_am_an_other
IParallelMngm_parallel
IParallelMngm_world_parallel
bool m_configured = false
IAlephFactorym_factory = nullptr
AlephTopologym_topology = nullptr
AlephOrderingm_ordering = nullptr
AlephIndexingm_indexing = nullptr
Integer m_aleph_vector_idx
const Integer m_underlying_solver
const bool m_reorder
Integer m_solver_index
Integer m_solver_size
bool m_solved
bool m_has_been_initialized
AlephKernelSolverInitializeArguments m_solver_initialize_args
UniqueArray< SharedArray< Integer > > m_solver_ranks
UniqueArray< Ref< IParallelMng > > m_sub_parallel_mng_queue
UniqueArray< AlephMatrix * > m_matrix_queue
UniqueArray< AlephKernelArguments * > m_arguments_queue
UniqueArray< AlephKernelResults * > m_results_queue

Additional Inherited Members

Protected Member Functions inherited from Arcane::TraceAccessor
void _setLocalVerboseLevel (Int32 v)
Int32 _localVerboseLevel () const

Detailed Description

Definition at line 115 of file AlephKernel.h.

Constructor & Destructor Documentation

◆ AlephKernel() [1/3]

Arcane::AlephKernel::AlephKernel ( IParallelMng * wpm,
Integer size,
IAlephFactory * factory,
Integer alephUnderlyingSolver = 0,
Integer alephNumberOfCores = 0,
bool alephOrdering = false )

AlephKernel used by Kappa where m_sub_domain is set to 'nullptr'.

Definition at line 36 of file AlephKernel.cc.

References setup(), Arcane::TraceAccessor::TraceAccessor(), and Arcane::TraceAccessor::traceMng().

Referenced by createSolverVector(), setup(), and syncSolver().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AlephKernel() [2/3]

Arcane::AlephKernel::AlephKernel ( ITraceMng * tm,
ISubDomain * sd,
IAlephFactory * factory,
Integer alephUnderlyingSolver = 0,
Integer alephNumberOfCores = 0,
bool alephOrdering = false )

Standard kernel whose factory is passed as an argument This corresponds to the old API still used in some Arcane tests and especially in the code

Definition at line 76 of file AlephKernel.cc.

References setup(), and Arcane::TraceAccessor::TraceAccessor().

Here is the call graph for this function:

◆ AlephKernel() [3/3]

Arcane::AlephKernel::AlephKernel ( ISubDomain * sd,
Integer alephUnderlyingSolver = 0,
Integer alephNumberOfCores = 0 )

Minimalist Aleph Kernel to use with indexing This kernel creates its own factory and must manage its initialization. It also has underlying_solver and number_of_cores options.

Definition at line 114 of file AlephKernel.cc.

References Arcane::TraceAccessor::debug(), setup(), Arcane::TraceAccessor::TraceAccessor(), and Arcane::TraceAccessor::traceMng().

Here is the call graph for this function:

◆ ~AlephKernel()

Arcane::AlephKernel::~AlephKernel ( void )

Definition at line 194 of file AlephKernel.cc.

Member Function Documentation

◆ _createUnderlyingParallelMng()

Ref< IParallelMng > Arcane::AlephKernel::_createUnderlyingParallelMng ( Integer nb_wanted_sites)
private

Definition at line 304 of file AlephKernel.cc.

◆ break_and_return()

void Arcane::AlephKernel::break_and_return ( void )

Definition at line 256 of file AlephKernel.cc.

◆ configured()

bool Arcane::AlephKernel::configured ( )
inline

Definition at line 161 of file AlephKernel.h.

◆ createSolverMatrix()

AlephMatrix * Arcane::AlephKernel::createSolverMatrix ( void )

Definition at line 323 of file AlephKernel.cc.

◆ createSolverVector()

AlephVector * Arcane::AlephKernel::createSolverVector ( void )

WARNING: the 1st call returns the Bth RHS vector, the 2nd call returns the Xth solution vector. c4b28f2

Definition at line 401 of file AlephKernel.cc.

References AlephKernel(), Arcane::TraceAccessor::debug(), Arcane::ITraceMng::flush(), and Arcane::TraceAccessor::traceMng().

Here is the call graph for this function:

◆ factory()

IAlephFactory * Arcane::AlephKernel::factory ( )
inline

Definition at line 145 of file AlephKernel.h.

◆ getTopologyImplementation()

IAlephTopology * Arcane::AlephKernel::getTopologyImplementation ( Integer i)
inline

Definition at line 167 of file AlephKernel.h.

◆ hitranks()

bool Arcane::AlephKernel::hitranks ( Integer rank,
ArrayView< Integer > ranks )

Definition at line 292 of file AlephKernel.cc.

◆ index()

Integer Arcane::AlephKernel::index ( )
inline

Definition at line 160 of file AlephKernel.h.

◆ indexing()

AlephIndexing * Arcane::AlephKernel::indexing ( )
inline

Definition at line 148 of file AlephKernel.h.

◆ initialize()

void Arcane::AlephKernel::initialize ( Integer global_nb_row,
Integer local_nb_row )

Definition at line 230 of file AlephKernel.cc.

◆ isAnOther()

bool Arcane::AlephKernel::isAnOther ( )
inline

Definition at line 155 of file AlephKernel.h.

◆ isCellOrdering()

bool Arcane::AlephKernel::isCellOrdering ( )
inline

Definition at line 159 of file AlephKernel.h.

◆ isInitialized()

bool Arcane::AlephKernel::isInitialized ( )
inline

Definition at line 153 of file AlephKernel.h.

◆ isParallel()

bool Arcane::AlephKernel::isParallel ( )
inline

Definition at line 152 of file AlephKernel.h.

◆ mapranks()

void Arcane::AlephKernel::mapranks ( Array< Integer > & ranks)

Mod[Floor[ Table[n, {n, mSolverIndex*mSize, (mSolverIndex + 1)*mSize - 1}]/(mSize/ mSolverSize)], mSize]

Definition at line 271 of file AlephKernel.cc.

References Arcane::TraceAccessor::debug(), Arcane::ITraceMng::flush(), and Arcane::TraceAccessor::traceMng().

Here is the call graph for this function:

◆ nbRanksPerSolver()

Integer Arcane::AlephKernel::nbRanksPerSolver ( )
inline

Definition at line 164 of file AlephKernel.h.

◆ ordering()

AlephOrdering * Arcane::AlephKernel::ordering ( )
inline

Definition at line 147 of file AlephKernel.h.

◆ parallel()

IParallelMng * Arcane::AlephKernel::parallel ( )
inline

Definition at line 156 of file AlephKernel.h.

◆ postSolver()

void Arcane::AlephKernel::postSolver ( AlephParams * params,
AlephMatrix * fromThisMatrix,
AlephVector * fromeThisX,
AlephVector * fromThisB )

Definition at line 427 of file AlephKernel.cc.

◆ rank()

Integer Arcane::AlephKernel::rank ( )
inline

Definition at line 149 of file AlephKernel.h.

◆ setup()

void Arcane::AlephKernel::setup ( void )

Setup: general configuration

Definition at line 149 of file AlephKernel.cc.

References Arcane::Array< T >::add(), AlephKernel(), Arcane::TraceAccessor::debug(), and Arcane::Array< T >::view().

Referenced by AlephKernel(), AlephKernel(), and AlephKernel().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ size()

Integer Arcane::AlephKernel::size ( )
inline

Definition at line 150 of file AlephKernel.h.

◆ solverInitializeArgs()

AlephKernelSolverInitializeArguments & Arcane::AlephKernel::solverInitializeArgs ( )
inline

Definition at line 171 of file AlephKernel.h.

◆ solverRanks()

ArrayView< Integer > Arcane::AlephKernel::solverRanks ( Integer i)
inline

Definition at line 165 of file AlephKernel.h.

◆ subDomain()

ISubDomain * Arcane::AlephKernel::subDomain ( void )

Definition at line 600 of file AlephKernel.cc.

◆ subParallelMng()

IParallelMng * Arcane::AlephKernel::subParallelMng ( Integer i)
inline

Definition at line 166 of file AlephKernel.h.

◆ syncSolver()

AlephVector * Arcane::AlephKernel::syncSolver ( Integer gid,
Integer & nb_iteration,
Real * residual_norm )

These are the arguments that must be filled bf8d3adf

Definition at line 501 of file AlephKernel.cc.

References AlephKernel(), Arcane::TraceAccessor::debug(), Arcane::ITraceMng::flush(), and Arcane::TraceAccessor::traceMng().

Here is the call graph for this function:

◆ thereIsOthers()

bool Arcane::AlephKernel::thereIsOthers ( )
inline

Definition at line 154 of file AlephKernel.h.

◆ topology()

AlephTopology * Arcane::AlephKernel::topology ( )
inline

Definition at line 146 of file AlephKernel.h.

◆ underlyingSolver()

Integer Arcane::AlephKernel::underlyingSolver ( )
inline

Definition at line 158 of file AlephKernel.h.

◆ workSolver()

void Arcane::AlephKernel::workSolver ( void )

Definition at line 542 of file AlephKernel.cc.

◆ world()

IParallelMng * Arcane::AlephKernel::world ( )
inline

Definition at line 157 of file AlephKernel.h.

Member Data Documentation

◆ m_aleph_vector_idx

Integer Arcane::AlephKernel::m_aleph_vector_idx
private

Definition at line 196 of file AlephKernel.h.

◆ m_arguments_queue

UniqueArray<AlephKernelArguments*> Arcane::AlephKernel::m_arguments_queue
private

Definition at line 210 of file AlephKernel.h.

◆ m_configured

bool Arcane::AlephKernel::m_configured = false
private

Definition at line 191 of file AlephKernel.h.

◆ m_factory

IAlephFactory* Arcane::AlephKernel::m_factory = nullptr
private

Definition at line 192 of file AlephKernel.h.

◆ m_has_been_initialized

bool Arcane::AlephKernel::m_has_been_initialized
private

Definition at line 202 of file AlephKernel.h.

◆ m_i_am_an_other

bool Arcane::AlephKernel::m_i_am_an_other
private

Definition at line 185 of file AlephKernel.h.

◆ m_indexing

AlephIndexing* Arcane::AlephKernel::m_indexing = nullptr
private

Definition at line 195 of file AlephKernel.h.

◆ m_isParallel

bool Arcane::AlephKernel::m_isParallel
private

Definition at line 180 of file AlephKernel.h.

◆ m_matrix_queue

UniqueArray<AlephMatrix*> Arcane::AlephKernel::m_matrix_queue
private

Definition at line 209 of file AlephKernel.h.

◆ m_ordering

AlephOrdering* Arcane::AlephKernel::m_ordering = nullptr
private

Definition at line 194 of file AlephKernel.h.

◆ m_parallel

IParallelMng* Arcane::AlephKernel::m_parallel
private

Definition at line 186 of file AlephKernel.h.

◆ m_rank

Integer Arcane::AlephKernel::m_rank
private

Definition at line 181 of file AlephKernel.h.

◆ m_reorder

const bool Arcane::AlephKernel::m_reorder
private

Definition at line 198 of file AlephKernel.h.

◆ m_results_queue

UniqueArray<AlephKernelResults*> Arcane::AlephKernel::m_results_queue
private

Definition at line 211 of file AlephKernel.h.

◆ m_size

Integer Arcane::AlephKernel::m_size
private

Definition at line 182 of file AlephKernel.h.

◆ m_solved

bool Arcane::AlephKernel::m_solved
private

Definition at line 201 of file AlephKernel.h.

◆ m_solver_index

Integer Arcane::AlephKernel::m_solver_index
private

Definition at line 199 of file AlephKernel.h.

◆ m_solver_initialize_args

AlephKernelSolverInitializeArguments Arcane::AlephKernel::m_solver_initialize_args
private

Definition at line 203 of file AlephKernel.h.

◆ m_solver_ranks

UniqueArray<SharedArray<Integer> > Arcane::AlephKernel::m_solver_ranks
private

Definition at line 207 of file AlephKernel.h.

◆ m_solver_size

Integer Arcane::AlephKernel::m_solver_size
private

Definition at line 200 of file AlephKernel.h.

◆ m_sub_domain

ISubDomain* Arcane::AlephKernel::m_sub_domain = nullptr
private

Definition at line 179 of file AlephKernel.h.

◆ m_sub_parallel_mng_queue

UniqueArray<Ref<IParallelMng> > Arcane::AlephKernel::m_sub_parallel_mng_queue
private

Definition at line 208 of file AlephKernel.h.

◆ m_there_are_idles

bool Arcane::AlephKernel::m_there_are_idles
private

Definition at line 184 of file AlephKernel.h.

◆ m_topology

AlephTopology* Arcane::AlephKernel::m_topology = nullptr
private

Definition at line 193 of file AlephKernel.h.

◆ m_underlying_solver

const Integer Arcane::AlephKernel::m_underlying_solver
private

Definition at line 197 of file AlephKernel.h.

◆ m_world_parallel

IParallelMng* Arcane::AlephKernel::m_world_parallel
private

Definition at line 187 of file AlephKernel.h.

◆ m_world_size

Integer Arcane::AlephKernel::m_world_size
private

Definition at line 183 of file AlephKernel.h.

◆ SOLVER_CUDA

int Arcane::AlephKernel::SOLVER_CUDA = 4
staticconstexpr

Definition at line 122 of file AlephKernel.h.

◆ SOLVER_HYPRE

int Arcane::AlephKernel::SOLVER_HYPRE = 2
staticconstexpr

Definition at line 120 of file AlephKernel.h.

◆ SOLVER_PETSC

int Arcane::AlephKernel::SOLVER_PETSC = 5
staticconstexpr

Definition at line 123 of file AlephKernel.h.

◆ SOLVER_TRILINOS

int Arcane::AlephKernel::SOLVER_TRILINOS = 3
staticconstexpr

Definition at line 121 of file AlephKernel.h.


The documentation for this class was generated from the following files: