libflame
12600
|
Go to the source code of this file.
void FLA_Apply_CAQ2_UT_cntl_finalize | ( | void | ) |
References FLA_Blocksize_free(), and FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flamec().
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_finalize | ( | void | ) |
References FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flamec().
{ FLA_Cntl_obj_free( fla_appiv_cntl_leaf ); }
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_finalize | ( | void | ) |
References FLA_Blocksize_free(), and FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flamec().
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_finalize | ( | void | ) |
References FLA_Blocksize_free(), and FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flamec().
{ FLA_Cntl_obj_free( fla_apqut_cntl_leaf ); /* FLA_Cntl_obj_free( fla_apqut_cntl ); */ FLA_Blocksize_free( fla_apqut_var1_bsize ); FLA_Blocksize_free( fla_apqut_var2_bsize ); }
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_finalize | ( | void | ) |
References FLA_Blocksize_free(), and FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flamec().
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 | ) |
References FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flamec().
{ FLA_Cntl_obj_free( fla_axpy_cntl_blas ); }
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 | ) |
References FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flamec().
{ FLA_Cntl_obj_free( fla_axpyt_cntl_blas ); }
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 | ) |
References FLA_Blocksize_free(), and FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flamec().
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 | ) |
References FLA_Blocksize_free(), and FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flamec().
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 | ) |
References FLA_Blocksize_free(), and FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flamec().
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().
{ FLA_Transpose_cntl_finalize(); // Level-1 BLAS FLA_Axpy_cntl_finalize(); FLA_Axpyt_cntl_finalize(); FLA_Copy_cntl_finalize(); FLA_Copyt_cntl_finalize(); FLA_Copyr_cntl_finalize(); FLA_Scal_cntl_finalize(); FLA_Scalr_cntl_finalize(); // Level-2 BLAS FLA_Gemv_cntl_finalize(); FLA_Trsv_cntl_finalize(); // Level-3 BLAS FLA_Gemm_cntl_finalize(); FLA_Hemm_cntl_finalize(); FLA_Herk_cntl_finalize(); FLA_Her2k_cntl_finalize(); FLA_Symm_cntl_finalize(); FLA_Syrk_cntl_finalize(); FLA_Syr2k_cntl_finalize(); FLA_Trmm_cntl_finalize(); FLA_Trsm_cntl_finalize(); // LAPACK-level FLA_Apply_pivots_cntl_finalize(); FLA_Chol_cntl_finalize(); FLA_LU_nopiv_cntl_finalize(); FLA_LU_piv_cntl_finalize(); FLA_Trinv_cntl_finalize(); FLA_Ttmm_cntl_finalize(); FLA_Sylv_cntl_finalize(); FLA_QR2_UT_cntl_finalize(); FLA_CAQR2_UT_cntl_finalize(); FLA_Apply_Q_UT_cntl_finalize(); FLA_Apply_Q2_UT_cntl_finalize(); FLA_Apply_CAQ2_UT_cntl_finalize(); FLA_Apply_QUD_UT_cntl_finalize(); FLA_Eig_gest_cntl_finalize(); // Compound LAPACK operations FLA_Lyap_cntl_finalize(); FLA_SPDinv_cntl_finalize(); FLA_QR_UT_cntl_finalize(); FLA_LQ_UT_cntl_finalize(); FLA_UDdate_UT_cntl_finalize(); FLA_Hess_UT_cntl_finalize(); FLA_Tridiag_UT_cntl_finalize(); FLA_Bidiag_UT_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().
{ FLA_Transpose_cntl_init(); // Level-1 BLAS FLA_Axpy_cntl_init(); FLA_Axpyt_cntl_init(); FLA_Copy_cntl_init(); FLA_Copyt_cntl_init(); FLA_Copyr_cntl_init(); FLA_Scal_cntl_init(); FLA_Scalr_cntl_init(); // Level-2 BLAS FLA_Gemv_cntl_init(); FLA_Trsv_cntl_init(); // Level-3 BLAS // Note gemm must be first since it is used by all other level-3 BLAS. FLA_Gemm_cntl_init(); FLA_Hemm_cntl_init(); FLA_Herk_cntl_init(); FLA_Her2k_cntl_init(); FLA_Symm_cntl_init(); FLA_Syrk_cntl_init(); FLA_Syr2k_cntl_init(); FLA_Trmm_cntl_init(); FLA_Trsm_cntl_init(); // LAPACK-level // These require level-3 BLAS operations to be initialized. FLA_Apply_pivots_cntl_init(); FLA_Chol_cntl_init(); FLA_LU_nopiv_cntl_init(); FLA_LU_piv_cntl_init(); FLA_Trinv_cntl_init(); FLA_Ttmm_cntl_init(); FLA_Sylv_cntl_init(); FLA_QR2_UT_cntl_init(); FLA_CAQR2_UT_cntl_init(); FLA_Apply_Q_UT_cntl_init(); FLA_Apply_Q2_UT_cntl_init(); FLA_Apply_CAQ2_UT_cntl_init(); FLA_Apply_QUD_UT_cntl_init(); FLA_Eig_gest_cntl_init(); // Compound LAPACK operations // These require previous LAPACK operations to already be initialized. FLA_Lyap_cntl_init(); FLA_SPDinv_cntl_init(); FLA_QR_UT_cntl_init(); FLA_LQ_UT_cntl_init(); FLA_UDdate_UT_cntl_init(); FLA_Hess_UT_cntl_init(); FLA_Tridiag_UT_cntl_init(); FLA_Bidiag_UT_cntl_init(); }
void FLA_Copy_cntl_finalize | ( | void | ) |
References FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flamec().
{ FLA_Cntl_obj_free( fla_copy_cntl_blas ); }
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 | ) |
References FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flamec().
{ FLA_Cntl_obj_free( fla_copyr_cntl_blas ); }
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 | ) |
References FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flamec().
{ FLA_Cntl_obj_free( fla_copyt_cntl_blas ); }
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 | ) |
References FLA_Blocksize_free(), and FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flamec().
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 | ) |
References FLA_Blocksize_free(), and FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flamec().
{ FLA_Cntl_obj_free( fla_gemm_cntl_blas ); FLA_Cntl_obj_free( fla_gemm_cntl_pb_bb ); FLA_Cntl_obj_free( fla_gemm_cntl_bp_bb ); FLA_Cntl_obj_free( fla_gemm_cntl_ip_bb ); FLA_Cntl_obj_free( fla_gemm_cntl_mp_ip ); FLA_Cntl_obj_free( fla_gemm_cntl_mp_ip_bb ); FLA_Cntl_obj_free( fla_gemm_cntl_op_bp ); FLA_Cntl_obj_free( fla_gemm_cntl_op_bp_bb ); FLA_Cntl_obj_free( fla_gemm_cntl_pm_ip ); FLA_Cntl_obj_free( fla_gemm_cntl_pm_ip_bb ); FLA_Cntl_obj_free( fla_gemm_cntl_op_pb ); FLA_Cntl_obj_free( fla_gemm_cntl_op_pb_bb ); FLA_Cntl_obj_free( fla_gemm_cntl_mp_pb ); FLA_Cntl_obj_free( fla_gemm_cntl_mp_pb_bb ); FLA_Cntl_obj_free( fla_gemm_cntl_pm_bp ); FLA_Cntl_obj_free( fla_gemm_cntl_pm_bp_bb ); FLA_Cntl_obj_free( fla_gemm_cntl_mm_pm ); FLA_Cntl_obj_free( fla_gemm_cntl_mm_pm_ip ); FLA_Cntl_obj_free( fla_gemm_cntl_mm_pm_ip_bb ); FLA_Cntl_obj_free( fla_gemm_cntl_mm_mp ); FLA_Cntl_obj_free( fla_gemm_cntl_mm_mp_ip ); FLA_Cntl_obj_free( fla_gemm_cntl_mm_mp_ip_bb ); FLA_Cntl_obj_free( fla_gemm_cntl_mm_op ); FLA_Cntl_obj_free( fla_gemm_cntl_mm_op_bp ); FLA_Cntl_obj_free( fla_gemm_cntl_mm_op_bp_bb ); FLA_Blocksize_free( fla_gemm_var1_bsize ); FLA_Blocksize_free( fla_gemm_var3_bsize ); FLA_Blocksize_free( fla_gemm_var5_bsize ); }
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 | ) |
References FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flamec().
{ FLA_Cntl_obj_free( fla_gemv_cntl_blas ); }
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 | ) |
References FLA_Blocksize_free(), and FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flamec().
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 | ) |
References FLA_Blocksize_free(), and FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flamec().
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 | ) |
References FLA_Blocksize_free(), and FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flamec().
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 | ) |
References FLA_Blocksize_free(), and FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flamec().
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 | ) |
References FLA_Blocksize_free(), and FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flamec().
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 | ) |
References FLA_Blocksize_free(), and FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flamec().
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 | ) |
References FLA_Blocksize_free(), and FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flamec().
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 | ) |
References FLA_Blocksize_free(), and FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flamec().
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 | ) |
References FLA_Blocksize_free(), and FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flamec().
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 | ) |
References FLA_Blocksize_free(), and FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flamec().
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 | ) |
References FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flamec().
{ FLA_Cntl_obj_free( fla_scal_cntl_blas ); }
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 | ) |
References FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flamec().
{ FLA_Cntl_obj_free( fla_scalr_cntl_blas ); }
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 | ) |
References FLA_Blocksize_free(), and FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flamec().
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 | ) |
References FLA_Blocksize_free(), and FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flamec().
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 | ) |
References FLA_Blocksize_free(), and FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flamec().
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 | ) |
References FLA_Blocksize_free(), and FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flamec().
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 | ) |
References FLA_Blocksize_free(), and FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flamec().
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 | ) |
References FLA_Blocksize_free(), and FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flamec().
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_finalize | ( | void | ) |
References FLA_Blocksize_free(), and FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flamec().
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 | ) |
References FLA_Blocksize_free(), and FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flamec().
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 | ) |
References FLA_Blocksize_free(), and FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flamec().
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 | ) |
References FLA_Blocksize_free(), and FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flamec().
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 | ) |
References FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flamec().
{ FLA_Cntl_obj_free( fla_trsv_cntl_blas ); }
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 | ) |
References FLA_Blocksize_free(), and FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flamec().
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 | ) |
References FLA_Blocksize_free(), and FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flamec().
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 ); }