void FLASH_LU_piv_cntl_init() { // Set blocksize for hierarchical storage. flash_lu_piv_bsize = FLA_Blocksize_create( 1, 1, 1, 1 ); // Create a control tree that assumes A is a b x b block. flash_lu_piv_cntl_leaf = FLA_Cntl_lu_obj_create( FLA_HIER, FLA_SUBPROBLEM, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ); // Create a control tree that assumes A is large. flash_lu_piv_cntl = FLA_Cntl_lu_obj_create( FLA_HIER, FLA_BLOCKED_VARIANT5, flash_lu_piv_bsize, flash_lu_piv_cntl_leaf, flash_gemm_cntl_op_bp, NULL, NULL, flash_trsm_cntl_bp, flash_trsm_cntl_bp, flash_appiv_cntl_bp, NULL ); }
void libfla_test_lu_piv_cntl_create( unsigned int var, dim_t b_alg_flat ) { int var_unb = FLA_UNB_VAR_OFFSET + var; int var_opt = FLA_OPT_VAR_OFFSET + var; int var_blk = FLA_BLK_VAR_OFFSET + var; lu_piv_cntl_bsize = FLA_Blocksize_create( b_alg_flat, b_alg_flat, b_alg_flat, b_alg_flat ); lu_piv_cntl_unb = FLA_Cntl_lu_obj_create( FLA_FLAT, var_unb, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ); lu_piv_cntl_opt = FLA_Cntl_lu_obj_create( FLA_FLAT, var_opt, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ); lu_piv_cntl_blk = FLA_Cntl_lu_obj_create( FLA_FLAT, var_blk, lu_piv_cntl_bsize, lu_piv_cntl_opt, 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_LU_piv_cntl_init() { // 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 ); }