PLASMA
Parallel Linear Algebra Software for Multicore Architectures
plasma_tree.h
1 
10 #ifndef PLASMA_TREE_H
11 #define PLASMA_TREE_H
12 
13 enum {
14  PlasmaGeKernel = 1,
15  PlasmaTtKernel = 2,
16  PlasmaTsKernel = 3
17 };
18 
19 enum {
20  PlasmaTreeFlatTs = 1,
21  PlasmaTreeFlatTt = 2,
22  PlasmaTreeBinary = 3,
23  PlasmaTreeAuto = 4,
24  PlasmaTreeGreedy = 5,
25  PlasmaTreeBlockGreedy = 6,
26 };
27 
28 /***************************************************************************/
33 static inline int plasma_tree_insert_operation(int *operations,
34  int loperations,
35  int ind_op,
36  plasma_enum_t kernel,
37  int col, int row, int rowpiv)
38 {
39  assert(ind_op < loperations);
40 
41  operations[ind_op*4] = kernel;
42  operations[ind_op*4+1] = col;
43  operations[ind_op*4+2] = row;
44  operations[ind_op*4+3] = rowpiv;
45 
46  ind_op++;
47 
48  return ind_op;
49 }
50 
51 /***************************************************************************/
56 static inline void plasma_tree_get_operation(int *operations,
57  int ind_op,
58  plasma_enum_t *kernel,
59  int *col, int *row, int *rowpiv)
60 {
61  *kernel = operations[ind_op*4];
62  *col = operations[ind_op*4+1];
63  *row = operations[ind_op*4+2];
64  *rowpiv = operations[ind_op*4+3];
65 }
66 
67 void plasma_tree_operations(int mt, int nt,
68  int **operations, int *num_operations,
69  plasma_sequence_t *sequence,
70  plasma_request_t *request);
71 
72 #endif // PLASMA_TREE_H