|
libflame
12600
|
| void FLASH_Gemm_cntl_finalize | ( | void | ) |
References FLA_Blocksize_free(), and FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flash().
{
FLA_Cntl_obj_free( flash_gemm_cntl_blas );
FLA_Cntl_obj_free( flash_gemm_cntl_pb_bb );
FLA_Cntl_obj_free( flash_gemm_cntl_bp_bb );
FLA_Cntl_obj_free( flash_gemm_cntl_ip_bb );
FLA_Cntl_obj_free( flash_gemm_cntl_mp_ip );
FLA_Cntl_obj_free( flash_gemm_cntl_op_bp );
FLA_Cntl_obj_free( flash_gemm_cntl_pm_ip );
FLA_Cntl_obj_free( flash_gemm_cntl_op_pb );
FLA_Cntl_obj_free( flash_gemm_cntl_mp_pb );
FLA_Cntl_obj_free( flash_gemm_cntl_pm_bp );
FLA_Cntl_obj_free( flash_gemm_cntl_mm_pm );
FLA_Cntl_obj_free( flash_gemm_cntl_mm_mp );
FLA_Cntl_obj_free( flash_gemm_cntl_mm_op );
FLA_Blocksize_free( flash_gemm_bsize );
}
| void FLASH_Gemm_cntl_init | ( | void | ) |
References FLA_Blocksize_create(), FLA_Cntl_gemm_obj_create(), flash_gemm_cntl_bp_bb, flash_gemm_cntl_ip_bb, flash_gemm_cntl_mm_op, flash_gemm_cntl_mp_pb, flash_gemm_cntl_op_pb, flash_gemm_cntl_pb_bb, and flash_gemm_cntl_pm_bp.
Referenced by FLA_Cntl_init_flash().
{
// Set gemm blocksize for hierarchical storage.
flash_gemm_bsize = FLA_Blocksize_create( 1, 1, 1, 1 );
// Create a control tree node that executes a gemm subproblem.
flash_gemm_cntl_blas = FLA_Cntl_gemm_obj_create( FLA_HIER,
FLA_SUBPROBLEM,
NULL,
NULL,
NULL );
// Create control trees for situations where one dimension is large.
flash_gemm_cntl_pb_bb = FLA_Cntl_gemm_obj_create( FLA_HIER,
FLA_BLOCKED_VARIANT1,
flash_gemm_bsize,
flash_scal_cntl,
flash_gemm_cntl_blas );
flash_gemm_cntl_bp_bb = FLA_Cntl_gemm_obj_create( FLA_HIER,
FLA_BLOCKED_VARIANT3,
flash_gemm_bsize,
flash_scal_cntl,
flash_gemm_cntl_blas );
flash_gemm_cntl_ip_bb = FLA_Cntl_gemm_obj_create( FLA_HIER,
FLA_BLOCKED_VARIANT5,
flash_gemm_bsize,
flash_scal_cntl,
flash_gemm_cntl_blas );
// Create control trees for situations where two dimensions are large.
flash_gemm_cntl_mp_ip = FLA_Cntl_gemm_obj_create( FLA_HIER,
FLA_BLOCKED_VARIANT1,
flash_gemm_bsize,
flash_scal_cntl,
flash_gemm_cntl_ip_bb );
flash_gemm_cntl_op_bp = FLA_Cntl_gemm_obj_create( FLA_HIER,
FLA_BLOCKED_VARIANT1,
flash_gemm_bsize,
flash_scal_cntl,
flash_gemm_cntl_bp_bb );
flash_gemm_cntl_pm_ip = FLA_Cntl_gemm_obj_create( FLA_HIER,
FLA_BLOCKED_VARIANT3,
flash_gemm_bsize,
flash_scal_cntl,
flash_gemm_cntl_ip_bb );
flash_gemm_cntl_op_pb = FLA_Cntl_gemm_obj_create( FLA_HIER,
FLA_BLOCKED_VARIANT3,
flash_gemm_bsize,
flash_scal_cntl,
flash_gemm_cntl_pb_bb );
flash_gemm_cntl_mp_pb = FLA_Cntl_gemm_obj_create( FLA_HIER,
FLA_BLOCKED_VARIANT5,
flash_gemm_bsize,
flash_scal_cntl,
flash_gemm_cntl_pb_bb );
flash_gemm_cntl_pm_bp = FLA_Cntl_gemm_obj_create( FLA_HIER,
FLA_BLOCKED_VARIANT5,
flash_gemm_bsize,
flash_scal_cntl,
flash_gemm_cntl_bp_bb );
// Create control trees for situations where all dimensions are large.
flash_gemm_cntl_mm_pm = FLA_Cntl_gemm_obj_create( FLA_HIER,
FLA_BLOCKED_VARIANT1,
flash_gemm_bsize,
flash_scal_cntl,
flash_gemm_cntl_pm_ip );
flash_gemm_cntl_mm_mp = FLA_Cntl_gemm_obj_create( FLA_HIER,
FLA_BLOCKED_VARIANT3,
flash_gemm_bsize,
flash_scal_cntl,
flash_gemm_cntl_mp_ip );
flash_gemm_cntl_mm_op = FLA_Cntl_gemm_obj_create( FLA_HIER,
FLA_BLOCKED_VARIANT5,
flash_gemm_bsize,
flash_scal_cntl,
flash_gemm_cntl_op_bp );
// Alias select control trees for convenience, when the caller doesn't
// care (as he usually doesn't when partitioning hierarchical matricies)
// which order the matrix is partitioned into blocks
flash_gemm_cntl_mm = flash_gemm_cntl_mm_op;
flash_gemm_cntl_mp = flash_gemm_cntl_mp_pb;
flash_gemm_cntl_pm = flash_gemm_cntl_pm_bp;
flash_gemm_cntl_op = flash_gemm_cntl_op_pb;
flash_gemm_cntl_pb = flash_gemm_cntl_pb_bb;
flash_gemm_cntl_bp = flash_gemm_cntl_bp_bb;
flash_gemm_cntl_ip = flash_gemm_cntl_ip_bb;
}
Referenced by FLA_Gemm_internal().
Referenced by FLASH_Gemm_cntl_init().
Referenced by FLASH_Gemm_cntl_init().
Referenced by FLASH_Gemm_cntl_init().
Referenced by FLASH_Gemm_cntl_init().
Referenced by FLASH_Gemm_cntl_init().
Referenced by FLASH_Gemm_cntl_init().
Referenced by FLASH_Gemm_cntl_init().
1.7.6.1