PLASMA
Parallel Linear Algebra Software for Multicore Architectures
plasma_tree.h
1
10#ifndef PLASMA_TREE_H
11#define PLASMA_TREE_H
12
13enum {
14 PlasmaGeKernel = 1,
15 PlasmaTtKernel = 2,
16 PlasmaTsKernel = 3
17};
18
19enum {
20 PlasmaTreeFlatTs = 1,
21 PlasmaTreeFlatTt = 2,
22 PlasmaTreeBinary = 3,
23 PlasmaTreeAuto = 4,
24 PlasmaTreeGreedy = 5,
25 PlasmaTreeBlockGreedy = 6,
26};
27
28/***************************************************************************/
33static 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/***************************************************************************/
56static 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
67void 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