libflame  12600
Functions
FLA_Cntl_init_flamec.h File Reference

(r12600)

Go to the source code of this file.

Functions

void FLA_Cntl_init_flamec (void)
void FLA_Cntl_finalize_flamec (void)
void FLA_Transpose_cntl_init (void)
void FLA_Transpose_cntl_finalize (void)
void FLA_Axpy_cntl_init (void)
void FLA_Axpyt_cntl_init (void)
void FLA_Copy_cntl_init (void)
void FLA_Copyt_cntl_init (void)
void FLA_Copyr_cntl_init (void)
void FLA_Scal_cntl_init (void)
void FLA_Scalr_cntl_init (void)
void FLA_Axpy_cntl_finalize (void)
void FLA_Axpyt_cntl_finalize (void)
void FLA_Copy_cntl_finalize (void)
void FLA_Copyt_cntl_finalize (void)
void FLA_Copyr_cntl_finalize (void)
void FLA_Scal_cntl_finalize (void)
void FLA_Scalr_cntl_finalize (void)
void FLA_Gemv_cntl_init (void)
void FLA_Trsv_cntl_init (void)
void FLA_Gemv_cntl_finalize (void)
void FLA_Trsv_cntl_finalize (void)
void FLA_Gemm_cntl_init (void)
void FLA_Hemm_cntl_init (void)
void FLA_Herk_cntl_init (void)
void FLA_Her2k_cntl_init (void)
void FLA_Symm_cntl_init (void)
void FLA_Syrk_cntl_init (void)
void FLA_Syr2k_cntl_init (void)
void FLA_Trmm_cntl_init (void)
void FLA_Trsm_cntl_init (void)
void FLA_Gemm_cntl_finalize (void)
void FLA_Hemm_cntl_finalize (void)
void FLA_Herk_cntl_finalize (void)
void FLA_Her2k_cntl_finalize (void)
void FLA_Symm_cntl_finalize (void)
void FLA_Syrk_cntl_finalize (void)
void FLA_Syr2k_cntl_finalize (void)
void FLA_Trmm_cntl_finalize (void)
void FLA_Trsm_cntl_finalize (void)
void FLA_Apply_pivots_cntl_init (void)
void FLA_Chol_cntl_init (void)
void FLA_LU_piv_cntl_init (void)
void FLA_LU_nopiv_cntl_init (void)
void FLA_QR_UT_cntl_init (void)
void FLA_QR2_UT_cntl_init (void)
void FLA_LQ_UT_cntl_init (void)
void FLA_CAQR2_UT_cntl_init (void)
void FLA_UDdate_UT_cntl_init (void)
void FLA_Hess_UT_cntl_init (void)
void FLA_Tridiag_UT_cntl_init (void)
void FLA_Bidiag_UT_cntl_init (void)
void FLA_Trinv_cntl_init (void)
void FLA_Ttmm_cntl_init (void)
void FLA_Sylv_cntl_init (void)
void FLA_Lyap_cntl_init (void)
void FLA_SPDinv_cntl_init (void)
void FLA_Apply_Q_UT_cntl_init (void)
void FLA_Apply_Q2_UT_cntl_init (void)
void FLA_Apply_CAQ2_UT_cntl_init (void)
void FLA_Apply_QUD_UT_cntl_init (void)
void FLA_Eig_gest_cntl_init (void)
void FLA_Apply_pivots_cntl_finalize (void)
void FLA_Chol_cntl_finalize (void)
void FLA_LU_piv_cntl_finalize (void)
void FLA_LU_nopiv_cntl_finalize (void)
void FLA_QR_UT_cntl_finalize (void)
void FLA_QR2_UT_cntl_finalize (void)
void FLA_LQ_UT_cntl_finalize (void)
void FLA_CAQR2_UT_cntl_finalize (void)
void FLA_UDdate_UT_cntl_finalize (void)
void FLA_Hess_UT_cntl_finalize (void)
void FLA_Tridiag_UT_cntl_finalize (void)
void FLA_Bidiag_UT_cntl_finalize (void)
void FLA_Trinv_cntl_finalize (void)
void FLA_Ttmm_cntl_finalize (void)
void FLA_Sylv_cntl_finalize (void)
void FLA_Lyap_cntl_finalize (void)
void FLA_SPDinv_cntl_finalize (void)
void FLA_Apply_Q_UT_cntl_finalize (void)
void FLA_Apply_Q2_UT_cntl_finalize (void)
void FLA_Apply_CAQ2_UT_cntl_finalize (void)
void FLA_Apply_QUD_UT_cntl_finalize (void)
void FLA_Eig_gest_cntl_finalize (void)

Function Documentation

void FLA_Apply_CAQ2_UT_cntl_init ( void  )

References FLA_Blocksize_scale(), FLA_Cntl_apcaq2ut_obj_create(), and FLA_Query_blocksizes().

Referenced by FLA_Cntl_init_flamec().

{
    // Set the blocksize to the default value for conventional storage,
    // but scaled down.
    fla_apcaq2ut_var1_bsize = FLA_Query_blocksizes( FLA_DIMENSION_MIN );
    FLA_Blocksize_scale( fla_apcaq2ut_var1_bsize, FLA_CAQR_INNER_TO_OUTER_B_RATIO );

    // Create a control tree to invoke variant 1.
    fla_apcaq2ut_cntl_leaf = FLA_Cntl_apcaq2ut_obj_create( FLA_FLAT,
                                                           FLA_BLOCKED_VARIANT1, 
                                                           fla_apcaq2ut_var1_bsize,
                                                           NULL,
                                                           fla_gemm_cntl_blas,
                                                           fla_gemm_cntl_blas,
                                                           fla_trmm_cntl_blas,
                                                           fla_trmm_cntl_blas,
                                                           fla_trsm_cntl_blas,
                                                           fla_axpy_cntl_blas,
                                                           fla_axpy_cntl_blas,
                                                           fla_axpy_cntl_blas,
                                                           fla_copy_cntl_blas );
}
void FLA_Apply_pivots_cntl_init ( void  )

References FLA_Cntl_appiv_obj_create().

Referenced by FLA_Cntl_init_flamec().

{
    // Create a control tree to invoke LAPACK.
    fla_appiv_cntl_leaf = FLA_Cntl_appiv_obj_create( FLA_FLAT,
#ifdef FLA_ENABLE_EXTERNAL_LAPACK_FOR_SUBPROBLEMS
                                                     FLA_UNBLOCKED_EXTERN,
#else
                                                     FLA_UNB_OPT_VARIANT1,
#endif
                                                     NULL,
                                                     NULL );
}
void FLA_Apply_Q2_UT_cntl_init ( void  )

References FLA_Blocksize_scale(), FLA_Cntl_apq2ut_obj_create(), and FLA_Query_blocksizes().

Referenced by FLA_Cntl_init_flamec().

{
    // Set the blocksize to the default value for conventional storage,
    // but scaled down.
    fla_apq2ut_var1_bsize = FLA_Query_blocksizes( FLA_DIMENSION_MIN );
    FLA_Blocksize_scale( fla_apq2ut_var1_bsize, FLA_QR_INNER_TO_OUTER_B_RATIO );

    // Create a control tree to invoke variant 1.
    fla_apq2ut_cntl_leaf = FLA_Cntl_apq2ut_obj_create( FLA_FLAT,
                                                       FLA_BLOCKED_VARIANT1, 
                                                       fla_apq2ut_var1_bsize,
                                                       NULL,
                                                       fla_gemm_cntl_blas,
                                                       fla_gemm_cntl_blas,
                                                       fla_trsm_cntl_blas,
                                                       fla_copyt_cntl_blas,
                                                       fla_axpyt_cntl_blas );
}
void FLA_Apply_Q_UT_cntl_init ( void  )

References FLA_Blocksize_scale(), FLA_Cntl_apqut_obj_create(), and FLA_Query_blocksizes().

Referenced by FLA_Cntl_init_flamec().

{
    // Set the outer blocksize to the default value for conventional storage,
    // and the inner blocksize to the same value but scaled down.
    fla_apqut_var2_bsize = FLA_Query_blocksizes( FLA_DIMENSION_MIN );
    fla_apqut_var1_bsize = FLA_Query_blocksizes( FLA_DIMENSION_MIN );
    FLA_Blocksize_scale( fla_apqut_var1_bsize, FLA_QR_INNER_TO_OUTER_B_RATIO );

    // Create a control tree to invoke variant 1.
    fla_apqut_cntl_leaf = FLA_Cntl_apqut_obj_create( FLA_FLAT,
                                                     FLA_BLOCKED_VARIANT1, 
                                                     fla_apqut_var1_bsize,
                                                     NULL,
                                                     fla_trmm_cntl_blas,
                                                     fla_trmm_cntl_blas,
                                                     fla_gemm_cntl_blas,
                                                     fla_gemm_cntl_blas,
                                                     fla_trsm_cntl_blas,
                                                     fla_copyt_cntl_blas,
                                                     fla_axpyt_cntl_blas );
/*
    // Create a control tree to invoke variant 2.
    fla_apqut_cntl      = FLA_Cntl_apqut_obj_create( FLA_FLAT,
                                                     FLA_BLOCKED_VARIANT2, 
                                                     fla_apqut_var2_bsize,
                                                     fla_apqut_cntl_leaf,
                                                     NULL,
                                                     NULL,
                                                     NULL,
                                                     NULL,
                                                     NULL,
                                                     NULL,
                                                     NULL );
*/
}
void FLA_Apply_QUD_UT_cntl_init ( void  )

References FLA_Blocksize_scale(), FLA_Cntl_apqudut_obj_create(), and FLA_Query_blocksizes().

Referenced by FLA_Cntl_init_flamec().

{
    // Set the blocksize to the default value for conventional storage,
    // but scaled down.
    fla_apqudut_var1_bsize = FLA_Query_blocksizes( FLA_DIMENSION_MIN );
    FLA_Blocksize_scale( fla_apqudut_var1_bsize, FLA_UDDATE_INNER_TO_OUTER_B_RATIO );

    // Create a control tree to invoke variant 1.
    fla_apqudut_cntl_leaf = FLA_Cntl_apqudut_obj_create( FLA_FLAT,
                                                         FLA_BLOCKED_VARIANT1, 
                                                         fla_apqudut_var1_bsize,
                                                         NULL,
                                                         fla_gemm_cntl_blas,
                                                         fla_gemm_cntl_blas,
                                                         fla_gemm_cntl_blas,
                                                         fla_gemm_cntl_blas,
                                                         fla_trsm_cntl_blas,
                                                         fla_copyt_cntl_blas,
                                                         fla_axpyt_cntl_blas );
}
void FLA_Axpy_cntl_finalize ( void  )
void FLA_Axpy_cntl_init ( void  )

References FLA_Cntl_axpy_obj_create().

Referenced by FLA_Cntl_init_flamec().

{
    // Create a control tree that assumes A and B are small.
    fla_axpy_cntl_blas  = FLA_Cntl_axpy_obj_create( FLA_FLAT,
                                                    FLA_SUBPROBLEM,
                                                    NULL,
                                                    NULL );
}
void FLA_Axpyt_cntl_finalize ( void  )
void FLA_Axpyt_cntl_init ( void  )

References FLA_Cntl_axpyt_obj_create().

Referenced by FLA_Cntl_init_flamec().

{
    // Create a control tree that assumes A and B are small.
    fla_axpyt_cntl_blas  = FLA_Cntl_axpyt_obj_create( FLA_FLAT,
                                                      FLA_SUBPROBLEM,
                                                      NULL,
                                                      NULL );
}
void FLA_Bidiag_UT_cntl_finalize ( void  )
void FLA_Bidiag_UT_cntl_init ( void  )

References FLA_Blocksize_scale(), FLA_Cntl_bidiagut_obj_create(), and FLA_Query_blocksizes().

Referenced by FLA_Cntl_init_flamec().

{
    // Set blocksizes with default values for conventional storage.
    fla_bidiagut_bsize_leaf = FLA_Query_blocksizes( FLA_DIMENSION_MIN );
    FLA_Blocksize_scale( fla_bidiagut_bsize_leaf, FLA_BIDIAG_INNER_TO_OUTER_B_RATIO );

    // Create a control tree that uses fused subproblems.
    fla_bidiagut_cntl_fused = FLA_Cntl_bidiagut_obj_create( FLA_FLAT, 
                                                            FLA_BLK_FUS_VARIANT4,
                                                            fla_bidiagut_bsize_leaf );

    // Create a control tree that does not used any fusing.
    fla_bidiagut_cntl_nofus = FLA_Cntl_bidiagut_obj_create( FLA_FLAT, 
                                                            FLA_BLOCKED_VARIANT4,
                                                            fla_bidiagut_bsize_leaf );

    // Create a control tree that reflects the basic algorithm.
    fla_bidiagut_cntl_plain = FLA_Cntl_bidiagut_obj_create( FLA_FLAT, 
                                                            FLA_BLOCKED_VARIANT1,
                                                            fla_bidiagut_bsize_leaf );
}
void FLA_CAQR2_UT_cntl_finalize ( void  )
void FLA_CAQR2_UT_cntl_init ( void  )

References FLA_Blocksize_scale(), FLA_Cntl_caqr2ut_obj_create(), and FLA_Query_blocksizes().

Referenced by FLA_Cntl_init_flamec().

{
    // Set the blocksize to the default value for conventional storage,
    // but scaled down.
    fla_caqr2ut_var1_bsize = FLA_Query_blocksizes( FLA_DIMENSION_MIN );
    FLA_Blocksize_scale( fla_caqr2ut_var1_bsize, FLA_CAQR_INNER_TO_OUTER_B_RATIO );

    // Create a control tree to invoke unblocked variant 1.
    fla_caqr2ut_cntl_unb = FLA_Cntl_caqr2ut_obj_create( FLA_FLAT,
                                                        //FLA_UNBLOCKED_VARIANT1, 
                                                        FLA_UNB_OPT_VARIANT1, 
                                                        NULL,
                                                        NULL,
                                                        NULL,
                                                        NULL,
                                                        NULL,
                                                        NULL,
                                                        NULL,
                                                        NULL,
                                                        NULL,
                                                        NULL,
                                                        NULL );

    // Create a control tree for small-to-medium sequential problems and
    // as the means to compute on FLASH blocks.
    fla_caqr2ut_cntl_leaf = FLA_Cntl_caqr2ut_obj_create( FLA_FLAT,
                                                         FLA_BLOCKED_VARIANT1, 
                                                         fla_caqr2ut_var1_bsize,
                                                         fla_caqr2ut_cntl_unb,
                                                         fla_gemm_cntl_blas,
                                                         fla_gemm_cntl_blas,
                                                         fla_trmm_cntl_blas,
                                                         fla_trmm_cntl_blas,
                                                         fla_trsm_cntl_blas,
                                                         fla_axpy_cntl_blas,
                                                         fla_axpy_cntl_blas,
                                                         fla_axpy_cntl_blas,
                                                         fla_copy_cntl_blas );

}
void FLA_Chol_cntl_finalize ( void  )
void FLA_Chol_cntl_init ( void  )

References FLA_Blocksize_create_copy(), FLA_Blocksize_scale(), fla_chol_var3_in_to_ou_bsize_ratio, FLA_Cntl_chol_obj_create(), and FLA_Query_blocksizes().

Referenced by FLA_Cntl_init_flamec().

{
    // Set blocksize with default values for conventional storage.
    fla_chol_var3_bsize  = FLA_Query_blocksizes( FLA_DIMENSION_MIN );
    fla_chol_var3_bsize_in = FLA_Blocksize_create_copy( fla_chol_var3_bsize );
    FLA_Blocksize_scale( fla_chol_var3_bsize_in, fla_chol_var3_in_to_ou_bsize_ratio );

    // Create a control tree to invoke LAPACK.
    fla_chol_cntl_leaf    = FLA_Cntl_chol_obj_create( FLA_FLAT,
#ifdef FLA_ENABLE_EXTERNAL_LAPACK_FOR_SUBPROBLEMS
                                                      FLA_BLOCKED_EXTERN,
#else
                                                      FLA_UNB_OPT_VARIANT2,
#endif
                                                      NULL,
                                                      NULL,
                                                      NULL,
                                                      NULL,
                                                      NULL );

    // Create a control tree for small subproblems.
    fla_chol_cntl_in     = FLA_Cntl_chol_obj_create( FLA_FLAT,
                                                     FLA_BLOCKED_VARIANT3, 
                                                     fla_chol_var3_bsize_in,
                                                     fla_chol_cntl_leaf,
                                                     fla_herk_cntl_blas,
                                                     fla_trsm_cntl_blas,
                                                     NULL );

    // Create a control tree for larger problems with one level of recursion.
    fla_chol_cntl2       = FLA_Cntl_chol_obj_create( FLA_FLAT,
                                                     FLA_BLOCKED_VARIANT3, 
                                                     fla_chol_var3_bsize,
                                                     fla_chol_cntl_in,
                                                     fla_herk_cntl_blas,
                                                     fla_trsm_cntl_blas,
                                                     NULL );

    // Create a control tree for large problems with no extra recursion.
    fla_chol_cntl        = FLA_Cntl_chol_obj_create( FLA_FLAT,
                                                     FLA_BLOCKED_VARIANT3, 
                                                     fla_chol_var3_bsize,
                                                     fla_chol_cntl_leaf,
                                                     fla_herk_cntl_blas,
                                                     fla_trsm_cntl_blas,
                                                     NULL );
}
void FLA_Cntl_finalize_flamec ( void  )

References FLA_Apply_CAQ2_UT_cntl_finalize(), FLA_Apply_pivots_cntl_finalize(), FLA_Apply_Q2_UT_cntl_finalize(), FLA_Apply_Q_UT_cntl_finalize(), FLA_Apply_QUD_UT_cntl_finalize(), FLA_Axpy_cntl_finalize(), FLA_Axpyt_cntl_finalize(), FLA_Bidiag_UT_cntl_finalize(), FLA_CAQR2_UT_cntl_finalize(), FLA_Chol_cntl_finalize(), FLA_Copy_cntl_finalize(), FLA_Copyr_cntl_finalize(), FLA_Copyt_cntl_finalize(), FLA_Eig_gest_cntl_finalize(), FLA_Gemm_cntl_finalize(), FLA_Gemv_cntl_finalize(), FLA_Hemm_cntl_finalize(), FLA_Her2k_cntl_finalize(), FLA_Herk_cntl_finalize(), FLA_Hess_UT_cntl_finalize(), FLA_LQ_UT_cntl_finalize(), FLA_LU_nopiv_cntl_finalize(), FLA_LU_piv_cntl_finalize(), FLA_Lyap_cntl_finalize(), FLA_QR2_UT_cntl_finalize(), FLA_QR_UT_cntl_finalize(), FLA_Scal_cntl_finalize(), FLA_Scalr_cntl_finalize(), FLA_SPDinv_cntl_finalize(), FLA_Sylv_cntl_finalize(), FLA_Symm_cntl_finalize(), FLA_Syr2k_cntl_finalize(), FLA_Syrk_cntl_finalize(), FLA_Transpose_cntl_finalize(), FLA_Tridiag_UT_cntl_finalize(), FLA_Trinv_cntl_finalize(), FLA_Trmm_cntl_finalize(), FLA_Trsm_cntl_finalize(), FLA_Trsv_cntl_finalize(), FLA_Ttmm_cntl_finalize(), and FLA_UDdate_UT_cntl_finalize().

Referenced by FLA_Cntl_finalize().

void FLA_Cntl_init_flamec ( void  )

References FLA_Apply_CAQ2_UT_cntl_init(), FLA_Apply_pivots_cntl_init(), FLA_Apply_Q2_UT_cntl_init(), FLA_Apply_Q_UT_cntl_init(), FLA_Apply_QUD_UT_cntl_init(), FLA_Axpy_cntl_init(), FLA_Axpyt_cntl_init(), FLA_Bidiag_UT_cntl_init(), FLA_CAQR2_UT_cntl_init(), FLA_Chol_cntl_init(), FLA_Copy_cntl_init(), FLA_Copyr_cntl_init(), FLA_Copyt_cntl_init(), FLA_Eig_gest_cntl_init(), FLA_Gemm_cntl_init(), FLA_Gemv_cntl_init(), FLA_Hemm_cntl_init(), FLA_Her2k_cntl_init(), FLA_Herk_cntl_init(), FLA_Hess_UT_cntl_init(), FLA_LQ_UT_cntl_init(), FLA_LU_nopiv_cntl_init(), FLA_LU_piv_cntl_init(), FLA_Lyap_cntl_init(), FLA_QR2_UT_cntl_init(), FLA_QR_UT_cntl_init(), FLA_Scal_cntl_init(), FLA_Scalr_cntl_init(), FLA_SPDinv_cntl_init(), FLA_Sylv_cntl_init(), FLA_Symm_cntl_init(), FLA_Syr2k_cntl_init(), FLA_Syrk_cntl_init(), FLA_Transpose_cntl_init(), FLA_Tridiag_UT_cntl_init(), FLA_Trinv_cntl_init(), FLA_Trmm_cntl_init(), FLA_Trsm_cntl_init(), FLA_Trsv_cntl_init(), FLA_Ttmm_cntl_init(), and FLA_UDdate_UT_cntl_init().

Referenced by FLA_Cntl_init().

void FLA_Copy_cntl_finalize ( void  )
void FLA_Copy_cntl_init ( void  )

References FLA_Cntl_copy_obj_create().

Referenced by FLA_Cntl_init_flamec().

{
    // Create a control tree that assumes A and B are small.
    fla_copy_cntl_blas  = FLA_Cntl_copy_obj_create( FLA_FLAT,
                                                    FLA_SUBPROBLEM,
                                                    NULL,
                                                    NULL );
}
void FLA_Copyr_cntl_finalize ( void  )
void FLA_Copyr_cntl_init ( void  )

References FLA_Cntl_copyr_obj_create().

Referenced by FLA_Cntl_init_flamec().

{
    // Create a control tree that assumes A and B are small.
    fla_copyr_cntl_blas = FLA_Cntl_copyr_obj_create( FLA_FLAT,
                                                     FLA_SUBPROBLEM,
                                                     NULL,
                                                     NULL,
                                                     NULL );
}
void FLA_Copyt_cntl_finalize ( void  )
void FLA_Copyt_cntl_init ( void  )

References FLA_Cntl_copyt_obj_create().

Referenced by FLA_Cntl_init_flamec().

{
    // Create a control tree that assumes A and B are small.
    fla_copyt_cntl_blas = FLA_Cntl_copyt_obj_create( FLA_FLAT,
                                                     FLA_SUBPROBLEM,
                                                     NULL,
                                                     NULL );
}
void FLA_Eig_gest_cntl_finalize ( void  )
void FLA_Eig_gest_cntl_init ( void  )

References FLA_Cntl_eig_gest_obj_create(), and FLA_Query_blocksizes().

Referenced by FLA_Cntl_init_flamec().

{
    // Set blocksize with default values for conventional storage.
    fla_eig_gest_var1_bsize = FLA_Query_blocksizes( FLA_DIMENSION_MIN );

    // Create a control tree to invoke the unblocked subproblem (inverse cases).
    fla_eig_gest_ix_cntl_leaf = FLA_Cntl_eig_gest_obj_create( FLA_FLAT,
#ifdef FLA_ENABLE_EXTERNAL_LAPACK_FOR_SUBPROBLEMS
                                                              FLA_BLOCKED_EXTERN,
#else
                                                              FLA_UNB_OPT_VARIANT3,
#endif
                                                              NULL,
                                                              NULL,
                                                              NULL,
                                                              NULL,
                                                              NULL,
                                                              NULL,
                                                              NULL,
                                                              NULL,
                                                              NULL,
                                                              NULL,
                                                              NULL,
                                                              NULL,
                                                              NULL );

    // Create a control tree to invoke the unblocked subproblem (no inverse cases).
    fla_eig_gest_nx_cntl_leaf = FLA_Cntl_eig_gest_obj_create( FLA_FLAT,
#ifdef FLA_ENABLE_EXTERNAL_LAPACK_FOR_SUBPROBLEMS
                                                              FLA_BLOCKED_EXTERN,
#else
                                                              FLA_UNB_OPT_VARIANT2,
#endif
                                                              NULL,
                                                              NULL,
                                                              NULL,
                                                              NULL,
                                                              NULL,
                                                              NULL,
                                                              NULL,
                                                              NULL,
                                                              NULL,
                                                              NULL,
                                                              NULL,
                                                              NULL,
                                                              NULL );

    // Create a control tree for large problems with no extra recursion
    // (inverse cases).
    fla_eig_gest_ix_cntl      = FLA_Cntl_eig_gest_obj_create( FLA_FLAT,
                                                              FLA_BLOCKED_VARIANT4, 
                                                              fla_eig_gest_var1_bsize,
                                                              fla_eig_gest_ix_cntl_leaf,
                                                              fla_axpy_cntl_blas,
                                                              fla_axpy_cntl_blas,
                                                              fla_gemm_cntl_blas,
                                                              fla_gemm_cntl_blas,
                                                              fla_gemm_cntl_blas,
                                                              fla_hemm_cntl_blas,
                                                              fla_her2k_cntl_blas,
                                                              fla_trmm_cntl_blas,
                                                              fla_trmm_cntl_blas,
                                                              fla_trsm_cntl_blas,
                                                              fla_trsm_cntl_blas );

    // Create a control tree for large problems with no extra recursion
    // (no inverse cases).
    fla_eig_gest_nx_cntl      = FLA_Cntl_eig_gest_obj_create( FLA_FLAT,
                                                              FLA_BLOCKED_VARIANT2, 
                                                              fla_eig_gest_var1_bsize,
                                                              fla_eig_gest_nx_cntl_leaf,
                                                              fla_axpy_cntl_blas,
                                                              fla_axpy_cntl_blas,
                                                              fla_gemm_cntl_blas,
                                                              fla_gemm_cntl_blas,
                                                              fla_gemm_cntl_blas,
                                                              fla_hemm_cntl_blas,
                                                              fla_her2k_cntl_blas,
                                                              fla_trmm_cntl_blas,
                                                              fla_trmm_cntl_blas,
                                                              fla_trsm_cntl_blas,
                                                              fla_trsm_cntl_blas );
}
void FLA_Gemm_cntl_finalize ( void  )
void FLA_Gemm_cntl_init ( void  )

References FLA_Cntl_gemm_obj_create(), and FLA_Query_blocksizes().

Referenced by FLA_Cntl_init_flamec().

{
    // Set blocksizes with default values for conventional storage.
    fla_gemm_var1_bsize = FLA_Query_blocksizes( FLA_DIMENSION_MIN );
    fla_gemm_var3_bsize = FLA_Query_blocksizes( FLA_DIMENSION_MIN );
    fla_gemm_var5_bsize = FLA_Query_blocksizes( FLA_DIMENSION_MIN );

    // Create a control tree node that executes a gemm subproblem.
    fla_gemm_cntl_blas  = FLA_Cntl_gemm_obj_create( FLA_FLAT,
                                                    FLA_SUBPROBLEM,
                                                    NULL,
                                                    NULL,
                                                    NULL );

    // Create control trees for situations where one dimension is large.
    fla_gemm_cntl_pb_bb = FLA_Cntl_gemm_obj_create( FLA_FLAT,
                                                    FLA_BLOCKED_VARIANT1,
                                                    fla_gemm_var1_bsize,
                                                    fla_scal_cntl_blas,
                                                    fla_gemm_cntl_blas );
    fla_gemm_cntl_bp_bb = FLA_Cntl_gemm_obj_create( FLA_FLAT,
                                                    FLA_BLOCKED_VARIANT3,
                                                    fla_gemm_var3_bsize,
                                                    fla_scal_cntl_blas,
                                                    fla_gemm_cntl_blas );
    fla_gemm_cntl_ip_bb = FLA_Cntl_gemm_obj_create( FLA_FLAT,
                                                    FLA_BLOCKED_VARIANT5,
                                                    fla_gemm_var5_bsize,
                                                    fla_scal_cntl_blas,
                                                    fla_gemm_cntl_blas );

    // Create control trees for situations where two dimensions are large.
    fla_gemm_cntl_mp_ip    = FLA_Cntl_gemm_obj_create( FLA_FLAT,
                                                       FLA_BLOCKED_VARIANT1,
                                                       fla_gemm_var1_bsize,
                                                       fla_scal_cntl_blas,
                                                       fla_gemm_cntl_blas );
    fla_gemm_cntl_mp_ip_bb = FLA_Cntl_gemm_obj_create( FLA_FLAT,
                                                       FLA_BLOCKED_VARIANT1,
                                                       fla_gemm_var1_bsize,
                                                       fla_scal_cntl_blas,
                                                       fla_gemm_cntl_ip_bb );
    fla_gemm_cntl_op_bp    = FLA_Cntl_gemm_obj_create( FLA_FLAT,
                                                       FLA_BLOCKED_VARIANT1,
                                                       fla_gemm_var1_bsize,
                                                       fla_scal_cntl_blas,
                                                       fla_gemm_cntl_blas );
    fla_gemm_cntl_op_bp_bb = FLA_Cntl_gemm_obj_create( FLA_FLAT,
                                                       FLA_BLOCKED_VARIANT1,
                                                       fla_gemm_var1_bsize,
                                                       fla_scal_cntl_blas,
                                                       fla_gemm_cntl_bp_bb );
    fla_gemm_cntl_pm_ip    = FLA_Cntl_gemm_obj_create( FLA_FLAT,
                                                       FLA_BLOCKED_VARIANT3,
                                                       fla_gemm_var3_bsize,
                                                       fla_scal_cntl_blas,
                                                       fla_gemm_cntl_blas );
    fla_gemm_cntl_pm_ip_bb = FLA_Cntl_gemm_obj_create( FLA_FLAT,
                                                       FLA_BLOCKED_VARIANT3,
                                                       fla_gemm_var3_bsize,
                                                       fla_scal_cntl_blas,
                                                       fla_gemm_cntl_ip_bb );
    fla_gemm_cntl_op_pb    = FLA_Cntl_gemm_obj_create( FLA_FLAT,
                                                       FLA_BLOCKED_VARIANT3,
                                                       fla_gemm_var3_bsize,
                                                       fla_scal_cntl_blas,
                                                       fla_gemm_cntl_blas );
    fla_gemm_cntl_op_pb_bb = FLA_Cntl_gemm_obj_create( FLA_FLAT,
                                                       FLA_BLOCKED_VARIANT3,
                                                       fla_gemm_var3_bsize,
                                                       fla_scal_cntl_blas,
                                                       fla_gemm_cntl_pb_bb );
    fla_gemm_cntl_mp_pb    = FLA_Cntl_gemm_obj_create( FLA_FLAT,
                                                       FLA_BLOCKED_VARIANT5,
                                                       fla_gemm_var5_bsize,
                                                       fla_scal_cntl_blas,
                                                       fla_gemm_cntl_blas );
    fla_gemm_cntl_mp_pb_bb = FLA_Cntl_gemm_obj_create( FLA_FLAT,
                                                       FLA_BLOCKED_VARIANT5,
                                                       fla_gemm_var5_bsize,
                                                       fla_scal_cntl_blas,
                                                       fla_gemm_cntl_pb_bb );
    fla_gemm_cntl_pm_bp    = FLA_Cntl_gemm_obj_create( FLA_FLAT,
                                                       FLA_BLOCKED_VARIANT5,
                                                       fla_gemm_var5_bsize,
                                                       fla_scal_cntl_blas,
                                                       fla_gemm_cntl_blas );
    fla_gemm_cntl_pm_bp_bb = FLA_Cntl_gemm_obj_create( FLA_FLAT,
                                                       FLA_BLOCKED_VARIANT5,
                                                       fla_gemm_var5_bsize,
                                                       fla_scal_cntl_blas,
                                                       fla_gemm_cntl_bp_bb );

    // Create control trees for situations where all dimensions are large.
    fla_gemm_cntl_mm_pm       = FLA_Cntl_gemm_obj_create( FLA_FLAT,
                                                          FLA_BLOCKED_VARIANT1,
                                                          fla_gemm_var1_bsize,
                                                          fla_scal_cntl_blas,
                                                          fla_gemm_cntl_blas );
    fla_gemm_cntl_mm_pm_ip    = FLA_Cntl_gemm_obj_create( FLA_FLAT,
                                                          FLA_BLOCKED_VARIANT1,
                                                          fla_gemm_var1_bsize,
                                                          fla_scal_cntl_blas,
                                                          fla_gemm_cntl_pm_ip );
    fla_gemm_cntl_mm_pm_ip_bb = FLA_Cntl_gemm_obj_create( FLA_FLAT,
                                                          FLA_BLOCKED_VARIANT1,
                                                          fla_gemm_var1_bsize,
                                                          fla_scal_cntl_blas,
                                                          fla_gemm_cntl_pm_ip_bb );
    fla_gemm_cntl_mm_mp       = FLA_Cntl_gemm_obj_create( FLA_FLAT,
                                                          FLA_BLOCKED_VARIANT3,
                                                          fla_gemm_var3_bsize,
                                                          fla_scal_cntl_blas,
                                                          fla_gemm_cntl_blas );
    fla_gemm_cntl_mm_mp_ip    = FLA_Cntl_gemm_obj_create( FLA_FLAT,
                                                          FLA_BLOCKED_VARIANT3,
                                                          fla_gemm_var3_bsize,
                                                          fla_scal_cntl_blas,
                                                          fla_gemm_cntl_mp_ip );
    fla_gemm_cntl_mm_mp_ip_bb = FLA_Cntl_gemm_obj_create( FLA_FLAT,
                                                          FLA_BLOCKED_VARIANT3,
                                                          fla_gemm_var3_bsize,
                                                          fla_scal_cntl_blas,
                                                          fla_gemm_cntl_mp_ip_bb );
    fla_gemm_cntl_mm_op       = FLA_Cntl_gemm_obj_create( FLA_FLAT,
                                                          FLA_BLOCKED_VARIANT5,
                                                          fla_gemm_var5_bsize,
                                                          fla_scal_cntl_blas,
                                                          fla_gemm_cntl_blas );
    fla_gemm_cntl_mm_op_bp    = FLA_Cntl_gemm_obj_create( FLA_FLAT,
                                                          FLA_BLOCKED_VARIANT5,
                                                          fla_gemm_var5_bsize,
                                                          fla_scal_cntl_blas,
                                                          fla_gemm_cntl_op_bp );
    fla_gemm_cntl_mm_op_bp_bb = FLA_Cntl_gemm_obj_create( FLA_FLAT,
                                                          FLA_BLOCKED_VARIANT5,
                                                          fla_gemm_var5_bsize,
                                                          fla_scal_cntl_blas,
                                                          fla_gemm_cntl_op_bp_bb );
}
void FLA_Gemv_cntl_finalize ( void  )
void FLA_Gemv_cntl_init ( void  )

References FLA_Cntl_gemv_obj_create().

Referenced by FLA_Cntl_init_flamec().

{
    // Create a control tree that assumes A is small.
    fla_gemv_cntl_blas  = FLA_Cntl_gemv_obj_create( FLA_FLAT,
                                                    FLA_SUBPROBLEM,
                                                    NULL,
                                                    NULL,
                                                    NULL );
}
void FLA_Hemm_cntl_finalize ( void  )
void FLA_Hemm_cntl_init ( void  )

References FLA_Cntl_hemm_obj_create(), and FLA_Query_blocksizes().

Referenced by FLA_Cntl_init_flamec().

{
    // Set blocksizes with default values for conventional storage.
    fla_hemm_var1_bsize = FLA_Query_blocksizes( FLA_DIMENSION_MIN );
    fla_hemm_var9_bsize = FLA_Query_blocksizes( FLA_DIMENSION_MIN );

    // Create a control tree that assumes A and B are b x b blocks.
    fla_hemm_cntl_blas  = FLA_Cntl_hemm_obj_create( FLA_FLAT, 
                                                    FLA_SUBPROBLEM,
                                                    NULL,
                                                    NULL,
                                                    NULL,
                                                    NULL,
                                                    NULL );

    // Create a control tree that assumes A is a block and B is a panel.
    fla_hemm_cntl_bp    = FLA_Cntl_hemm_obj_create( FLA_FLAT,
                                                    FLA_BLOCKED_VARIANT9,
                                                    fla_hemm_var9_bsize,
                                                    fla_scal_cntl_blas,
                                                    fla_hemm_cntl_blas,
                                                    NULL,
                                                    NULL );

    // Create a control tree that assumes A is large and B is a panel.
    fla_hemm_cntl_mp    = FLA_Cntl_hemm_obj_create( FLA_FLAT,
                                                    FLA_BLOCKED_VARIANT1,
                                                    fla_hemm_var1_bsize,
                                                    fla_scal_cntl_blas,
                                                    fla_hemm_cntl_blas,
                                                    fla_gemm_cntl_blas,
                                                    fla_gemm_cntl_blas );

    // Create a control tree that assumes A and B are both large.
    fla_hemm_cntl_mm    = FLA_Cntl_hemm_obj_create( FLA_FLAT,
                                                    FLA_BLOCKED_VARIANT9,
                                                    fla_hemm_var9_bsize,
                                                    fla_scal_cntl_blas,
                                                    fla_hemm_cntl_mp,
                                                    NULL,
                                                    NULL );

}
void FLA_Her2k_cntl_finalize ( void  )
void FLA_Her2k_cntl_init ( void  )

References FLA_Cntl_her2k_obj_create(), and FLA_Query_blocksizes().

Referenced by FLA_Cntl_init_flamec().

{
    // Set blocksizes with default values for conventional storage.
    fla_her2k_var3_bsize = FLA_Query_blocksizes( FLA_DIMENSION_MIN );
    fla_her2k_var9_bsize = FLA_Query_blocksizes( FLA_DIMENSION_MIN );

    // Create a control tree that assumes A and B are b x b blocks.
    fla_her2k_cntl_blas  = FLA_Cntl_her2k_obj_create( FLA_FLAT,
                                                      FLA_SUBPROBLEM,
                                                      NULL,
                                                      NULL,
                                                      NULL,
                                                      NULL,
                                                      NULL );
 
    // Create a control tree that assumes A and B form an inner panel product.
    fla_her2k_cntl_ip    = FLA_Cntl_her2k_obj_create( FLA_FLAT,
                                                      FLA_BLOCKED_VARIANT9,
                                                      fla_her2k_var9_bsize,
                                                      fla_scalr_cntl_blas,
                                                      fla_her2k_cntl_blas,
                                                      NULL,
                                                      NULL );

    // Create a control tree that assumes A and B form an outer panel product.
    fla_her2k_cntl_op    = FLA_Cntl_her2k_obj_create( FLA_FLAT,
                                                      FLA_BLOCKED_VARIANT3,
                                                      fla_her2k_var3_bsize,
                                                      fla_scalr_cntl_blas,
                                                      fla_her2k_cntl_blas,
                                                      fla_gemm_cntl_blas,
                                                      fla_gemm_cntl_blas );

    // Create a control tree that assumes A and B are both large.
    fla_her2k_cntl_mm    = FLA_Cntl_her2k_obj_create( FLA_FLAT,
                                                      FLA_BLOCKED_VARIANT9,
                                                      fla_her2k_var9_bsize,
                                                      fla_scalr_cntl_blas,
                                                      fla_her2k_cntl_op,
                                                      NULL,
                                                      NULL );
}
void FLA_Herk_cntl_finalize ( void  )
void FLA_Herk_cntl_init ( void  )

References FLA_Cntl_herk_obj_create(), and FLA_Query_blocksizes().

Referenced by FLA_Cntl_init_flamec().

{
    // Set blocksizes with default values for conventional storage.
    fla_herk_var2_bsize = FLA_Query_blocksizes( FLA_DIMENSION_MIN );
    fla_herk_var5_bsize = FLA_Query_blocksizes( FLA_DIMENSION_MIN );

    // Create a control tree that assumes A is a b x b block.
    fla_herk_cntl_blas  = FLA_Cntl_herk_obj_create( FLA_FLAT,
                                                    FLA_SUBPROBLEM,
                                                    NULL,
                                                    NULL,
                                                    NULL,
                                                    NULL );

    // Create a control tree that assumes A * A' forms an inner panel product.
    fla_herk_cntl_ip    = FLA_Cntl_herk_obj_create( FLA_FLAT,
                                                    FLA_BLOCKED_VARIANT5,
                                                    fla_herk_var5_bsize,
                                                    fla_scalr_cntl_blas,
                                                    fla_herk_cntl_blas,
                                                    NULL );

    // Create a control tree that assumes A * A' forms an outer panel product.
    fla_herk_cntl_op    = FLA_Cntl_herk_obj_create( FLA_FLAT,
                                                    FLA_BLOCKED_VARIANT2,
                                                    fla_herk_var2_bsize,
                                                    fla_scalr_cntl_blas,
                                                    fla_herk_cntl_blas,
                                                    fla_gemm_cntl_blas );

    // Create a control tree that assumes A is large.
    fla_herk_cntl_mm    = FLA_Cntl_herk_obj_create( FLA_FLAT,
                                                    FLA_BLOCKED_VARIANT5,
                                                    fla_herk_var5_bsize,
                                                    fla_scalr_cntl_blas,
                                                    fla_herk_cntl_op,
                                                    NULL );
}
void FLA_Hess_UT_cntl_finalize ( void  )
void FLA_Hess_UT_cntl_init ( void  )

References FLA_Blocksize_scale(), FLA_Cntl_hessut_obj_create(), and FLA_Query_blocksizes().

Referenced by FLA_Cntl_init_flamec().

{
    // Set blocksizes with default values for conventional storage.
    fla_hessut_bsize_leaf = FLA_Query_blocksizes( FLA_DIMENSION_MIN );
    FLA_Blocksize_scale( fla_hessut_bsize_leaf, FLA_HESS_INNER_TO_OUTER_B_RATIO );

    // Create a control tree for small-to-medium sequential problems.
    fla_hessut_cntl_leaf = FLA_Cntl_hessut_obj_create( FLA_FLAT, 
                                                       FLA_BLOCKED_VARIANT5,
                                                       fla_hessut_bsize_leaf );
}
void FLA_LQ_UT_cntl_finalize ( void  )
void FLA_LQ_UT_cntl_init ( void  )

References FLA_Blocksize_scale(), FLA_Cntl_lqut_obj_create(), and FLA_Query_blocksizes().

Referenced by FLA_Cntl_init_flamec().

{
    // Set blocksizes with default values for conventional storage.
    fla_lqut_var1_bsize_leaf = FLA_Query_blocksizes( FLA_DIMENSION_MIN );
    FLA_Blocksize_scale( fla_lqut_var1_bsize_leaf, FLA_LQ_INNER_TO_OUTER_B_RATIO );

    // Create a control tree to invoke unblocked variant 2.
    fla_lqut_cntl_unb  = FLA_Cntl_lqut_obj_create( FLA_FLAT,
                                                   FLA_UNB_OPT_VARIANT2,
                                                   NULL,
                                                   NULL,
                                                   NULL );

    // Create a control tree for small-to-medium sequential problems and
    // as the means to compute on FLASH blocks.
    fla_lqut_cntl_leaf = FLA_Cntl_lqut_obj_create( FLA_FLAT, 
                                                   FLA_BLOCKED_VARIANT1,
                                                   fla_lqut_var1_bsize_leaf,
                                                   fla_lqut_cntl_unb,
                                                   fla_apqut_cntl_leaf );
}
void FLA_LU_nopiv_cntl_finalize ( void  )
void FLA_LU_nopiv_cntl_init ( void  )

References FLA_Blocksize_create_copy(), FLA_Blocksize_scale(), FLA_Cntl_lu_obj_create(), fla_lu_nopiv_var5_in_to_ou_bsize_ratio, and FLA_Query_blocksizes().

Referenced by FLA_Cntl_init_flamec().

{
    // Set blocksizes with default values for conventional storage.
    fla_lu_nopiv_var5_bsize    = FLA_Query_blocksizes( FLA_DIMENSION_MIN );
    fla_lu_nopiv_var5_bsize_in = FLA_Blocksize_create_copy( fla_lu_nopiv_var5_bsize );
    FLA_Blocksize_scale( fla_lu_nopiv_var5_bsize_in, fla_lu_nopiv_var5_in_to_ou_bsize_ratio );

    // Create a control tree to invoke unblocked variant 1.
    fla_lu_nopiv_cntl_leaf   = FLA_Cntl_lu_obj_create( FLA_FLAT,
                                                       FLA_UNB_OPT_VARIANT5,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL );

    // Create a control tree for small subproblems.
    fla_lu_nopiv_cntl_in     = FLA_Cntl_lu_obj_create( FLA_FLAT, 
                                                       FLA_BLOCKED_VARIANT5,
                                                       fla_lu_nopiv_var5_bsize_in,
                                                       fla_lu_nopiv_cntl_leaf,
                                                       fla_gemm_cntl_blas,
                                                       fla_gemm_cntl_blas,
                                                       fla_gemm_cntl_blas,
                                                       fla_trsm_cntl_blas,
                                                       fla_trsm_cntl_blas,
                                                       NULL,
                                                       NULL );

    // Create a control tree for larger problems with one level of recursion.
    fla_lu_nopiv_cntl2       = FLA_Cntl_lu_obj_create( FLA_FLAT, 
                                                       FLA_BLOCKED_VARIANT5,
                                                       fla_lu_nopiv_var5_bsize,
                                                       fla_lu_nopiv_cntl_in,
                                                       fla_gemm_cntl_blas,
                                                       fla_gemm_cntl_blas,
                                                       fla_gemm_cntl_blas,
                                                       fla_trsm_cntl_blas,
                                                       fla_trsm_cntl_blas,
                                                       NULL,
                                                       NULL );

    // Create a control tree for large problems with no extra recursion.
    fla_lu_nopiv_cntl        = FLA_Cntl_lu_obj_create( FLA_FLAT, 
                                                       FLA_BLOCKED_VARIANT5,
                                                       fla_lu_nopiv_var5_bsize,
                                                       fla_lu_nopiv_cntl_leaf,
                                                       fla_gemm_cntl_blas,
                                                       fla_gemm_cntl_blas,
                                                       fla_gemm_cntl_blas,
                                                       fla_trsm_cntl_blas,
                                                       fla_trsm_cntl_blas,
                                                       NULL,
                                                       NULL );
}
void FLA_LU_piv_cntl_finalize ( void  )
void FLA_LU_piv_cntl_init ( void  )

References FLA_Blocksize_create_copy(), FLA_Blocksize_scale(), FLA_Cntl_lu_obj_create(), fla_lu_piv_var5_in_to_ou_bsize_ratio, and FLA_Query_blocksizes().

Referenced by FLA_Cntl_init_flamec().

{
    // Set blocksizes with default values for conventional storage.
    fla_lu_piv_var5_bsize    = FLA_Query_blocksizes( FLA_DIMENSION_MIN );
    fla_lu_piv_var5_bsize_in = FLA_Blocksize_create_copy( fla_lu_piv_var5_bsize );
    FLA_Blocksize_scale( fla_lu_piv_var5_bsize_in, fla_lu_piv_var5_in_to_ou_bsize_ratio );

    // Create a control tree to invoke LAPACK.
    fla_lu_piv_cntl_leaf   = FLA_Cntl_lu_obj_create( FLA_FLAT,
#ifdef FLA_ENABLE_EXTERNAL_LAPACK_FOR_SUBPROBLEMS
                                                     FLA_BLOCKED_EXTERN,
#else
                                                     FLA_UNB_OPT_VARIANT4,
#endif
                                                     NULL,
                                                     NULL,
                                                     NULL,
                                                     NULL,
                                                     NULL,
                                                     NULL,
                                                     NULL,
                                                     NULL,
                                                     NULL );

    // Create a control tree for small subproblems.
    fla_lu_piv_cntl_in     = FLA_Cntl_lu_obj_create( FLA_FLAT, 
                                                     FLA_BLOCKED_VARIANT5,
                                                     fla_lu_piv_var5_bsize_in,
                                                     fla_lu_piv_cntl_leaf,
                                                     fla_gemm_cntl_blas,
                                                     fla_gemm_cntl_blas,
                                                     fla_gemm_cntl_blas,
                                                     fla_trsm_cntl_blas,
                                                     fla_trsm_cntl_blas,
                                                     fla_appiv_cntl_leaf,
                                                     fla_appiv_cntl_leaf );

    // Create a control tree for larger problems with one level of recursion.
    fla_lu_piv_cntl2       = FLA_Cntl_lu_obj_create( FLA_FLAT, 
                                                     FLA_BLOCKED_VARIANT5,
                                                     fla_lu_piv_var5_bsize,
                                                     fla_lu_piv_cntl_in,
                                                     fla_gemm_cntl_blas,
                                                     fla_gemm_cntl_blas,
                                                     fla_gemm_cntl_blas,
                                                     fla_trsm_cntl_blas,
                                                     fla_trsm_cntl_blas,
                                                     fla_appiv_cntl_leaf,
                                                     fla_appiv_cntl_leaf );

    // Create a control tree for large problems with no extra recursion.
    fla_lu_piv_cntl        = FLA_Cntl_lu_obj_create( FLA_FLAT, 
                                                     FLA_BLOCKED_VARIANT5,
                                                     fla_lu_piv_var5_bsize,
                                                     fla_lu_piv_cntl_leaf,
                                                     fla_gemm_cntl_blas,
                                                     fla_gemm_cntl_blas,
                                                     fla_gemm_cntl_blas,
                                                     fla_trsm_cntl_blas,
                                                     fla_trsm_cntl_blas,
                                                     fla_appiv_cntl_leaf,
                                                     fla_appiv_cntl_leaf );
}
void FLA_Lyap_cntl_finalize ( void  )
void FLA_Lyap_cntl_init ( void  )

References FLA_Cntl_lyap_obj_create(), and FLA_Query_blocksizes().

Referenced by FLA_Cntl_init_flamec().

{
    // Set blocksize with default value for conventional storage.
    fla_lyap_bsize       = FLA_Query_blocksizes( FLA_DIMENSION_MIN );

    // Create a control tree to invoke an unblocked variant.
    fla_lyap_cntl_leaf   = FLA_Cntl_lyap_obj_create( FLA_FLAT,
                                                     FLA_UNBLOCKED_VARIANT1,
                                                     NULL,
                                                     NULL,
                                                     NULL,
                                                     NULL,
                                                     NULL,
                                                     NULL,
                                                     NULL,
                                                     NULL );

    // Create a control tree to invoke a blocked variant.
    fla_lyap_cntl        = FLA_Cntl_lyap_obj_create( FLA_FLAT, 
                                                     FLA_BLOCKED_VARIANT1,
                                                     fla_lyap_bsize,
                                                     fla_scal_cntl_blas,
                                                     fla_lyap_cntl_leaf,
                                                     fla_sylv_cntl,
                                                     fla_gemm_cntl_blas,
                                                     fla_gemm_cntl_blas,
                                                     fla_hemm_cntl_blas,
                                                     fla_her2k_cntl_blas );
}
void FLA_QR2_UT_cntl_finalize ( void  )
void FLA_QR2_UT_cntl_init ( void  )

References FLA_Blocksize_scale(), FLA_Cntl_qr2ut_obj_create(), and FLA_Query_blocksizes().

Referenced by FLA_Cntl_init_flamec().

{
    // Set the blocksize to the default value for conventional storage,
    // but scaled down.
    fla_qr2ut_var1_bsize = FLA_Query_blocksizes( FLA_DIMENSION_MIN );
    FLA_Blocksize_scale( fla_qr2ut_var1_bsize, FLA_QR_INNER_TO_OUTER_B_RATIO );

    // Create a control tree to invoke unblocked variant 1.
    fla_qr2ut_cntl_unb = FLA_Cntl_qr2ut_obj_create( FLA_FLAT,
                                                    FLA_UNB_OPT_VARIANT1, 
                                                    NULL,
                                                    NULL,
                                                    NULL,
                                                    NULL,
                                                    NULL,
                                                    NULL,
                                                    NULL );

    // Create a control tree for small-to-medium sequential problems and
    // as the means to compute on FLASH blocks.
    fla_qr2ut_cntl_leaf = FLA_Cntl_qr2ut_obj_create( FLA_FLAT,
                                                     FLA_BLOCKED_VARIANT1, 
                                                     fla_qr2ut_var1_bsize,
                                                     fla_qr2ut_cntl_unb,
                                                     fla_gemm_cntl_blas,
                                                     fla_gemm_cntl_blas,
                                                     fla_trsm_cntl_blas,
                                                     fla_copy_cntl_blas,
                                                     fla_axpy_cntl_blas );

}
void FLA_QR_UT_cntl_finalize ( void  )
void FLA_QR_UT_cntl_init ( void  )

References FLA_Blocksize_scale(), FLA_Cntl_qrut_obj_create(), and FLA_Query_blocksizes().

Referenced by FLA_Cntl_init_flamec().

{
    // Set blocksizes with default values for conventional storage.
    fla_qrut_var1_bsize_leaf = FLA_Query_blocksizes( FLA_DIMENSION_MIN );
    FLA_Blocksize_scale( fla_qrut_var1_bsize_leaf, FLA_QR_INNER_TO_OUTER_B_RATIO );

    // Create a control tree to invoke unblocked variant 2.
    fla_qrut_cntl_unb  = FLA_Cntl_qrut_obj_create( FLA_FLAT,
                                                   FLA_UNB_OPT_VARIANT2, 
                                                   NULL,
                                                   NULL,
                                                   NULL );

    // Create a control tree for small-to-medium sequential problems and
    // as the means to compute on FLASH blocks.
    fla_qrut_cntl_leaf = FLA_Cntl_qrut_obj_create( FLA_FLAT, 
                                                   FLA_BLOCKED_VARIANT1,
                                                   fla_qrut_var1_bsize_leaf,
                                                   fla_qrut_cntl_unb,
                                                   fla_apqut_cntl_leaf );

    // Create a control tree to invoke unblocked variant 1.
    fla_qrut_piv_cntl_unb  = FLA_Cntl_qrut_obj_create( FLA_FLAT,
                                                           FLA_UNBLOCKED_VARIANT2, 
                                                           NULL,
                                                           NULL,
                                                           NULL );

    // Create a control tree for QR_UT_piv.
    fla_qrut_piv_cntl_leaf = FLA_Cntl_qrut_obj_create( FLA_FLAT, 
                                                           FLA_BLOCKED_VARIANT2,
                                                           fla_qrut_var1_bsize_leaf,
                                                           fla_qrut_piv_cntl_unb,
                                                           fla_apqut_cntl_leaf );
}
void FLA_Scal_cntl_finalize ( void  )
void FLA_Scal_cntl_init ( void  )

References FLA_Cntl_scal_obj_create().

Referenced by FLA_Cntl_init_flamec().

{
    // Create a control tree that assumes A is small.
    fla_scal_cntl_blas  = FLA_Cntl_scal_obj_create( FLA_FLAT,
                                                    FLA_SUBPROBLEM,
                                                    NULL,
                                                    NULL );
}
void FLA_Scalr_cntl_finalize ( void  )
void FLA_Scalr_cntl_init ( void  )

References FLA_Cntl_scalr_obj_create().

Referenced by FLA_Cntl_init_flamec().

{
    // Create a control tree that assumes A is small.
    fla_scalr_cntl_blas  = FLA_Cntl_scalr_obj_create( FLA_FLAT,
                                                      FLA_SUBPROBLEM,
                                                      NULL,
                                                      NULL,
                                                      NULL );
}
void FLA_SPDinv_cntl_finalize ( void  )
void FLA_SPDinv_cntl_init ( void  )

References FLA_Cntl_spdinv_obj_create(), and FLA_Query_blocksizes().

Referenced by FLA_Cntl_init_flamec().

{
    // Rather than embed a blocksize, we store the cutoff matrix size for
    // switching from external routines to internal FLAME variants.
    fla_spdinv_size_cutoff = FLA_Query_blocksizes( FLA_DIMENSION_MIN );

    // Initialize a control tree node that calls the top-level Cholesky
    // factorization, Trinagular inversion, and Triangular-transpose matrix
    // multiply control trees. 
    fla_spdinv_cntl        = FLA_Cntl_spdinv_obj_create( FLA_FLAT,
                                                         FLA_BLOCKED_VARIANT1, 
                                                         fla_spdinv_size_cutoff,
                                                         fla_chol_cntl,
                                                         fla_trinv_cntl,
                                                         fla_ttmm_cntl );
}
void FLA_Sylv_cntl_finalize ( void  )
void FLA_Sylv_cntl_init ( void  )

References FLA_Cntl_sylv_obj_create(), and FLA_Query_blocksizes().

Referenced by FLA_Cntl_init_flamec().

{
    // Set blocksize with default value for conventional storage.
    fla_sylv_bsize       = FLA_Query_blocksizes( FLA_DIMENSION_MIN );

    // Create a control tree to invoke LAPACK.
    fla_sylv_cntl_leaf   = FLA_Cntl_sylv_obj_create( FLA_FLAT,
#ifdef FLA_ENABLE_EXTERNAL_LAPACK_FOR_SUBPROBLEMS
                                                     FLA_BLOCKED_EXTERN, 
#else
                                                     FLA_UNB_OPT_VARIANT1,
#endif
                                                     NULL,
                                                     NULL,
                                                     NULL,
                                                     NULL,
                                                     NULL,
                                                     NULL,
                                                     NULL,
                                                     NULL,
                                                     NULL,
                                                     NULL,
                                                     NULL,
                                                     NULL );

    // Create a control tree to invoke variant 15.
    fla_sylv_cntl_mb     = FLA_Cntl_sylv_obj_create( FLA_FLAT, 
                                                     FLA_BLOCKED_VARIANT15,
                                                     fla_sylv_bsize,
                                                     fla_sylv_cntl_leaf,
                                                     NULL,
                                                     NULL,
                                                     fla_gemm_cntl_blas,
                                                     NULL,
                                                     NULL,
                                                     NULL,
                                                     NULL,
                                                     NULL,
                                                     NULL,
                                                     NULL );

    // Create a control tree to invoke variant 17.
    fla_sylv_cntl        = FLA_Cntl_sylv_obj_create( FLA_FLAT, 
                                                     FLA_BLOCKED_VARIANT17,
                                                     fla_sylv_bsize,
                                                     fla_sylv_cntl_mb,
                                                     NULL,
                                                     NULL,
                                                     fla_gemm_cntl_blas,
                                                     NULL,
                                                     NULL,
                                                     NULL,
                                                     NULL,
                                                     NULL,
                                                     NULL,
                                                     NULL );
}
void FLA_Symm_cntl_finalize ( void  )
void FLA_Symm_cntl_init ( void  )

References FLA_Cntl_symm_obj_create(), and FLA_Query_blocksizes().

Referenced by FLA_Cntl_init_flamec().

{
    // Set blocksizes with default values for conventional storage.
    fla_symm_var1_bsize = FLA_Query_blocksizes( FLA_DIMENSION_MIN );
    fla_symm_var9_bsize = FLA_Query_blocksizes( FLA_DIMENSION_MIN );

    // Create a control tree that assumes A and B are b x b blocks.
    fla_symm_cntl_blas  = FLA_Cntl_symm_obj_create( FLA_FLAT, 
                                                    FLA_SUBPROBLEM,
                                                    NULL,
                                                    NULL,
                                                    NULL,
                                                    NULL,
                                                    NULL );

    // Create a control tree that assumes A is a block and B is a panel.
    fla_symm_cntl_bp    = FLA_Cntl_symm_obj_create( FLA_FLAT,
                                                    FLA_BLOCKED_VARIANT9,
                                                    fla_symm_var9_bsize,
                                                    fla_scal_cntl_blas,
                                                    fla_symm_cntl_blas,
                                                    NULL,
                                                    NULL );

    // Create a control tree that assumes A is large and B is a panel.
    fla_symm_cntl_mp    = FLA_Cntl_symm_obj_create( FLA_FLAT,
                                                    FLA_BLOCKED_VARIANT1,
                                                    fla_symm_var1_bsize,
                                                    fla_scal_cntl_blas,
                                                    fla_symm_cntl_blas,
                                                    fla_gemm_cntl_blas,
                                                    fla_gemm_cntl_blas );

    // Create a control tree that assumes A and B are both large.
    fla_symm_cntl_mm    = FLA_Cntl_symm_obj_create( FLA_FLAT,
                                                    FLA_BLOCKED_VARIANT9,
                                                    fla_symm_var9_bsize,
                                                    fla_scal_cntl_blas,
                                                    fla_symm_cntl_mp,
                                                    NULL,
                                                    NULL );

}
void FLA_Syr2k_cntl_finalize ( void  )
void FLA_Syr2k_cntl_init ( void  )

References FLA_Cntl_syr2k_obj_create(), and FLA_Query_blocksizes().

Referenced by FLA_Cntl_init_flamec().

{
    // Set blocksizes with default values for conventional storage.
    fla_syr2k_var3_bsize = FLA_Query_blocksizes( FLA_DIMENSION_MIN );
    fla_syr2k_var9_bsize = FLA_Query_blocksizes( FLA_DIMENSION_MIN );

    // Create a control tree that assumes A and B are b x b blocks.
    fla_syr2k_cntl_blas  = FLA_Cntl_syr2k_obj_create( FLA_FLAT,
                                                      FLA_SUBPROBLEM,
                                                      NULL,
                                                      NULL,
                                                      NULL,
                                                      NULL,
                                                      NULL );

    // Create a control tree that assumes A and B form an inner panel product.
    fla_syr2k_cntl_ip    = FLA_Cntl_syr2k_obj_create( FLA_FLAT,
                                                      FLA_BLOCKED_VARIANT9,
                                                      fla_syr2k_var9_bsize,
                                                      fla_scalr_cntl_blas,
                                                      fla_syr2k_cntl_blas,
                                                      NULL,
                                                      NULL );

    // Create a control tree that assumes A and B form an outer panel product.
    fla_syr2k_cntl_op    = FLA_Cntl_syr2k_obj_create( FLA_FLAT,
                                                      FLA_BLOCKED_VARIANT3,
                                                      fla_syr2k_var3_bsize,
                                                      fla_scalr_cntl_blas,
                                                      fla_syr2k_cntl_blas,
                                                      fla_gemm_cntl_blas,
                                                      fla_gemm_cntl_blas );

    // Create a control tree that assumes A and B are both large.
    fla_syr2k_cntl_mm    = FLA_Cntl_syr2k_obj_create( FLA_FLAT,
                                                      FLA_BLOCKED_VARIANT9,
                                                      fla_syr2k_var9_bsize,
                                                      fla_scalr_cntl_blas,
                                                      fla_syr2k_cntl_op,
                                                      NULL,
                                                      NULL );
}
void FLA_Syrk_cntl_finalize ( void  )
void FLA_Syrk_cntl_init ( void  )

References FLA_Cntl_syrk_obj_create(), and FLA_Query_blocksizes().

Referenced by FLA_Cntl_init_flamec().

{
    // Set blocksizes with default values for conventional storage.
    fla_syrk_var2_bsize = FLA_Query_blocksizes( FLA_DIMENSION_MIN );
    fla_syrk_var5_bsize = FLA_Query_blocksizes( FLA_DIMENSION_MIN );

    // Create a control tree that assumes A is a b x b block.
    fla_syrk_cntl_blas  = FLA_Cntl_syrk_obj_create( FLA_FLAT,
                                                    FLA_SUBPROBLEM,
                                                    NULL,
                                                    NULL,
                                                    NULL,
                                                    NULL );

    // Create a control tree that assumes A * A' forms an inner panel product.
    fla_syrk_cntl_ip    = FLA_Cntl_syrk_obj_create( FLA_FLAT,
                                                    FLA_BLOCKED_VARIANT5,
                                                    fla_syrk_var5_bsize,
                                                    fla_scalr_cntl_blas,
                                                    fla_syrk_cntl_blas,
                                                    NULL );

    // Create a control tree that assumes A * A' forms an outer panel product.
    fla_syrk_cntl_op    = FLA_Cntl_syrk_obj_create( FLA_FLAT,
                                                    FLA_BLOCKED_VARIANT2,
                                                    fla_syrk_var2_bsize,
                                                    fla_scalr_cntl_blas,
                                                    fla_syrk_cntl_blas,
                                                    fla_gemm_cntl_blas );

    // Create a control tree that assumes A is large.
    fla_syrk_cntl_mm    = FLA_Cntl_syrk_obj_create( FLA_FLAT,
                                                    FLA_BLOCKED_VARIANT5,
                                                    fla_syrk_var5_bsize,
                                                    fla_scalr_cntl_blas,
                                                    fla_syrk_cntl_op,
                                                    NULL );
}
void FLA_Transpose_cntl_finalize ( void  )
void FLA_Transpose_cntl_init ( void  )

References FLA_Cntl_swap_obj_create(), FLA_Cntl_tpose_obj_create(), and FLA_Query_blocksizes().

Referenced by FLA_Cntl_init_flamec().

{
    // Set blocksizes based on libgoto query.
    fla_tpose_bsize      = FLA_Query_blocksizes( FLA_DIMENSION_MIN );
    fla_tpose_swap_bsize = FLA_Query_blocksizes( FLA_DIMENSION_MIN );

    // Create a control tree that performs unblocked variant 2 transposition.
    fla_tpose_cntl_unb   = FLA_Cntl_tpose_obj_create( FLA_FLAT, 
                                                      FLA_UNBLOCKED_VARIANT2,
                                                      NULL,
                                                      NULL,
                                                      NULL );

    // Create a control tree that invokes an external implementation of swap.
    fla_swap_cntl_blas   = FLA_Cntl_swap_obj_create( FLA_FLAT,
                                                     FLA_SUBPROBLEM,
                                                     NULL,
                                                     NULL );

    // Create a control tree that invokes unblocked variant 2 of swap.
    fla_swap_cntl_panel  = FLA_Cntl_swap_obj_create( FLA_FLAT,
                                                     FLA_BLOCKED_VARIANT2, 
                                                     fla_tpose_swap_bsize,
                                                     fla_swap_cntl_blas );

    // Create a control tree that assumes a large matrix argument.
    fla_tpose_cntl       = FLA_Cntl_tpose_obj_create( FLA_FLAT,
                                                      FLA_BLOCKED_VARIANT2, 
                                                      fla_tpose_bsize,
                                                      fla_tpose_cntl_unb,
                                                      fla_swap_cntl_panel );
}
void FLA_Tridiag_UT_cntl_init ( void  )

References FLA_Blocksize_scale(), FLA_Cntl_tridiagut_obj_create(), and FLA_Query_blocksizes().

Referenced by FLA_Cntl_init_flamec().

{
    // Set blocksizes with default values for conventional storage.
    fla_tridiagut_bsize_leaf = FLA_Query_blocksizes( FLA_DIMENSION_MIN );
    FLA_Blocksize_scale( fla_tridiagut_bsize_leaf, FLA_TRIDIAG_INNER_TO_OUTER_B_RATIO );

    // Create a control tree that uses fused subproblems.
    fla_tridiagut_cntl_fused = FLA_Cntl_tridiagut_obj_create( FLA_FLAT, 
                                                              FLA_BLK_FUS_VARIANT3,
                                                              fla_tridiagut_bsize_leaf );

    // Create a control tree that does not used any fusing.
    fla_tridiagut_cntl_nofus = FLA_Cntl_tridiagut_obj_create( FLA_FLAT, 
                                                              FLA_BLOCKED_VARIANT3,
                                                              fla_tridiagut_bsize_leaf );

    // Create a control tree that does not used any re-arrangement in house.
    fla_tridiagut_cntl_plain = FLA_Cntl_tridiagut_obj_create( FLA_FLAT, 
                                                              FLA_BLOCKED_VARIANT1,
                                                              fla_tridiagut_bsize_leaf );
}
void FLA_Trinv_cntl_finalize ( void  )
void FLA_Trinv_cntl_init ( void  )

References FLA_Cntl_trinv_obj_create(), and FLA_Query_blocksizes().

Referenced by FLA_Cntl_init_flamec().

{
    // Set blocksize with default value for conventional storage.
    fla_trinv_var3_bsize  = FLA_Query_blocksizes( FLA_DIMENSION_MIN );
    //fla_trinv_var3_bsize  = FLA_Blocksize_create( 192, 192, 192, 192 );

    // Create a control tree to invoke LAPACK.
    fla_trinv_cntl_leaf   = FLA_Cntl_trinv_obj_create( FLA_FLAT,
#ifdef FLA_ENABLE_EXTERNAL_LAPACK_FOR_SUBPROBLEMS
                                                       FLA_BLOCKED_EXTERN, 
#else
                                                       FLA_UNB_OPT_VARIANT3,
#endif
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL,
                                                       NULL );

    // Create a control tree to invoke variant 3.
    fla_trinv_cntl        = FLA_Cntl_trinv_obj_create( FLA_FLAT,
                                                       FLA_BLOCKED_VARIANT3, 
                                                       fla_trinv_var3_bsize,
                                                       fla_trinv_cntl_leaf,
                                                       fla_trmm_cntl_blas,
                                                       fla_trsm_cntl_blas,
                                                       fla_trsm_cntl_blas,
                                                       fla_gemm_cntl_blas );
}
void FLA_Trmm_cntl_finalize ( void  )
void FLA_Trmm_cntl_init ( void  )

References FLA_Cntl_trmm_obj_create(), and FLA_Query_blocksizes().

Referenced by FLA_Cntl_init_flamec().

{
    // Set blocksizes with default values for conventional storage.
    fla_trmm_var1_bsize = FLA_Query_blocksizes( FLA_DIMENSION_MIN );
    fla_trmm_var3_bsize = FLA_Query_blocksizes( FLA_DIMENSION_MIN );

    // Create a control tree that assumes A and B are b x b blocks.
    fla_trmm_cntl_blas  = FLA_Cntl_trmm_obj_create( FLA_FLAT,
                                                    FLA_SUBPROBLEM,
                                                    NULL,
                                                    NULL,
                                                    NULL,
                                                    NULL );

    // Create a control tree that assumes A is a block and B is a panel.
    fla_trmm_cntl_bp    = FLA_Cntl_trmm_obj_create( FLA_FLAT,
                                                    FLA_BLOCKED_VARIANT3,
                                                    fla_trmm_var3_bsize,
                                                    fla_scal_cntl_blas,
                                                    fla_trmm_cntl_blas,
                                                    NULL );

    // Create a control tree that assumes A is large and B is a panel.
    fla_trmm_cntl_mp    = FLA_Cntl_trmm_obj_create( FLA_FLAT,
                                                    FLA_BLOCKED_VARIANT1,
                                                    fla_trmm_var1_bsize,
                                                    fla_scal_cntl_blas,
                                                    fla_trmm_cntl_blas,
                                                    fla_gemm_cntl_blas );

    // Create a control tree that assumes A and B are both large.
    fla_trmm_cntl_mm    = FLA_Cntl_trmm_obj_create( FLA_FLAT,
                                                    FLA_BLOCKED_VARIANT3,
                                                    fla_trmm_var3_bsize,
                                                    fla_scal_cntl_blas,
                                                    fla_trmm_cntl_mp,
                                                    NULL );
}
void FLA_Trsm_cntl_finalize ( void  )
void FLA_Trsm_cntl_init ( void  )

References FLA_Cntl_trsm_obj_create(), and FLA_Query_blocksizes().

Referenced by FLA_Cntl_init_flamec().

{
    // Set blocksizes with default values for conventional storage.
    fla_trsm_var2_bsize = FLA_Query_blocksizes( FLA_DIMENSION_MIN );
    fla_trsm_var3_bsize = FLA_Query_blocksizes( FLA_DIMENSION_MIN );

    // Create a control tree that assumes A and B are b x b blocks.
    fla_trsm_cntl_blas  = FLA_Cntl_trsm_obj_create( FLA_FLAT,
                                                    FLA_SUBPROBLEM,
                                                    NULL,
                                                    NULL,
                                                    NULL,
                                                    NULL );

    // Create a control tree that assumes A is a block and B is a panel.
    fla_trsm_cntl_bp    = FLA_Cntl_trsm_obj_create( FLA_FLAT,
                                                    FLA_BLOCKED_VARIANT3,
                                                    fla_trsm_var3_bsize,
                                                    fla_scal_cntl_blas,
                                                    fla_trsm_cntl_blas,
                                                    NULL );

    // Create a control tree that assumes A is large and B is a panel.
    fla_trsm_cntl_mp    = FLA_Cntl_trsm_obj_create( FLA_FLAT,
                                                    FLA_BLOCKED_VARIANT2,
                                                    fla_trsm_var2_bsize,
                                                    fla_scal_cntl_blas,
                                                    fla_trsm_cntl_blas,
                                                    fla_gemm_cntl_blas );

    // Create a control tree that assumes A and B are both large.
    fla_trsm_cntl_mm    = FLA_Cntl_trsm_obj_create( FLA_FLAT,
                                                    FLA_BLOCKED_VARIANT3,
                                                    fla_trsm_var3_bsize,
                                                    fla_scal_cntl_blas,
                                                    fla_trsm_cntl_mp,
                                                    NULL );
}
void FLA_Trsv_cntl_finalize ( void  )
void FLA_Trsv_cntl_init ( void  )

References FLA_Cntl_trsv_obj_create().

Referenced by FLA_Cntl_init_flamec().

{
    // Create a control tree that assumes A is small.
    fla_trsv_cntl_blas  = FLA_Cntl_trsv_obj_create( FLA_FLAT,
                                                    FLA_SUBPROBLEM,
                                                    NULL,
                                                    NULL,
                                                    NULL );
}
void FLA_Ttmm_cntl_finalize ( void  )
void FLA_Ttmm_cntl_init ( void  )

References FLA_Cntl_ttmm_obj_create(), and FLA_Query_blocksizes().

Referenced by FLA_Cntl_init_flamec().

{
    // Set blocksize with default value for conventional storage.
    fla_ttmm_var1_bsize  = FLA_Query_blocksizes( FLA_DIMENSION_MIN );

    // Create a control tree to invoke LAPACK.
    fla_ttmm_cntl_leaf   = FLA_Cntl_ttmm_obj_create( FLA_FLAT,
#ifdef FLA_ENABLE_EXTERNAL_LAPACK_FOR_SUBPROBLEMS
                                                     FLA_BLOCKED_EXTERN, 
#else
                                                     FLA_UNB_OPT_VARIANT2,
#endif
                                                     NULL,
                                                     NULL,
                                                     NULL,
                                                     NULL,
                                                     NULL );

    // Create a control tree to invoke variant 1.
    fla_ttmm_cntl        = FLA_Cntl_ttmm_obj_create( FLA_FLAT,
                                                     FLA_BLOCKED_VARIANT1, 
                                                     fla_ttmm_var1_bsize,
                                                     fla_ttmm_cntl_leaf,
                                                     fla_herk_cntl_blas,
                                                     fla_trmm_cntl_blas,
                                                     fla_gemm_cntl_blas );
}
void FLA_UDdate_UT_cntl_finalize ( void  )
void FLA_UDdate_UT_cntl_init ( void  )

References FLA_Blocksize_scale(), FLA_Cntl_uddateut_obj_create(), and FLA_Query_blocksizes().

Referenced by FLA_Cntl_init_flamec().

{
    // Set the blocksize to the default value for conventional storage,
    // but scaled down.
    fla_uddateut_var1_bsize = FLA_Query_blocksizes( FLA_DIMENSION_MIN );
    FLA_Blocksize_scale( fla_uddateut_var1_bsize, FLA_UDDATE_INNER_TO_OUTER_B_RATIO );

    // Create a control tree to invoke unblocked variant 1.
    fla_uddateut_cntl_unb = FLA_Cntl_uddateut_obj_create( FLA_FLAT,
                                                          FLA_UNB_OPT_VARIANT1, 
                                                          NULL,
                                                          NULL,
                                                          NULL );

    // Create a control tree for small-to-medium sequential problems and
    // as the means to compute on FLASH blocks.
    fla_uddateut_cntl_leaf = FLA_Cntl_uddateut_obj_create( FLA_FLAT,
                                                           FLA_BLOCKED_VARIANT1, 
                                                           fla_uddateut_var1_bsize,
                                                           fla_uddateut_cntl_unb,
                                                           fla_apqudut_cntl_leaf );

}