PaStiX Handbook
6.4.0
|
Data Structures | |
struct | blendctrl_s |
The type and structure definitions. More... | |
Typedefs | |
typedef struct blendctrl_s | BlendCtrl |
The type and structure definitions. | |
Functions | |
int | blendCtrlInit (pastix_data_t *pastix_data, BlendCtrl *ctrl) |
Initialize the Blend control structure. More... | |
void | blendCtrlExit (BlendCtrl *ctrl) |
Finalize the Blend control structure. More... | |
void | getCommunicationCosts (const BlendCtrl *ctrl, pastix_int_t clustsrc, pastix_int_t clustdst, pastix_int_t sync_comm_nbr, double *startup, double *bandwidth) |
Return the communication cost between two cores. More... | |
This module handles all option to parameterize the final analyze step that performs proportional mapping and the generation of the final solver matrix structure per MPI process.
struct blendctrl_s |
The type and structure definitions.
Definition at line 28 of file blendctrl.h.
Data Fields | ||
---|---|---|
pastix_int_t | count_ops |
Print costs in term of number of elementary operations |
pastix_int_t | debug |
Make additional checks after each step |
pastix_int_t | timer |
Print execution times |
pastix_int_t | ooc |
Enable the out-of-core version of Pastix (Option unused for now) |
pastix_int_t | ricar |
Enable the ILU(k) dedicated steps |
pastix_int_t | leader |
Leader for sequential tasks |
pastix_int_t | allcand |
All processors are candidate for each cblk |
pastix_int_t | nocrossproc |
Forbid a processor to be candidate in two different branches shared with different partners |
pastix_int_t | costlevel |
Enable/disable computation and use of subtree cost |
pastix_int_t | blcolmin |
Minimun number of columns for a good use of BLAS primitives |
pastix_int_t | blcolmax |
Maximum number of columns for a good use of BLAS primitives |
pastix_int_t | abs |
Adaptative block size:
|
pastix_int_t | up_after_split |
Update the costmtx and candtab arrays after splitting the symbol |
pastix_int_t | level_tasks2d |
Level to shift from 1D to 2D. Automaticaly computed if < 0, only 1D if 0 |
pastix_int_t | width_tasks2d |
Minimal width to consider a cblk 2D if autolevel (level_tasks2d < 0) |
pastix_int_t | clustnum |
Id of current MPI process |
pastix_int_t | clustnbr |
Number of MPI processes |
pastix_int_t | total_nbcores |
Total number of physical cores used for the simulation |
pastix_int_t | total_nbthrds |
Total number of threads used for the simulation |
pastix_int_t | local_nbcores |
Local number of physical cores used by the current MPI process |
pastix_int_t | local_nbthrds |
Local number of threads used by the current MPI process |
pastix_int_t | local_nbctxts |
Local number of contexts (used for dynamic scheduler and runtimes) |
pastix_int_t * | clust2smp |
clust2smp[i] = SMP node on which i_th MPI process is running, if multiple MPI processes per node |
pastix_int_t * | core2clust |
core2clust[i] = cluster owning the core i |
pastix_int_t * | iparm |
In/Out Integer parameters |
double * | dparm |
In/Out Float parameters |
const char * | dirname |
Temporary unique directory to store output files (Initialized to pastix_data->dir_local) |
EliminTree * | etree |
the elimination tree |
CostMatrix * | costmtx |
the cost bounded to each cblk and blok |
Cand * | candtab |
processor candidate tab |
FILE * | tracefile |
File holding the simulated trace |
int blendCtrlInit | ( | pastix_data_t * | pastix_data, |
BlendCtrl * | ctrl | ||
) |
Initialize the Blend control structure.
[in,out] | pastix_data | The pastix_data structure of the problem instance. Integer parameters that are used to build the Blend control structure. IPARM_TASKS2D_LEVEL, IPARM_TASKS2D_WIDTH, IPARM_COMPRESS_WHEN, IPARM_COMPRESS_MIN_WIDTH, IPARM_INCOMPLETE, IPARM_MAX_BLOCKSIZE, IPARM_MIN_BLOCKSIZE, IPARM_THREAD_NBR, and IPARM_VERBOSE are used in this function. |
[in,out] | ctrl | The Blend control data structure to initialize. |
PASTIX_SUCCESS | on successful exit |
PASTIX_ERR_BADPARAMETER | if one parameter is incorrect. |
Definition at line 162 of file blendctrl.c.
References blendctrl_s::allcand, blendctrl_s::blcolmax, blendctrl_s::blcolmin, blendctrl_s::candtab, blendctrl_s::clust2smp, blendctrl_s::clustnbr, blendctrl_s::clustnum, blendctrl_s::core2clust, blendctrl_s::costlevel, blendctrl_s::costmtx, blendctrl_s::count_ops, blendctrl_s::debug, pastix_data_s::dir_local, blendctrl_s::dirname, blendctrl_s::dparm, pastix_data_s::dparm, blendctrl_s::etree, pastix_data_s::inter_node_procnbr, pastix_data_s::inter_node_procnum, blendctrl_s::iparm, pastix_data_s::iparm, IPARM_ALLCAND, IPARM_INCOMPLETE, IPARM_MAX_BLOCKSIZE, IPARM_MIN_BLOCKSIZE, IPARM_TASKS2D_LEVEL, IPARM_TASKS2D_WIDTH, IPARM_THREAD_NBR, IPARM_VERBOSE, blendctrl_s::leader, blendctrl_s::level_tasks2d, blendctrl_s::local_nbcores, blendctrl_s::local_nbctxts, blendctrl_s::local_nbthrds, blendctrl_s::nocrossproc, PASTIX_ERR_BADPARAMETER, pastix_gendirectories(), pastix_int_t, PASTIX_SUCCESS, blendctrl_s::ricar, blendctrl_s::timer, blendctrl_s::total_nbcores, blendctrl_s::total_nbthrds, blendctrl_s::up_after_split, and blendctrl_s::width_tasks2d.
Referenced by pastix_subtask_blend().
void blendCtrlExit | ( | BlendCtrl * | ctrl | ) |
Finalize the Blend control structure.
[in,out] | ctrl | The Blend control data structure to free. |
Definition at line 303 of file blendctrl.c.
References candExit(), blendctrl_s::candtab, blendctrl_s::clust2smp, and blendctrl_s::core2clust.
Referenced by pastix_subtask_blend().
void getCommunicationCosts | ( | const BlendCtrl * | ctrl, |
pastix_int_t | clustsrc, | ||
pastix_int_t | clustdst, | ||
pastix_int_t | sync_comm_nbr, | ||
double * | startup, | ||
double * | bandwidth | ||
) |
Return the communication cost between two cores.
[in] | ctrl | The Blend control data structure that holds the cluster architecture |
[in] | clustsrc | The source cluster of the communication |
[in] | clustdst | The remote cluster of the communication |
[in] | sync_comm_nbr | The number of simultaneous communication between clustsrc and clustdst |
[out] | startup | On exit, holds the startup/latency cost of the communication between the two nodes. |
[out] | bandwidth | On exit, holds the bandwidth of the communication between the two nodes. |
Definition at line 60 of file blendctrl.c.
References blendctrl_s::clust2smp.
Referenced by simu_computeFtgtCosts().