libflame revision_anchor
FLASH_Apply_Q_UT.c File Reference

(r)

Functions

FLA_Error FLASH_Apply_Q_UT (FLA_Side side, FLA_Trans trans, FLA_Direct direct, FLA_Store storev, FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B)
 

Variables

fla_apqut_t * flash_apqut_cntl_blas
 
fla_apqut_t * fla_apqut_cntl_leaf
 

Function Documentation

◆ FLASH_Apply_Q_UT()

FLA_Error FLASH_Apply_Q_UT ( FLA_Side side,
FLA_Trans trans,
FLA_Direct direct,
FLA_Store storev,
FLA_Obj A,
FLA_Obj T,
FLA_Obj W,
FLA_Obj B )
17{
18 FLA_Error r_val;
19 dim_t b_alg;
20
21 // Check parameters.
22 if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
23 FLA_Apply_Q_UT_check( side, trans, direct, storev, A, T, W, B );
24
25 // Inspect the length of TTL to get the blocksize used by the QR/LQ
26 // factorization, which will be our inner blocksize for Apply_Q_UT.
27 b_alg = FLASH_Obj_scalar_length_tl( T );
28
29 // The traditional (non-incremental) Apply_Q_UT algorithm-by-blocks
30 // requires that the algorithmic blocksize be equal to the storage
31 // blocksize.
32 if ( b_alg != FLASH_Obj_scalar_width_tl( T ) )
33 {
34 FLA_Print_message( "FLASH_Apply_Q_UT() requires that b_alg == b_store",
35 __FILE__, __LINE__ );
36 FLA_Abort();
37 }
38
39 // Adjust the blocksize of the control tree node for the flat subproblem.
40 if ( FLA_Cntl_blocksize( fla_apqut_cntl_leaf ) != NULL )
41 FLA_Blocksize_set( FLA_Cntl_blocksize( fla_apqut_cntl_leaf ),
42 b_alg, b_alg, b_alg, b_alg );
43
44 // Begin a parallel region.
46
47 // Invoke FLA_Apply_Q_UT_internal() with the standard control tree.
48 r_val = FLA_Apply_Q_UT_internal( side, trans, direct, storev, A, T, W, B,
50
51 // End the parallel region.
53
54 return r_val;
55}
fla_apqut_t * fla_apqut_cntl_leaf
Definition FLA_Apply_Q_UT_cntl_init.c:19
fla_apqut_t * flash_apqut_cntl_blas
Definition FLASH_Apply_Q_UT_cntl_init.c:23
void FLASH_Queue_begin(void)
Definition FLASH_Queue.c:59
void FLASH_Queue_end(void)
Definition FLASH_Queue.c:81
dim_t FLASH_Obj_scalar_length_tl(FLA_Obj H)
Definition FLASH_View.c:723
dim_t FLASH_Obj_scalar_width_tl(FLA_Obj H)
Definition FLASH_View.c:737
FLA_Error FLA_Apply_Q_UT_internal(FLA_Side side, FLA_Trans trans, FLA_Direct direct, FLA_Store storev, FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B, fla_apqut_t *cntl)
Definition FLA_Apply_Q_UT_internal.c:17
FLA_Error FLA_Apply_Q_UT_check(FLA_Side side, FLA_Trans trans, FLA_Direct direct, FLA_Store storev, FLA_Obj A, FLA_Obj T, FLA_Obj W, FLA_Obj B)
Definition FLA_Apply_Q_UT_check.c:13
void FLA_Abort(void)
Definition FLA_Error.c:248
unsigned int FLA_Check_error_level(void)
Definition FLA_Check.c:18
void FLA_Blocksize_set(fla_blocksize_t *bp, dim_t b_s, dim_t b_d, dim_t b_c, dim_t b_z)
Definition FLA_Blocksize.c:54
void FLA_Print_message(char *str, char *file, int line)
Definition FLA_Error.c:234
int FLA_Error
Definition FLA_type_defs.h:47
unsigned long dim_t
Definition FLA_type_defs.h:71

References FLA_Abort(), FLA_Apply_Q_UT_check(), FLA_Apply_Q_UT_internal(), fla_apqut_cntl_leaf, FLA_Blocksize_set(), FLA_Check_error_level(), FLA_Print_message(), flash_apqut_cntl_blas, FLASH_Obj_scalar_length_tl(), FLASH_Obj_scalar_width_tl(), FLASH_Queue_begin(), and FLASH_Queue_end().

Referenced by FLASH_LQ_UT_solve(), and FLASH_QR_UT_solve().

Variable Documentation

◆ fla_apqut_cntl_leaf

fla_apqut_t* fla_apqut_cntl_leaf
extern

Referenced by FLASH_Apply_Q_UT().

◆ flash_apqut_cntl_blas