libflame  revision_anchor
Functions | Variables
FLA_LU_piv_internal.c File Reference

(r)

Functions

FLA_Error FLA_LU_piv_internal (FLA_Obj A, FLA_Obj p, fla_lu_t *cntl)
 

Variables

fla_lu_tfla_lu_piv_cntl_leaf
 

Function Documentation

◆ FLA_LU_piv_internal()

FLA_Error FLA_LU_piv_internal ( FLA_Obj  A,
FLA_Obj  p,
fla_lu_t cntl 
)

References FLA_Check_error_level(), FLA_Check_null_pointer(), FLA_LU_piv_blk_ext(), FLA_LU_piv_blk_var3(), FLA_LU_piv_blk_var4(), FLA_LU_piv_blk_var5(), FLA_LU_piv_macro_task(), FLA_LU_piv_opt_var3(), FLA_LU_piv_opt_var4(), FLA_LU_piv_opt_var5(), FLA_LU_piv_unb_ext(), FLA_LU_piv_unb_var3(), FLA_LU_piv_unb_var4(), FLA_LU_piv_unb_var5(), and FLASH_Queue_get_enabled().

Referenced by FLA_LU_piv(), FLA_LU_piv_blk_var3(), FLA_LU_piv_blk_var4(), FLA_LU_piv_blk_var5(), FLA_LU_piv_task(), and FLASH_LU_piv().

16 {
17  FLA_Error r_val = FLA_SUCCESS;
18 
19  if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
20  {
21  FLA_Error e_val = FLA_Check_null_pointer( ( void* ) cntl );
22  FLA_Check_error_code( e_val );
23  }
24 
25  if ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER &&
26  FLA_Cntl_variant( cntl ) == FLA_SUBPROBLEM &&
28  {
29  // Enqueue
30  ENQUEUE_FLASH_LU_piv_macro( A, *FLASH_OBJ_PTR_AT( p ), cntl );
31  }
32  else
33  {
34 /*
35  if ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER &&
36  FLA_Obj_elemtype( A ) == FLA_SCALAR &&
37  !FLASH_Queue_get_enabled( ) )
38  {
39  // Execute leaf
40  cntl = fla_lu_piv_cntl_leaf;
41  }
42 */
43  // Choose implementation.
44  if ( FLA_Cntl_variant( cntl ) == FLA_BLOCKED_EXTERN ||
45  FLA_Cntl_variant( cntl ) == FLA_SUBPROBLEM )
46  {
47  if ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER )
48  {
49  // When performing an unblocked operation on a hierarhical
50  // object, we assume it's because we need to perform the
51  // the operation on a macro block.
52  r_val = FLA_LU_piv_macro_task( A, *FLASH_OBJ_PTR_AT( p ), cntl );
53  }
54  else
55  {
56  r_val = FLA_LU_piv_blk_ext( A, p );
57  }
58  }
59  else if ( FLA_Cntl_variant( cntl ) == FLA_UNBLOCKED_EXTERN )
60  {
61  if ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER )
62  {
63  // When performing an unblocked operation on a hierarhical
64  // object, we assume it's because we need to perform the
65  // the operation on a macro block.
66  r_val = FLA_LU_piv_macro_task( A, *FLASH_OBJ_PTR_AT( p ), cntl );
67  }
68  else
69  {
70  r_val = FLA_LU_piv_unb_ext( A, p );
71  }
72  }
73 #ifdef FLA_ENABLE_NON_CRITICAL_CODE
74  else if ( FLA_Cntl_variant( cntl ) == FLA_UNBLOCKED_VARIANT3 )
75  {
76  r_val = FLA_LU_piv_unb_var3( A, p );
77  }
78  else if ( FLA_Cntl_variant( cntl ) == FLA_UNBLOCKED_VARIANT4 )
79  {
80  r_val = FLA_LU_piv_unb_var4( A, p );
81  }
82 #endif
83  else if ( FLA_Cntl_variant( cntl ) == FLA_UNBLOCKED_VARIANT5 )
84  {
85  r_val = FLA_LU_piv_unb_var5( A, p );
86  }
87 #ifdef FLA_ENABLE_NON_CRITICAL_CODE
88  else if ( FLA_Cntl_variant( cntl ) == FLA_UNB_OPT_VARIANT3 )
89  {
90  r_val = FLA_LU_piv_opt_var3( A, p );
91  }
92  else if ( FLA_Cntl_variant( cntl ) == FLA_UNB_OPT_VARIANT4 )
93  {
94  r_val = FLA_LU_piv_opt_var4( A, p );
95  }
96 #endif
97  else if ( FLA_Cntl_variant( cntl ) == FLA_UNB_OPT_VARIANT5 )
98  {
99  r_val = FLA_LU_piv_opt_var5( A, p );
100  }
101 #ifdef FLA_ENABLE_NON_CRITICAL_CODE
102  else if ( FLA_Cntl_variant( cntl ) == FLA_BLOCKED_VARIANT3 )
103  {
104  r_val = FLA_LU_piv_blk_var3( A, p, cntl );
105  }
106  else if ( FLA_Cntl_variant( cntl ) == FLA_BLOCKED_VARIANT4 )
107  {
108  r_val = FLA_LU_piv_blk_var4( A, p, cntl );
109  }
110 #endif
111  else if ( FLA_Cntl_variant( cntl ) == FLA_BLOCKED_VARIANT5 )
112  {
113  r_val = FLA_LU_piv_blk_var5( A, p, cntl );
114  }
115  else
116  {
117  FLA_Check_error_code( FLA_NOT_YET_IMPLEMENTED );
118  }
119  }
120 
121  return r_val;
122 }
FLA_Error FLA_LU_piv_opt_var4(FLA_Obj A, FLA_Obj p)
Definition: FLA_LU_piv_opt_var4.c:15
FLA_Error FLA_LU_piv_blk_ext(FLA_Obj A, FLA_Obj p)
Definition: FLA_LU_piv_blk_external.c:106
FLA_Error FLA_LU_piv_unb_var3(FLA_Obj A, FLA_Obj p)
Definition: FLA_LU_piv_unb_var3.c:15
FLA_Error FLA_LU_piv_unb_var4(FLA_Obj A, FLA_Obj p)
Definition: FLA_LU_piv_unb_var4.c:15
int FLA_Error
Definition: FLA_type_defs.h:47
FLA_Error FLA_LU_piv_blk_var3(FLA_Obj A, FLA_Obj p, fla_lu_t *cntl)
Definition: FLA_LU_piv_blk_var3.c:15
FLA_Bool FLASH_Queue_get_enabled(void)
Definition: FLASH_Queue.c:171
FLA_Error FLA_LU_piv_unb_ext(FLA_Obj A, FLA_Obj p)
Definition: FLA_LU_piv_unb_external.c:106
FLA_Error FLA_LU_piv_blk_var5(FLA_Obj A, FLA_Obj p, fla_lu_t *cntl)
Definition: FLA_LU_piv_blk_var5.c:13
FLA_Error FLA_LU_piv_macro_task(FLA_Obj A, FLA_Obj p, fla_lu_t *cntl)
Definition: FLA_LU_piv_macro_task.c:13
FLA_Error FLA_LU_piv_opt_var5(FLA_Obj A, FLA_Obj p)
Definition: FLA_LU_piv_opt_var5.c:13
FLA_Error FLA_LU_piv_unb_var5(FLA_Obj A, FLA_Obj p)
Definition: FLA_LU_piv_unb_var5.c:15
unsigned int FLA_Check_error_level(void)
Definition: FLA_Check.c:18
FLA_Error FLA_LU_piv_blk_var4(FLA_Obj A, FLA_Obj p, fla_lu_t *cntl)
Definition: FLA_LU_piv_blk_var4.c:15
FLA_Error FLA_LU_piv_opt_var3(FLA_Obj A, FLA_Obj p)
Definition: FLA_LU_piv_opt_var3.c:15
FLA_Error FLA_Check_null_pointer(void *ptr)
Definition: FLA_Check.c:518

Variable Documentation

◆ fla_lu_piv_cntl_leaf

fla_lu_t* fla_lu_piv_cntl_leaf