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