PaStiX Handbook  6.3.2
kernels_enums.h
Go to the documentation of this file.
1 /**
2  *
3  * @file kernels_enums.h
4  *
5  * Wrappers to trace enums kernels.
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 Gregoire Pichon
12  * @author Mathieu Faverge
13  * @author Tony Delarue
14  * @author Alycia Lisito
15  * @date 2023-11-10
16  *
17  * @addtogroup eztrace_dev
18  * @{
19  *
20  **/
21 #ifndef _kernels_enums_h_
22 #define _kernels_enums_h_
23 
24 /**
25  * @brief Main stop enum event for all the events in traces
26  */
27 #define PastixKernelStop 0
28 
29 /**
30  * @brief List of the Level 0 events that may be traced in PaStiX
31  *
32  * This is only the high level steps.
33  */
34 typedef enum pastix_ktype0_e {
35  PastixKernelLvl0Facto,
36  PastixKernelLvl0Solve,
37  PastixKernelLvl0Diag,
38  PastixKernelLvl0Nbr
40 
41 /**
42  * @brief List of the Level 1 events that may be traced in PaStiX
43  *
44  * This is the main information that traces all the major kernels during the
45  * factorization step.
46  */
47 typedef enum pastix_ktype_e {
48  PastixKernelGETRF, /**< LU diagonal block kernel */
49  PastixKernelHETRF, /**< LDLh diagonal block kernel */
50  PastixKernelPOTRF, /**< Cholesky diagonal block kernel */
51  PastixKernelPXTRF, /**< Complex LL^t diagonal block kernel */
52  PastixKernelSYTRF, /**< LDLt diagonal block kernel */
53  PastixKernelSCALOCblk, /**< Scaling out-of-place of a panel */
54  PastixKernelSCALOBlok, /**< Scaling out-of-place of a block */
55  PastixKernelTRSMForw, /**< Solve forward TRSM block kernel */
56  PastixKernelTRSMBack, /**< Solve backward TRSM block kernel */
57  PastixKernelTRSMCblk1d, /**< TRSM applied to a panel in 1d layout */
58  PastixKernelTRSMCblk2d, /**< TRSM applied to a panel in 2d layout */
59  PastixKernelTRSMCblkLR, /**< TRSM applied to a panel in low-rank */
60  PastixKernelTRSMBlok2d, /**< TRSM applied to a block in 2d layout */
61  PastixKernelTRSMBlokLR, /**< TRSM applied to a block in low-rank */
62  PastixKernelGEMMCblk1d1d, /**< GEMM applied from a panel in 1d layout to a panel in 1d layout */
63  PastixKernelGEMMCblk1d2d, /**< GEMM applied from a panel in 1d layout to a panel in 2d layout */
64  PastixKernelGEMMCblk2d2d, /**< GEMM applied from a panel in 2d layout to a panel in 2d layout */
65  PastixKernelGEMMCblkFRLR, /**< GEMM applied from a panel in full-rank to a panel in low-rank */
66  PastixKernelGEMMCblkLRLR, /**< GEMM applied from a panel in low-rank to a panel in low-rank */
67  PastixKernelGEMMBlok2d2d, /**< GEMM applied from a block in 2d layout to a block in 2d layout */
68  PastixKernelGEMMBlokLRLR, /**< GEMM applied from a block in low-rank to a block in low-rank */
69  PastixKernelGEADDCblkFRFR, /**< GEADD applied from a panel in full-rank to a panel in full-rank */
70  PastixKernelGEADDCblkFRLR, /**< GEADD applied from a panel in full-rank to a panel in low-rank */
71  PastixKernelGEADDCblkLRLR, /**< GEADD applied from a panel in low-rank to a panel in low-rank */
72  PastixKernelLvl1Nbr
74 
75 /**
76  * @brief List of the Level 2 events that may be traced in PaStiX
77  *
78  * This is the low-level information that traces all the individual calls to
79  * blas/lapack routines in the code. It is used to compute the number of flops
80  * in low-rank compression, and to distinguish the amount of flops spent in each
81  * part of the low-rank updates.
82  *
83  */
84 typedef enum pastix_ktype2_e {
85 
86  /* General kernels: similar in low-rank and dense */
87  PastixKernelLvl2GETRF, /**< LU diagonal block kernel */
88  PastixKernelLvl2HETRF, /**< LDLh diagonal block kernel */
89  PastixKernelLvl2POTRF, /**< Cholesky diagonal block kernel */
90  PastixKernelLvl2PXTRF, /**< Complex LL^t diagonal block kernel */
91  PastixKernelLvl2SYTRF, /**< LDLt diagonal block kernel */
92 
93  /* Solve operations */
94  PastixKernelLvl2_FR_TRSM,
95  PastixKernelLvl2_LR_TRSM,
96 
97  /* Update operations */
98  PastixKernelLvl2_FR_GEMM,
99 
100  /* Formation (and application) of A * B */
101  PastixKernelLvl2_LR_FRFR2FR,
102  PastixKernelLvl2_LR_FRLR2FR,
103  PastixKernelLvl2_LR_LRFR2FR,
104  PastixKernelLvl2_LR_LRLR2FR,
105  PastixKernelLvl2_LR_FRFR2LR,
106  PastixKernelLvl2_LR_FRLR2LR,
107  PastixKernelLvl2_LR_LRFR2LR,
108  PastixKernelLvl2_LR_LRLR2LR,
109  PastixKernelLvl2_LR_FRFR2null,
110  PastixKernelLvl2_LR_FRLR2null,
111  PastixKernelLvl2_LR_LRFR2null,
112  PastixKernelLvl2_LR_LRLR2null,
113 
114  /* Compression kernels */
115  PastixKernelLvl2_LR_init_compress,
116  PastixKernelLvl2_LR_add2C_uncompress,
117  PastixKernelLvl2_LR_add2C_recompress,
118  PastixKernelLvl2_LR_add2C_updateCfr,
119  PastixKernelLvl2_LR_add2C_orthou,
120  PastixKernelLvl2_LR_add2C_rradd_orthogonalize, /**<< CGS, partialQR or fullQR */
121  PastixKernelLvl2_LR_add2C_rradd_recompression,
122  PastixKernelLvl2_LR_add2C_rradd_computeNewU,
123 
124  PastixKernelLvl2Nbr
126 
127 /**
128  * @brief Total number of kernel events
129  */
130 #define PastixKernelsNbr (PastixKernelLvl0Nbr + PastixKernelLvl1Nbr + PastixKernelLvl2Nbr)
131 
132 #if defined(PASTIX_WITH_EZTRACE)
133 
134 #include "eztrace_module/kernels_ev_codes.h"
135 /**
136  * @brief Define the level traced by the EZTrace module
137  */
138 extern int pastix_eztrace_level;
139 
140 #else
141 
142 static inline void kernel_trace_start_lvl0 ( pastix_ktype0_t ktype ) { (void)ktype; }
143 static inline void kernel_trace_stop_lvl0 ( double flops ) { (void)flops; }
144 static inline void kernel_trace_start_lvl2 ( pastix_ktype2_t ktype ) { (void)ktype; }
145 static inline void kernel_trace_stop_lvl2 ( double flops ) { (void)flops; }
146 static inline void kernel_trace_stop_lvl2_rank ( double flops, int rank ) { (void)flops; (void)rank; }
147 
148 #endif
149 
150 /**
151  * @}
152  */
153 #endif /* _kernels_enums_h_ */
enum pastix_ktype_e pastix_ktype_t
List of the Level 1 events that may be traced in PaStiX.
enum pastix_ktype2_e pastix_ktype2_t
List of the Level 2 events that may be traced in PaStiX.
pastix_ktype0_e
List of the Level 0 events that may be traced in PaStiX.
Definition: kernels_enums.h:34
enum pastix_ktype0_e pastix_ktype0_t
List of the Level 0 events that may be traced in PaStiX.
pastix_ktype2_e
List of the Level 2 events that may be traced in PaStiX.
Definition: kernels_enums.h:84
pastix_ktype_e
List of the Level 1 events that may be traced in PaStiX.
Definition: kernels_enums.h:47
@ PastixKernelLvl2SYTRF
Definition: kernels_enums.h:91
@ PastixKernelLvl2POTRF
Definition: kernels_enums.h:89
@ PastixKernelLvl2PXTRF
Definition: kernels_enums.h:90
@ PastixKernelLvl2HETRF
Definition: kernels_enums.h:88
@ PastixKernelLvl2_LR_add2C_rradd_orthogonalize
@ PastixKernelLvl2GETRF
Definition: kernels_enums.h:87
@ PastixKernelSCALOCblk
Definition: kernels_enums.h:53
@ PastixKernelGEMMCblkFRLR
Definition: kernels_enums.h:65
@ PastixKernelTRSMBlokLR
Definition: kernels_enums.h:61
@ PastixKernelGEADDCblkFRFR
Definition: kernels_enums.h:69
@ PastixKernelTRSMCblk2d
Definition: kernels_enums.h:58
@ PastixKernelSYTRF
Definition: kernels_enums.h:52
@ PastixKernelSCALOBlok
Definition: kernels_enums.h:54
@ PastixKernelGEMMBlokLRLR
Definition: kernels_enums.h:68
@ PastixKernelGEMMCblk1d2d
Definition: kernels_enums.h:63
@ PastixKernelPOTRF
Definition: kernels_enums.h:50
@ PastixKernelTRSMCblk1d
Definition: kernels_enums.h:57
@ PastixKernelTRSMBack
Definition: kernels_enums.h:56
@ PastixKernelHETRF
Definition: kernels_enums.h:49
@ PastixKernelPXTRF
Definition: kernels_enums.h:51
@ PastixKernelGETRF
Definition: kernels_enums.h:48
@ PastixKernelGEMMCblkLRLR
Definition: kernels_enums.h:66
@ PastixKernelTRSMBlok2d
Definition: kernels_enums.h:60
@ PastixKernelGEMMCblk1d1d
Definition: kernels_enums.h:62
@ PastixKernelTRSMCblkLR
Definition: kernels_enums.h:59
@ PastixKernelGEADDCblkLRLR
Definition: kernels_enums.h:71
@ PastixKernelGEADDCblkFRLR
Definition: kernels_enums.h:70
@ PastixKernelTRSMForw
Definition: kernels_enums.h:55
@ PastixKernelGEMMCblk2d2d
Definition: kernels_enums.h:64
@ PastixKernelGEMMBlok2d2d
Definition: kernels_enums.h:67