libflame
12600
|
00001 /* 00002 libflame 00003 An object-based infrastructure for developing high-performance 00004 dense linear algebra libraries. 00005 00006 Copyright (C) 2011, The University of Texas 00007 00008 libflame is free software; you can redistribute it and/or modify 00009 it under the terms of the GNU Lesser General Public License as 00010 published by the Free Software Foundation; either version 2.1 of 00011 the License, or (at your option) any later version. 00012 00013 libflame is distributed in the hope that it will be useful, but 00014 WITHOUT ANY WARRANTY; without even the implied warranty of 00015 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00016 Lesser General Public License for more details. 00017 00018 You should have received a copy of the GNU Lesser General Public 00019 License along with libflame; if you did not receive a copy, see 00020 http://www.gnu.org/licenses/. 00021 00022 For more information, please contact us at flame@cs.utexas.edu or 00023 send mail to: 00024 00025 Field G. Van Zee and/or 00026 Robert A. van de Geijn 00027 The University of Texas at Austin 00028 Department of Computer Sciences 00029 1 University Station C0500 00030 Austin TX 78712 00031 */ 00032 00033 00034 // 00035 // Level-3 BLAS 00036 // 00037 00038 struct fla_gemm_s 00039 { 00040 FLA_Matrix_type matrix_type; 00041 int variant; 00042 fla_blocksize_t* blocksize; 00043 struct fla_scal_s* sub_scal; 00044 struct fla_gemm_s* sub_gemm; 00045 }; 00046 typedef struct fla_gemm_s fla_gemm_t; 00047 00048 00049 struct fla_hemm_s 00050 { 00051 FLA_Matrix_type matrix_type; 00052 int variant; 00053 fla_blocksize_t* blocksize; 00054 struct fla_scal_s* sub_scal; 00055 struct fla_hemm_s* sub_hemm; 00056 struct fla_gemm_s* sub_gemm1; 00057 struct fla_gemm_s* sub_gemm2; 00058 }; 00059 typedef struct fla_hemm_s fla_hemm_t; 00060 00061 00062 struct fla_herk_s 00063 { 00064 FLA_Matrix_type matrix_type; 00065 int variant; 00066 fla_blocksize_t* blocksize; 00067 struct fla_scalr_s* sub_scalr; 00068 struct fla_herk_s* sub_herk; 00069 struct fla_gemm_s* sub_gemm; 00070 }; 00071 typedef struct fla_herk_s fla_herk_t; 00072 00073 00074 struct fla_her2k_s 00075 { 00076 FLA_Matrix_type matrix_type; 00077 int variant; 00078 fla_blocksize_t* blocksize; 00079 struct fla_scalr_s* sub_scalr; 00080 struct fla_her2k_s* sub_her2k; 00081 struct fla_gemm_s* sub_gemm1; 00082 struct fla_gemm_s* sub_gemm2; 00083 }; 00084 typedef struct fla_her2k_s fla_her2k_t; 00085 00086 00087 struct fla_symm_s 00088 { 00089 FLA_Matrix_type matrix_type; 00090 int variant; 00091 fla_blocksize_t* blocksize; 00092 struct fla_scal_s* sub_scal; 00093 struct fla_symm_s* sub_symm; 00094 struct fla_gemm_s* sub_gemm1; 00095 struct fla_gemm_s* sub_gemm2; 00096 }; 00097 typedef struct fla_symm_s fla_symm_t; 00098 00099 00100 struct fla_syrk_s 00101 { 00102 FLA_Matrix_type matrix_type; 00103 int variant; 00104 fla_blocksize_t* blocksize; 00105 struct fla_scalr_s* sub_scalr; 00106 struct fla_syrk_s* sub_syrk; 00107 struct fla_gemm_s* sub_gemm; 00108 }; 00109 typedef struct fla_syrk_s fla_syrk_t; 00110 00111 00112 struct fla_syr2k_s 00113 { 00114 FLA_Matrix_type matrix_type; 00115 int variant; 00116 fla_blocksize_t* blocksize; 00117 struct fla_scalr_s* sub_scalr; 00118 struct fla_syr2k_s* sub_syr2k; 00119 struct fla_gemm_s* sub_gemm1; 00120 struct fla_gemm_s* sub_gemm2; 00121 }; 00122 typedef struct fla_syr2k_s fla_syr2k_t; 00123 00124 00125 struct fla_trmm_s 00126 { 00127 FLA_Matrix_type matrix_type; 00128 int variant; 00129 fla_blocksize_t* blocksize; 00130 struct fla_scal_s* sub_scal; 00131 struct fla_trmm_s* sub_trmm; 00132 struct fla_gemm_s* sub_gemm; 00133 }; 00134 typedef struct fla_trmm_s fla_trmm_t; 00135 00136 00137 struct fla_trsm_s 00138 { 00139 FLA_Matrix_type matrix_type; 00140 int variant; 00141 fla_blocksize_t* blocksize; 00142 struct fla_scal_s* sub_scal; 00143 struct fla_trsm_s* sub_trsm; 00144 struct fla_gemm_s* sub_gemm; 00145 }; 00146 typedef struct fla_trsm_s fla_trsm_t; 00147 00148 00149 #define FLA_Cntl_sub_gemm( cntl ) cntl->sub_gemm 00150 #define FLA_Cntl_sub_gemm1( cntl ) cntl->sub_gemm1 00151 #define FLA_Cntl_sub_gemm2( cntl ) cntl->sub_gemm2 00152 #define FLA_Cntl_sub_gemm3( cntl ) cntl->sub_gemm3 00153 #define FLA_Cntl_sub_gemm4( cntl ) cntl->sub_gemm4 00154 #define FLA_Cntl_sub_gemm5( cntl ) cntl->sub_gemm5 00155 #define FLA_Cntl_sub_gemm6( cntl ) cntl->sub_gemm6 00156 #define FLA_Cntl_sub_gemm7( cntl ) cntl->sub_gemm7 00157 #define FLA_Cntl_sub_gemm8( cntl ) cntl->sub_gemm8 00158 #define FLA_Cntl_sub_hemm( cntl ) cntl->sub_hemm 00159 #define FLA_Cntl_sub_hemm1( cntl ) cntl->sub_hemm1 00160 #define FLA_Cntl_sub_hemm2( cntl ) cntl->sub_hemm2 00161 #define FLA_Cntl_sub_herk( cntl ) cntl->sub_herk 00162 #define FLA_Cntl_sub_herk1( cntl ) cntl->sub_herk1 00163 #define FLA_Cntl_sub_herk2( cntl ) cntl->sub_herk2 00164 #define FLA_Cntl_sub_her2k( cntl ) cntl->sub_her2k 00165 #define FLA_Cntl_sub_symm( cntl ) cntl->sub_symm 00166 #define FLA_Cntl_sub_syrk( cntl ) cntl->sub_syrk 00167 #define FLA_Cntl_sub_syr2k( cntl ) cntl->sub_syr2k 00168 #define FLA_Cntl_sub_trmm( cntl ) cntl->sub_trmm 00169 #define FLA_Cntl_sub_trmm1( cntl ) cntl->sub_trmm1 00170 #define FLA_Cntl_sub_trmm2( cntl ) cntl->sub_trmm2 00171 #define FLA_Cntl_sub_trsm( cntl ) cntl->sub_trsm 00172 #define FLA_Cntl_sub_trsm1( cntl ) cntl->sub_trsm1 00173 #define FLA_Cntl_sub_trsm2( cntl ) cntl->sub_trsm2 00174 #define FLA_Cntl_sub_trsm3( cntl ) cntl->sub_trsm3 00175 #define FLA_Cntl_sub_trsm4( cntl ) cntl->sub_trsm4 00176 00177 00178 fla_gemm_t* FLA_Cntl_gemm_obj_create( FLA_Matrix_type matrix_type, 00179 int variant, 00180 fla_blocksize_t* blocksize, 00181 fla_scal_t* sub_scal, 00182 fla_gemm_t* sub_gemm ); 00183 fla_hemm_t* FLA_Cntl_hemm_obj_create( FLA_Matrix_type matrix_type, 00184 int variant, 00185 fla_blocksize_t* blocksize, 00186 fla_scal_t* sub_scal, 00187 fla_hemm_t* sub_hemm, 00188 fla_gemm_t* sub_gemm1, 00189 fla_gemm_t* sub_gemm2 ); 00190 fla_herk_t* FLA_Cntl_herk_obj_create( FLA_Matrix_type matrix_type, 00191 int variant, 00192 fla_blocksize_t* blocksize, 00193 fla_scalr_t* sub_scalr, 00194 fla_herk_t* sub_herk, 00195 fla_gemm_t* sub_gemm ); 00196 fla_her2k_t* FLA_Cntl_her2k_obj_create( FLA_Matrix_type matrix_type, 00197 int variant, 00198 fla_blocksize_t* blocksize, 00199 fla_scalr_t* sub_scalr, 00200 fla_her2k_t* sub_her2k, 00201 fla_gemm_t* sub_gemm1, 00202 fla_gemm_t* sub_gemm2 ); 00203 fla_symm_t* FLA_Cntl_symm_obj_create( FLA_Matrix_type matrix_type, 00204 int variant, 00205 fla_blocksize_t* blocksize, 00206 fla_scal_t* sub_scal, 00207 fla_symm_t* sub_symm, 00208 fla_gemm_t* sub_gemm1, 00209 fla_gemm_t* sub_gemm2 ); 00210 fla_syrk_t* FLA_Cntl_syrk_obj_create( FLA_Matrix_type matrix_type, 00211 int variant, 00212 fla_blocksize_t* blocksize, 00213 fla_scalr_t* sub_scalr, 00214 fla_syrk_t* sub_syrk, 00215 fla_gemm_t* sub_gemm ); 00216 fla_syr2k_t* FLA_Cntl_syr2k_obj_create( FLA_Matrix_type matrix_type, 00217 int variant, 00218 fla_blocksize_t* blocksize, 00219 fla_scalr_t* sub_scalr, 00220 fla_syr2k_t* sub_syr2k, 00221 fla_gemm_t* sub_gemm1, 00222 fla_gemm_t* sub_gemm2 ); 00223 fla_trmm_t* FLA_Cntl_trmm_obj_create( FLA_Matrix_type matrix_type, 00224 int variant, 00225 fla_blocksize_t* blocksize, 00226 fla_scal_t* sub_scal, 00227 fla_trmm_t* sub_trmm, 00228 fla_gemm_t* sub_gemm ); 00229 fla_trsm_t* FLA_Cntl_trsm_obj_create( FLA_Matrix_type matrix_type, 00230 int variant, 00231 fla_blocksize_t* blocksize, 00232 fla_scal_t* sub_scal, 00233 fla_trsm_t* sub_trsm, 00234 fla_gemm_t* sub_gemm ); 00235