libflame  revision_anchor
Functions
FLA_Axpy.h File Reference

(r)

Go to the source code of this file.

Functions

FLA_Error FLA_Axpy_internal (FLA_Obj alpha, FLA_Obj A, FLA_Obj B, fla_axpy_t *cntl)
 

Function Documentation

◆ FLA_Axpy_internal()

FLA_Error FLA_Axpy_internal ( FLA_Obj  alpha,
FLA_Obj  A,
FLA_Obj  B,
fla_axpy_t cntl 
)

References FLA_Axpy_blk_var1(), FLA_Axpy_blk_var2(), FLA_Axpy_blk_var3(), FLA_Axpy_blk_var4(), FLA_Axpy_internal_check(), FLA_Axpy_task(), FLA_Check_error_level(), FLA_Obj_elemtype(), FLA_Obj_equals(), FLA_ZERO, flash_axpy_cntl_blas, and FLASH_Queue_get_enabled().

Referenced by FLA_Apply_CAQ2_UT_lhfc_blk_var1(), FLA_Axpy(), FLA_Axpy_blk_var1(), FLA_Axpy_blk_var2(), FLA_Axpy_blk_var3(), FLA_Axpy_blk_var4(), FLA_CAQR2_UT_blk_var1(), FLA_Eig_gest_il_blk_var1(), FLA_Eig_gest_il_blk_var2(), FLA_Eig_gest_il_blk_var3(), FLA_Eig_gest_il_blk_var4(), FLA_Eig_gest_il_blk_var5(), FLA_Eig_gest_iu_blk_var1(), FLA_Eig_gest_iu_blk_var2(), FLA_Eig_gest_iu_blk_var3(), FLA_Eig_gest_iu_blk_var4(), FLA_Eig_gest_iu_blk_var5(), FLA_Eig_gest_nl_blk_var1(), FLA_Eig_gest_nl_blk_var2(), FLA_Eig_gest_nl_blk_var4(), FLA_Eig_gest_nl_blk_var5(), FLA_Eig_gest_nu_blk_var1(), FLA_Eig_gest_nu_blk_var2(), FLA_Eig_gest_nu_blk_var4(), FLA_Eig_gest_nu_blk_var5(), FLA_QR2_UT_blk_var1(), and FLASH_Axpy().

17 {
18  FLA_Error r_val = FLA_SUCCESS;
19 
20  if ( FLA_Check_error_level() == FLA_FULL_ERROR_CHECKING )
21  FLA_Axpy_internal_check( alpha, A, B, cntl );
22 
23  if ( FLA_Obj_equals( alpha, FLA_ZERO ) )
24  return FLA_SUCCESS;
25 
26  if ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER &&
27  FLA_Obj_elemtype( A ) == FLA_MATRIX &&
28  FLA_Cntl_variant( cntl ) == FLA_SUBPROBLEM )
29  {
30  // Recurse
31  r_val = FLA_Axpy_internal( alpha,
32  *FLASH_OBJ_PTR_AT( A ),
33  *FLASH_OBJ_PTR_AT( B ),
35  }
36  else if ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER &&
37  FLA_Obj_elemtype( A ) == FLA_SCALAR &&
39  {
40  // Enqueue
41  ENQUEUE_FLASH_Axpy( alpha, A, B, cntl );
42  }
43  else
44  {
45  if ( FLA_Cntl_matrix_type( cntl ) == FLA_HIER &&
46  FLA_Obj_elemtype( A ) == FLA_SCALAR &&
48  {
49  // Execute leaf
50  cntl = flash_axpy_cntl_blas;
51  }
52 
53  // Parameter combinations
54  if ( FLA_Cntl_variant( cntl ) == FLA_SUBPROBLEM )
55  {
56  r_val = FLA_Axpy_task( alpha, A, B, cntl );
57  }
58  else if ( FLA_Cntl_variant( cntl ) == FLA_BLOCKED_VARIANT1 )
59  {
60  r_val = FLA_Axpy_blk_var1( alpha, A, B, cntl );
61  }
62 #ifdef FLA_ENABLE_NON_CRITICAL_CODE
63  else if ( FLA_Cntl_variant( cntl ) == FLA_BLOCKED_VARIANT2 )
64  {
65  r_val = FLA_Axpy_blk_var2( alpha, A, B, cntl );
66  }
67 #endif
68  else if ( FLA_Cntl_variant( cntl ) == FLA_BLOCKED_VARIANT3 )
69  {
70  r_val = FLA_Axpy_blk_var3( alpha, A, B, cntl );
71  }
72 #ifdef FLA_ENABLE_NON_CRITICAL_CODE
73  else if ( FLA_Cntl_variant( cntl ) == FLA_BLOCKED_VARIANT4 )
74  {
75  r_val = FLA_Axpy_blk_var4( alpha, A, B, cntl );
76  }
77 #endif
78  else
79  {
80  r_val = FLA_Check_error_code( FLA_NOT_YET_IMPLEMENTED );
81  }
82  }
83 
84  return r_val;
85 }
FLA_Error FLA_Axpy_internal_check(FLA_Obj alpha, FLA_Obj A, FLA_Obj B, fla_axpy_t *cntl)
Definition: FLA_Axpy_internal_check.c:13
fla_axpy_t * flash_axpy_cntl
Definition: FLASH_Axpy_cntl_init.c:15
FLA_Error FLA_Axpy_blk_var4(FLA_Obj alpha, FLA_Obj A, FLA_Obj B, fla_axpy_t *cntl)
Definition: FLA_Axpy_blk_var4.c:13
int FLA_Error
Definition: FLA_type_defs.h:47
FLA_Error FLA_Axpy_internal(FLA_Obj alpha, FLA_Obj A, FLA_Obj B, fla_axpy_t *cntl)
Definition: FLA_Axpy_internal.c:16
FLA_Bool FLASH_Queue_get_enabled(void)
Definition: FLASH_Queue.c:171
FLA_Bool FLA_Obj_equals(FLA_Obj A, FLA_Obj B)
Definition: FLA_Query.c:507
FLA_Error FLA_Axpy_task(FLA_Obj alpha, FLA_Obj A, FLA_Obj B, fla_axpy_t *cntl)
Definition: FLA_Axpy_task.c:13
unsigned int FLA_Check_error_level(void)
Definition: FLA_Check.c:18
FLA_Error FLA_Axpy_blk_var2(FLA_Obj alpha, FLA_Obj A, FLA_Obj B, fla_axpy_t *cntl)
Definition: FLA_Axpy_blk_var2.c:13
fla_axpy_t * flash_axpy_cntl_blas
Definition: FLASH_Axpy_cntl_init.c:13
FLA_Error FLA_Axpy_blk_var3(FLA_Obj alpha, FLA_Obj A, FLA_Obj B, fla_axpy_t *cntl)
Definition: FLA_Axpy_blk_var3.c:13
FLA_Obj FLA_ZERO
Definition: FLA_Init.c:20
FLA_Elemtype FLA_Obj_elemtype(FLA_Obj obj)
Definition: FLA_Query.c:51
FLA_Error FLA_Axpy_blk_var1(FLA_Obj alpha, FLA_Obj A, FLA_Obj B, fla_axpy_t *cntl)
Definition: FLA_Axpy_blk_var1.c:13