libflame revision_anchor
FLA_QR_UT_copy_task.c File Reference

(r)

Functions

FLA_Error FLA_QR_UT_copy_task (FLA_Obj A, FLA_Obj T, FLA_Obj U, fla_qrut_t *cntl)
 

Variables

fla_qrut_t * fla_qrut_cntl_leaf
 

Function Documentation

◆ FLA_QR_UT_copy_task()

FLA_Error FLA_QR_UT_copy_task ( FLA_Obj A,
FLA_Obj T,
FLA_Obj U,
fla_qrut_t * cntl )
16{
17 FLA_Error r_val;
18 FLA_Obj AT,
19 AB;
20
21 // Perform a QR factorization as we normally would.
22 r_val = FLA_QR_UT_internal( A, T,
24
25 // Partition away the bottom part of the matrix, if there is any, so that
26 // the dimensions match that of U. This step is only necessary so that
27 // the copyr operation below works normally for the last iteration of
28 // incremental QR. The whole point of making a copy of the lower triangle
29 // of A is to allow stage 2 to proceed without a dependency leading into
30 // stage 3. But the last iteration does not perform stage 2, and thus U
31 // is never read and so the copyr does not need to happen.
32 FLA_Part_2x1( A, &AT,
33 &AB, FLA_Obj_min_dim( A ), FLA_TOP );
34
35 // Copy the Householder vectors into U.
36 FLA_Copyr_external( FLA_LOWER_TRIANGULAR, AT, U );
37
38 return r_val;
39}
FLA_Error FLA_QR_UT_internal(FLA_Obj A, FLA_Obj T, fla_qrut_t *cntl)
Definition FLA_QR_UT_internal.c:17
fla_qrut_t * fla_qrut_cntl_leaf
Definition FLA_QR_UT_cntl_init.c:16
FLA_Error FLA_Copyr_external(FLA_Uplo uplo, FLA_Obj A, FLA_Obj B)
Definition FLA_Copyr_external.c:13
FLA_Error FLA_Part_2x1(FLA_Obj A, FLA_Obj *A1, FLA_Obj *A2, dim_t mb, FLA_Side side)
Definition FLA_View.c:76
dim_t FLA_Obj_min_dim(FLA_Obj obj)
Definition FLA_Query.c:153
int FLA_Error
Definition FLA_type_defs.h:47
Definition FLA_type_defs.h:159

References FLA_Copyr_external(), FLA_Obj_min_dim(), FLA_Part_2x1(), FLA_QR_UT_internal(), and fla_qrut_cntl_leaf.

Referenced by FLA_QR_UT_copy_internal(), and FLASH_Queue_exec_task().

Variable Documentation

◆ fla_qrut_cntl_leaf

fla_qrut_t* fla_qrut_cntl_leaf
extern

Referenced by FLA_QR_UT_copy_task().