libflame  revision_anchor
Functions | Variables
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_tfla_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 
)

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

Referenced by FLA_QR_UT_copy_internal(), and FLASH_Queue_exec_task().

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_qrut_t * fla_qrut_cntl_leaf
Definition: FLA_QR_UT_cntl_init.c:16
int FLA_Error
Definition: FLA_type_defs.h:47
Definition: FLA_type_defs.h:158
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
FLA_Error FLA_Copyr_external(FLA_Uplo uplo, FLA_Obj A, FLA_Obj B)
Definition: FLA_Copyr_external.c:13
FLA_Error FLA_QR_UT_internal(FLA_Obj A, FLA_Obj T, fla_qrut_t *cntl)
Definition: FLA_QR_UT_internal.c:17
dim_t FLA_Obj_min_dim(FLA_Obj obj)
Definition: FLA_Query.c:153

Variable Documentation

◆ fla_qrut_cntl_leaf

fla_qrut_t* fla_qrut_cntl_leaf