PaStiX Handbook 6.4.0
Loading...
Searching...
No Matches
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-2024 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
8 * Univ. Bordeaux. All rights reserved.
9 *
10 * @version 6.4.0
11 * @author Gregoire Pichon
12 * @author Mathieu Faverge
13 * @author Tony Delarue
14 * @author Alycia Lisito
15 * @date 2024-07-05
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 */
34typedef 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 */
47typedef 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 */
84typedef 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 */
138extern int pastix_eztrace_level;
139
140#else
141
142static inline void kernel_trace_start_lvl0 ( pastix_ktype0_t ktype ) { (void)ktype; }
143static inline void kernel_trace_stop_lvl0 ( double flops ) { (void)flops; }
144static inline void kernel_trace_start_lvl2 ( pastix_ktype2_t ktype ) { (void)ktype; }
145static inline void kernel_trace_stop_lvl2 ( double flops ) { (void)flops; }
146static 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.
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.
pastix_ktype_e
List of the Level 1 events that may be traced in PaStiX.
@ PastixKernelLvl2SYTRF
@ PastixKernelLvl2POTRF
@ PastixKernelLvl2PXTRF
@ PastixKernelLvl2HETRF
@ PastixKernelLvl2_LR_add2C_rradd_orthogonalize
@ PastixKernelLvl2GETRF
@ PastixKernelSCALOCblk
@ PastixKernelGEMMCblkFRLR
@ PastixKernelTRSMBlokLR
@ PastixKernelGEADDCblkFRFR
@ PastixKernelTRSMCblk2d
@ PastixKernelSYTRF
@ PastixKernelSCALOBlok
@ PastixKernelGEMMBlokLRLR
@ PastixKernelGEMMCblk1d2d
@ PastixKernelPOTRF
@ PastixKernelTRSMCblk1d
@ PastixKernelTRSMBack
@ PastixKernelHETRF
@ PastixKernelPXTRF
@ PastixKernelGETRF
@ PastixKernelGEMMCblkLRLR
@ PastixKernelTRSMBlok2d
@ PastixKernelGEMMCblk1d1d
@ PastixKernelTRSMCblkLR
@ PastixKernelGEADDCblkLRLR
@ PastixKernelGEADDCblkFRLR
@ PastixKernelTRSMForw
@ PastixKernelGEMMCblk2d2d
@ PastixKernelGEMMBlok2d2d