void FLASH_Gemm_cntl_finalize | ( | void | ) |
References FLA_Blocksize_free(), and FLA_Cntl_obj_free().
Referenced by FLA_Cntl_finalize_flash().
00117 { 00118 FLA_Cntl_obj_free( flash_gemm_cntl_blas ); 00119 00120 FLA_Cntl_obj_free( flash_gemm_cntl_pb_bb ); 00121 FLA_Cntl_obj_free( flash_gemm_cntl_bp_bb ); 00122 FLA_Cntl_obj_free( flash_gemm_cntl_ip_bb ); 00123 00124 FLA_Cntl_obj_free( flash_gemm_cntl_mp_ip ); 00125 FLA_Cntl_obj_free( flash_gemm_cntl_op_bp ); 00126 FLA_Cntl_obj_free( flash_gemm_cntl_pm_ip ); 00127 FLA_Cntl_obj_free( flash_gemm_cntl_op_pb ); 00128 FLA_Cntl_obj_free( flash_gemm_cntl_mp_pb ); 00129 FLA_Cntl_obj_free( flash_gemm_cntl_pm_bp ); 00130 00131 FLA_Cntl_obj_free( flash_gemm_cntl_mm_pm ); 00132 FLA_Cntl_obj_free( flash_gemm_cntl_mm_mp ); 00133 FLA_Cntl_obj_free( flash_gemm_cntl_mm_op ); 00134 00135 FLA_Blocksize_free( flash_gemm_bsize ); 00136 }
void FLASH_Gemm_cntl_init | ( | void | ) |
References FLA_Blocksize_create(), and FLA_Cntl_gemm_obj_create().
Referenced by FLA_Cntl_init_flash().
00051 { 00052 // Set gemm blocksize for hierarchical storage. 00053 flash_gemm_bsize = FLA_Blocksize_create( 1, 1, 1, 1 ); 00054 00055 // Create a control tree node that executes a gemm subproblem. 00056 flash_gemm_cntl_blas = FLA_Cntl_gemm_obj_create( FLA_HIER, 00057 FLA_SUBPROBLEM, 00058 NULL, 00059 NULL ); 00060 00061 // Create control trees for situations where one dimension is large. 00062 flash_gemm_cntl_pb_bb = FLA_Cntl_gemm_obj_create( FLA_HIER, 00063 FLA_BLOCKED_VARIANT1, 00064 flash_gemm_bsize, 00065 flash_gemm_cntl_blas ); 00066 flash_gemm_cntl_bp_bb = FLA_Cntl_gemm_obj_create( FLA_HIER, 00067 FLA_BLOCKED_VARIANT3, 00068 flash_gemm_bsize, 00069 flash_gemm_cntl_blas ); 00070 flash_gemm_cntl_ip_bb = FLA_Cntl_gemm_obj_create( FLA_HIER, 00071 FLA_BLOCKED_VARIANT5, 00072 flash_gemm_bsize, 00073 flash_gemm_cntl_blas ); 00074 00075 // Create control trees for situations where two dimensions are large. 00076 flash_gemm_cntl_mp_ip = FLA_Cntl_gemm_obj_create( FLA_HIER, 00077 FLA_BLOCKED_VARIANT1, 00078 flash_gemm_bsize, 00079 flash_gemm_cntl_ip_bb ); 00080 flash_gemm_cntl_op_bp = FLA_Cntl_gemm_obj_create( FLA_HIER, 00081 FLA_BLOCKED_VARIANT1, 00082 flash_gemm_bsize, 00083 flash_gemm_cntl_bp_bb ); 00084 flash_gemm_cntl_pm_ip = FLA_Cntl_gemm_obj_create( FLA_HIER, 00085 FLA_BLOCKED_VARIANT3, 00086 flash_gemm_bsize, 00087 flash_gemm_cntl_ip_bb ); 00088 flash_gemm_cntl_op_pb = FLA_Cntl_gemm_obj_create( FLA_HIER, 00089 FLA_BLOCKED_VARIANT3, 00090 flash_gemm_bsize, 00091 flash_gemm_cntl_pb_bb ); 00092 flash_gemm_cntl_mp_pb = FLA_Cntl_gemm_obj_create( FLA_HIER, 00093 FLA_BLOCKED_VARIANT5, 00094 flash_gemm_bsize, 00095 flash_gemm_cntl_pb_bb ); 00096 flash_gemm_cntl_pm_bp = FLA_Cntl_gemm_obj_create( FLA_HIER, 00097 FLA_BLOCKED_VARIANT5, 00098 flash_gemm_bsize, 00099 flash_gemm_cntl_bp_bb ); 00100 00101 // Create control trees for situations where all dimensions are large. 00102 flash_gemm_cntl_mm_pm = FLA_Cntl_gemm_obj_create( FLA_HIER, 00103 FLA_BLOCKED_VARIANT1, 00104 flash_gemm_bsize, 00105 flash_gemm_cntl_pm_ip ); 00106 flash_gemm_cntl_mm_mp = FLA_Cntl_gemm_obj_create( FLA_HIER, 00107 FLA_BLOCKED_VARIANT3, 00108 flash_gemm_bsize, 00109 flash_gemm_cntl_mp_ip ); 00110 flash_gemm_cntl_mm_op = FLA_Cntl_gemm_obj_create( FLA_HIER, 00111 FLA_BLOCKED_VARIANT5, 00112 flash_gemm_bsize, 00113 flash_gemm_cntl_op_bp ); 00114 }