libflame  revision_anchor
FLA_Cntl_blas3.h
Go to the documentation of this file.
00001 /*
00002 
00003     Copyright (C) 2014, The University of Texas at Austin
00004 
00005     This file is part of libflame and is available under the 3-Clause
00006     BSD license, which can be found in the LICENSE file at the top-level
00007     directory, or at http://opensource.org/licenses/BSD-3-Clause
00008 
00009 */
00010 
00011 
00012 //
00013 // Level-3 BLAS
00014 //
00015 
00016 struct fla_gemm_s
00017 {
00018     FLA_Matrix_type    matrix_type;
00019     int                variant;
00020     fla_blocksize_t*   blocksize;
00021     struct fla_scal_s* sub_scal;
00022     struct fla_gemm_s* sub_gemm;
00023 };
00024 typedef struct fla_gemm_s fla_gemm_t;
00025 
00026 
00027 struct fla_hemm_s
00028 {
00029     FLA_Matrix_type    matrix_type;
00030     int                variant;
00031     fla_blocksize_t*   blocksize;
00032     struct fla_scal_s* sub_scal;
00033     struct fla_hemm_s* sub_hemm;
00034     struct fla_gemm_s* sub_gemm1;
00035     struct fla_gemm_s* sub_gemm2;
00036 };
00037 typedef struct fla_hemm_s fla_hemm_t;
00038 
00039 
00040 struct fla_herk_s
00041 {
00042     FLA_Matrix_type     matrix_type;
00043     int                 variant;
00044     fla_blocksize_t*    blocksize;
00045     struct fla_scalr_s* sub_scalr;
00046     struct fla_herk_s*  sub_herk;
00047     struct fla_gemm_s*  sub_gemm;
00048 };
00049 typedef struct fla_herk_s fla_herk_t;
00050 
00051 
00052 struct fla_her2k_s
00053 {
00054     FLA_Matrix_type     matrix_type;
00055     int                 variant;
00056     fla_blocksize_t*    blocksize;
00057     struct fla_scalr_s* sub_scalr;
00058     struct fla_her2k_s* sub_her2k;
00059     struct fla_gemm_s*  sub_gemm1;
00060     struct fla_gemm_s*  sub_gemm2;
00061 };
00062 typedef struct fla_her2k_s fla_her2k_t;
00063 
00064 
00065 struct fla_symm_s
00066 {
00067     FLA_Matrix_type    matrix_type;
00068     int                variant;
00069     fla_blocksize_t*   blocksize;
00070     struct fla_scal_s* sub_scal;
00071     struct fla_symm_s* sub_symm;
00072     struct fla_gemm_s* sub_gemm1;
00073     struct fla_gemm_s* sub_gemm2;
00074 };
00075 typedef struct fla_symm_s fla_symm_t;
00076 
00077 
00078 struct fla_syrk_s
00079 {
00080     FLA_Matrix_type     matrix_type;
00081     int                 variant;
00082     fla_blocksize_t*    blocksize;
00083     struct fla_scalr_s* sub_scalr;
00084     struct fla_syrk_s*  sub_syrk;
00085     struct fla_gemm_s*  sub_gemm;
00086 };
00087 typedef struct fla_syrk_s fla_syrk_t;
00088 
00089 
00090 struct fla_syr2k_s
00091 {
00092     FLA_Matrix_type     matrix_type;
00093     int                 variant;
00094     fla_blocksize_t*    blocksize;
00095     struct fla_scalr_s* sub_scalr;
00096     struct fla_syr2k_s* sub_syr2k;
00097     struct fla_gemm_s*  sub_gemm1;
00098     struct fla_gemm_s*  sub_gemm2;
00099 };
00100 typedef struct fla_syr2k_s fla_syr2k_t;
00101 
00102 
00103 struct fla_trmm_s
00104 {
00105     FLA_Matrix_type    matrix_type;
00106     int                variant;
00107     fla_blocksize_t*   blocksize;
00108     struct fla_scal_s* sub_scal;
00109     struct fla_trmm_s* sub_trmm;
00110     struct fla_gemm_s* sub_gemm;
00111 };
00112 typedef struct fla_trmm_s fla_trmm_t;
00113 
00114 
00115 struct fla_trsm_s
00116 {
00117     FLA_Matrix_type    matrix_type;
00118     int                variant;
00119     fla_blocksize_t*   blocksize;
00120     struct fla_scal_s* sub_scal;
00121     struct fla_trsm_s* sub_trsm;
00122     struct fla_gemm_s* sub_gemm;
00123 };
00124 typedef struct fla_trsm_s fla_trsm_t;
00125 
00126 
00127 #define FLA_Cntl_sub_gemm( cntl )     cntl->sub_gemm
00128 #define FLA_Cntl_sub_gemm1( cntl )    cntl->sub_gemm1
00129 #define FLA_Cntl_sub_gemm2( cntl )    cntl->sub_gemm2
00130 #define FLA_Cntl_sub_gemm3( cntl )    cntl->sub_gemm3
00131 #define FLA_Cntl_sub_gemm4( cntl )    cntl->sub_gemm4
00132 #define FLA_Cntl_sub_gemm5( cntl )    cntl->sub_gemm5
00133 #define FLA_Cntl_sub_gemm6( cntl )    cntl->sub_gemm6
00134 #define FLA_Cntl_sub_gemm7( cntl )    cntl->sub_gemm7
00135 #define FLA_Cntl_sub_gemm8( cntl )    cntl->sub_gemm8
00136 #define FLA_Cntl_sub_hemm( cntl )     cntl->sub_hemm
00137 #define FLA_Cntl_sub_hemm1( cntl )    cntl->sub_hemm1
00138 #define FLA_Cntl_sub_hemm2( cntl )    cntl->sub_hemm2
00139 #define FLA_Cntl_sub_herk( cntl )     cntl->sub_herk
00140 #define FLA_Cntl_sub_herk1( cntl )    cntl->sub_herk1
00141 #define FLA_Cntl_sub_herk2( cntl )    cntl->sub_herk2
00142 #define FLA_Cntl_sub_her2k( cntl )    cntl->sub_her2k
00143 #define FLA_Cntl_sub_symm( cntl )     cntl->sub_symm
00144 #define FLA_Cntl_sub_syrk( cntl )     cntl->sub_syrk
00145 #define FLA_Cntl_sub_syr2k( cntl )    cntl->sub_syr2k
00146 #define FLA_Cntl_sub_trmm( cntl )     cntl->sub_trmm
00147 #define FLA_Cntl_sub_trmm1( cntl )    cntl->sub_trmm1
00148 #define FLA_Cntl_sub_trmm2( cntl )    cntl->sub_trmm2
00149 #define FLA_Cntl_sub_trsm( cntl )     cntl->sub_trsm
00150 #define FLA_Cntl_sub_trsm1( cntl )    cntl->sub_trsm1
00151 #define FLA_Cntl_sub_trsm2( cntl )    cntl->sub_trsm2
00152 #define FLA_Cntl_sub_trsm3( cntl )    cntl->sub_trsm3
00153 #define FLA_Cntl_sub_trsm4( cntl )    cntl->sub_trsm4
00154 
00155 
00156 fla_gemm_t* FLA_Cntl_gemm_obj_create( FLA_Matrix_type  matrix_type,
00157                                       int              variant,
00158                                       fla_blocksize_t* blocksize,
00159                                       fla_scal_t*      sub_scal,
00160                                       fla_gemm_t*      sub_gemm );
00161 fla_hemm_t* FLA_Cntl_hemm_obj_create( FLA_Matrix_type  matrix_type,
00162                                       int              variant,
00163                                       fla_blocksize_t* blocksize,
00164                                       fla_scal_t*      sub_scal,
00165                                       fla_hemm_t*      sub_hemm,
00166                                       fla_gemm_t*      sub_gemm1,
00167                                       fla_gemm_t*      sub_gemm2 );
00168 fla_herk_t* FLA_Cntl_herk_obj_create( FLA_Matrix_type  matrix_type,
00169                                       int              variant,
00170                                       fla_blocksize_t* blocksize,
00171                                       fla_scalr_t*     sub_scalr,
00172                                       fla_herk_t*      sub_herk,
00173                                       fla_gemm_t*      sub_gemm );
00174 fla_her2k_t* FLA_Cntl_her2k_obj_create( FLA_Matrix_type  matrix_type,
00175                                         int              variant,
00176                                         fla_blocksize_t* blocksize,
00177                                         fla_scalr_t*     sub_scalr,
00178                                         fla_her2k_t*     sub_her2k,
00179                                         fla_gemm_t*      sub_gemm1,
00180                                         fla_gemm_t*      sub_gemm2 );
00181 fla_symm_t* FLA_Cntl_symm_obj_create( FLA_Matrix_type  matrix_type,
00182                                       int              variant,
00183                                       fla_blocksize_t* blocksize,
00184                                       fla_scal_t*      sub_scal,
00185                                       fla_symm_t*      sub_symm,
00186                                       fla_gemm_t*      sub_gemm1,
00187                                       fla_gemm_t*      sub_gemm2 );
00188 fla_syrk_t* FLA_Cntl_syrk_obj_create( FLA_Matrix_type  matrix_type,
00189                                       int              variant,
00190                                       fla_blocksize_t* blocksize,
00191                                       fla_scalr_t*     sub_scalr,
00192                                       fla_syrk_t*      sub_syrk,
00193                                       fla_gemm_t*      sub_gemm );
00194 fla_syr2k_t* FLA_Cntl_syr2k_obj_create( FLA_Matrix_type  matrix_type,
00195                                         int              variant,
00196                                         fla_blocksize_t* blocksize,
00197                                         fla_scalr_t*     sub_scalr,
00198                                         fla_syr2k_t*     sub_syr2k,
00199                                         fla_gemm_t*      sub_gemm1,
00200                                         fla_gemm_t*      sub_gemm2 );
00201 fla_trmm_t* FLA_Cntl_trmm_obj_create( FLA_Matrix_type  matrix_type,
00202                                       int              variant,
00203                                       fla_blocksize_t* blocksize,
00204                                       fla_scal_t*      sub_scal,
00205                                       fla_trmm_t*      sub_trmm,
00206                                       fla_gemm_t*      sub_gemm );
00207 fla_trsm_t* FLA_Cntl_trsm_obj_create( FLA_Matrix_type  matrix_type,
00208                                       int              variant,
00209                                       fla_blocksize_t* blocksize,
00210                                       fla_scal_t*      sub_scal,
00211                                       fla_trsm_t*      sub_trsm,
00212                                       fla_gemm_t*      sub_gemm );
00213