libflame  12600
FLA_Cntl_blas3.h
Go to the documentation of this file.
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