PaStiX Handbook  6.3.2
simu_task.c
Go to the documentation of this file.
1 /**
2  *
3  * @file simu_task.c
4  *
5  * PaStiX simulation task basic functions.
6  *
7  * @copyright 2004-2023 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
8  * Univ. Bordeaux. All rights reserved.
9  *
10  * @version 6.3.2
11  * @author Pascal Henon
12  * @author Pierre Ramet
13  * @author Mathieu Faverge
14  * @date 2023-07-21
15  *
16  **/
17 #include <stdio.h>
18 #include <math.h>
19 
20 #include "common.h"
21 #include "symbol/symbol.h"
22 #include "queue.h"
23 #include "extendVector.h"
24 #include "elimintree.h"
25 #include "cost.h"
26 #include "cand.h"
27 #include "blendctrl.h"
28 #include "blend/solver.h"
29 #include "simu.h"
30 
31 /**
32  *******************************************************************************
33  *
34  * @ingroup blend_dev_simu
35  *
36  * @brief Initialize the tasktab array of the simulation structure.
37  *
38  *******************************************************************************
39  *
40  * @param[inout] simuctrl
41  * The main simulation structure. On exit, the tasktab array is built
42  * and initialized with default values.
43  *
44  * @param[in] symbptr
45  * The pointer to the symbol matrix structure studied.
46  *
47  *******************************************************************************/
48 void
50  const symbol_matrix_t *symbptr )
51 {
52  pastix_int_t i, j;
53  pastix_int_t tasknbr = 0;
54  SimuTask *task = NULL;
55 
56  /* One task per cblk */
57  simuctrl->tasknbr = symbptr->cblknbr;
58 
59  MALLOC_INTERN( simuctrl->tasktab, simuctrl->tasknbr, SimuTask );
60  assert( simuctrl->tasktab );
61 
62  task = simuctrl->tasktab;
63  tasknbr = 0;
64  for(i=0;i<symbptr->cblknbr;i++)
65  {
66  task->prionum = -1;
67  task->cblknum = i;
68  task->bloknum = symbptr->cblktab[i].bloknum;
69  task->bloknum2 = -1;
70  task->ctrbcnt = 0;
71  task->ftgtcnt = 0;
72  task->facebloknum = -1;
73  task->cost = -1;
74  timerSet(&(task->time), 0.0);
75  task->mesglen = 0.0;
76  task->tasknext = -1;
77  for(j = symbptr->cblktab[i].bloknum;
78  j < symbptr->cblktab[i+1].bloknum; j++ )
79  {
80  simuctrl->bloktab[j].tasknum = tasknbr;
81  }
82  tasknbr++;
83  task++;
84  }
85 }
BEGIN_C_DECLS typedef int pastix_int_t
Definition: datatypes.h:51
pastix_int_t tasknum
Definition: simu.h:87
SimuTask * tasktab
Definition: simu.h:121
pastix_int_t ctrbcnt
Definition: simu.h:108
pastix_int_t cblknum
Definition: simu.h:101
SimuBlok * bloktab
Definition: simu.h:126
SimuTimer time
Definition: simu.h:105
pastix_int_t mesglen
Definition: simu.h:106
double cost
Definition: simu.h:107
pastix_int_t facebloknum
Definition: simu.h:104
pastix_int_t bloknum
Definition: simu.h:102
pastix_int_t tasknext
Definition: simu.h:110
pastix_int_t ftgtcnt
Definition: simu.h:109
pastix_int_t prionum
Definition: simu.h:100
pastix_int_t tasknbr
Definition: simu.h:119
static void timerSet(SimuTimer *timer, double t)
Set the timer value.
Definition: simu_timer.h:84
void simuTaskBuild(SimuCtrl *, const symbol_matrix_t *)
Initialize the tasktab array of the simulation structure.
Definition: simu_task.c:49
Task structure for the simulation.
Definition: simu.h:99
Control structure for the simulation.
Definition: simu.h:116
symbol_cblk_t * cblktab
Definition: symbol.h:83
pastix_int_t bloknum
Definition: symbol.h:48
pastix_int_t cblknbr
Definition: symbol.h:79
Symbol matrix structure.
Definition: symbol.h:77