libflame revision_anchor
FLA_Axpy_internal.c File Reference

(r)

Functions

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

Variables

fla_axpy_t * flash_axpy_cntl_blas
 
fla_axpy_t * flash_axpy_cntl
 

Function Documentation

◆ FLA_Axpy_internal()

FLA_Error FLA_Axpy_internal ( FLA_Obj alpha,
FLA_Obj A,
FLA_Obj B,
fla_axpy_t * cntl )
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
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_Bool FLASH_Queue_get_enabled(void)
Definition FLASH_Queue.c:171
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
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_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_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
fla_axpy_t * flash_axpy_cntl_blas
Definition FLASH_Axpy_cntl_init.c:13
fla_axpy_t * flash_axpy_cntl
Definition FLASH_Axpy_cntl_init.c:15
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_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_Error FLA_Axpy_task(FLA_Obj alpha, FLA_Obj A, FLA_Obj B, fla_axpy_t *cntl)
Definition FLA_Axpy_task.c:13
FLA_Obj FLA_ZERO
Definition FLA_Init.c:20
FLA_Elemtype FLA_Obj_elemtype(FLA_Obj obj)
Definition FLA_Query.c:51
unsigned int FLA_Check_error_level(void)
Definition FLA_Check.c:18
FLA_Bool FLA_Obj_equals(FLA_Obj A, FLA_Obj B)
Definition FLA_Query.c:507
int FLA_Error
Definition FLA_type_defs.h:47

References FLA_Axpy_blk_var1(), FLA_Axpy_blk_var2(), FLA_Axpy_blk_var3(), FLA_Axpy_blk_var4(), FLA_Axpy_internal(), FLA_Axpy_internal_check(), FLA_Axpy_task(), FLA_Check_error_level(), FLA_Obj_elemtype(), FLA_Obj_equals(), FLA_ZERO, flash_axpy_cntl, 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_Axpy_internal(), 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().

Variable Documentation

◆ flash_axpy_cntl

fla_axpy_t* flash_axpy_cntl
extern

Referenced by FLA_Axpy_internal().

◆ flash_axpy_cntl_blas

fla_axpy_t* flash_axpy_cntl_blas
extern