PaStiX Handbook 6.4.0
Loading...
Searching...
No Matches
blendctrl.h
Go to the documentation of this file.
1/**
2 *
3 * @file blendctrl.h
4 *
5 * PaStiX analyse control parameters structure.
6 *
7 * @copyright 1998-2025 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
8 * Univ. Bordeaux. All rights reserved.
9 *
10 * @version 6.4.0
11 * @author Pascal Henon
12 * @author Mathieu Faverge
13 * @date 2024-07-05
14 *
15 * @addtogroup blend_dev_ctrl
16 * @{
17 * This module handles all option to parameterize the final analyze step that
18 * performs proportional mapping and the generation of the final solver
19 * matrix structure per MPI process.
20 *
21 **/
22#ifndef _blendctrl_h_
23#define _blendctrl_h_
24
25/**
26 * @brief The type and structure definitions.
27*/
28typedef struct blendctrl_s {
29 pastix_int_t count_ops ; /**< Print costs in term of number of elementary operations */
30 pastix_int_t debug ; /**< Make additional checks after each step */
31 pastix_int_t timer; /**< Print execution times */
32 pastix_int_t ooc; /**< Enable the out-of-core version of Pastix (Option unused for now) */
33 pastix_int_t ricar; /**< Enable the ILU(k) dedicated steps */
34 pastix_int_t leader; /**< Leader for sequential tasks */
35
36 /**
37 * @name Proportional Mapping
38 * @{
39 */
40 pastix_int_t allcand; /**< All processors are candidate for each cblk */
41 pastix_int_t nocrossproc; /**< Forbid a processor to be candidate in two
42 different branches shared with different partners */
43 pastix_int_t costlevel; /**< Enable/disable computation and use of subtree cost */
44
45 /**
46 * @}
47 * @name Symbol split
48 * @{
49 */
50 pastix_int_t blcolmin ; /**< Minimun number of columns for a good use of BLAS primitives */
51 pastix_int_t blcolmax; /**< Maximum number of columns for a good use of BLAS primitives */
52 pastix_int_t abs; /**< Adaptative block size:
53 - 0, all block are cut to blcolmin
54 - >0, try to make (ncand*abs) cblk */
55 pastix_int_t up_after_split; /**< Update the costmtx and candtab arrays after splitting the symbol */
56
57 /**
58 * @}
59 * @name 2D
60 * @{
61 */
62 pastix_int_t level_tasks2d; /**< Level to shift from 1D to 2D. Automaticaly computed if < 0, only 1D if 0 */
63 pastix_int_t width_tasks2d; /**< Minimal width to consider a cblk 2D if autolevel (level_tasks2d < 0) */
64
65 /**
66 * @}
67 * @name Architecture
68 * @{
69 */
70 pastix_int_t clustnum; /**< Id of current MPI process */
71 pastix_int_t clustnbr; /**< Number of MPI processes */
72 pastix_int_t total_nbcores; /**< Total number of physical cores used for the simulation */
73 pastix_int_t total_nbthrds; /**< Total number of threads used for the simulation */
74 pastix_int_t local_nbcores; /**< Local number of physical cores used by the current MPI process */
75 pastix_int_t local_nbthrds; /**< Local number of threads used by the current MPI process */
76 pastix_int_t local_nbctxts; /**< Local number of contexts (used for dynamic scheduler and runtimes)*/
77 pastix_int_t *clust2smp; /**< clust2smp[i] = SMP node on which i_th MPI
78 process is running, if multiple MPI processes per node */
79 pastix_int_t *core2clust; /**< core2clust[i] = cluster owning the core i */
80
81 /**
82 * @}
83 * @name Parameters arrays
84 * @{
85 */
86 pastix_int_t *iparm; /**< In/Out Integer parameters */
87 double *dparm; /**< In/Out Float parameters */
88 const char *dirname; /**< Temporary unique directory to store output files
89 (Initialized to pastix_data->dir_local) */
90 /**
91 * @}
92 * @name Other
93 * @{
94 */
95 //BubbleTree *btree; /**< arbre de bulles */
96 EliminTree *etree; /**< the elimination tree */
97 CostMatrix *costmtx; /**< the cost bounded to each cblk and blok */
98 Cand *candtab; /**< processor candidate tab */
99 FILE *tracefile; /**< File holding the simulated trace */
100 /**
101 * @}
102 */
104
105int blendCtrlInit ( pastix_data_t *pastix_data,
106 BlendCtrl *ctrl );
107
108void blendCtrlExit (BlendCtrl *);
109
110void getCommunicationCosts( const BlendCtrl *ctrl,
111 pastix_int_t clustsrc,
112 pastix_int_t clustdst,
113 pastix_int_t sync_comm_nbr,
114 double *startup,
115 double *bandwidth);
116
117#endif /* _blendctrl_h_ */
118
119/**
120 * @}
121 */
BEGIN_C_DECLS typedef int pastix_int_t
Definition datatypes.h:51
Processor candidate group to own a column blok.
Definition cand.h:28
Arrays of double to store the cost of each element in the matrix.
Definition cost.h:30
FILE * tracefile
Definition blendctrl.h:99
pastix_int_t * core2clust
Definition blendctrl.h:79
pastix_int_t up_after_split
Definition blendctrl.h:55
pastix_int_t leader
Definition blendctrl.h:34
pastix_int_t ricar
Definition blendctrl.h:33
EliminTree * etree
Definition blendctrl.h:96
pastix_int_t * clust2smp
Definition blendctrl.h:77
pastix_int_t debug
Definition blendctrl.h:30
pastix_int_t local_nbcores
Definition blendctrl.h:74
pastix_int_t allcand
Definition blendctrl.h:40
pastix_int_t costlevel
Definition blendctrl.h:43
double * dparm
Definition blendctrl.h:87
pastix_int_t width_tasks2d
Definition blendctrl.h:63
const char * dirname
Definition blendctrl.h:88
pastix_int_t clustnbr
Definition blendctrl.h:71
pastix_int_t clustnum
Definition blendctrl.h:70
pastix_int_t abs
Definition blendctrl.h:52
pastix_int_t blcolmin
Definition blendctrl.h:50
pastix_int_t ooc
Definition blendctrl.h:32
pastix_int_t blcolmax
Definition blendctrl.h:51
pastix_int_t local_nbctxts
Definition blendctrl.h:76
Cand * candtab
Definition blendctrl.h:98
pastix_int_t level_tasks2d
Definition blendctrl.h:62
pastix_int_t local_nbthrds
Definition blendctrl.h:75
pastix_int_t timer
Definition blendctrl.h:31
CostMatrix * costmtx
Definition blendctrl.h:97
pastix_int_t total_nbcores
Definition blendctrl.h:72
pastix_int_t count_ops
Definition blendctrl.h:29
pastix_int_t total_nbthrds
Definition blendctrl.h:73
pastix_int_t nocrossproc
Definition blendctrl.h:41
pastix_int_t * iparm
Definition blendctrl.h:86
struct blendctrl_s BlendCtrl
The type and structure definitions.
int blendCtrlInit(pastix_data_t *pastix_data, BlendCtrl *ctrl)
Initialize the Blend control structure.
Definition blendctrl.c:162
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.
Definition blendctrl.c:60
void blendCtrlExit(BlendCtrl *)
Finalize the Blend control structure.
Definition blendctrl.c:303
The type and structure definitions.
Definition blendctrl.h:28
Elimination tree.
Definition elimintree.h:39
Main PaStiX data structure.
Definition pastixdata.h:68