|
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 );
}
1.7.6.1