FLA_Cntl_lapack.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) 2009, 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 // LAPACK-level
00036 //
00037 
00038 struct fla_chol_s
00039 {
00040     FLA_Matrix_type    matrix_type;
00041     int                variant;
00042     fla_blocksize_t*   blocksize;
00043     struct fla_chol_s* sub_chol;
00044     struct fla_syrk_s* sub_syrk;
00045     struct fla_herk_s* sub_herk;
00046     struct fla_trsm_s* sub_trsm;
00047     struct fla_gemm_s* sub_gemm;
00048 };
00049 typedef struct fla_chol_s fla_chol_t;
00050 
00051 
00052 struct fla_ttmm_s
00053 {
00054     FLA_Matrix_type    matrix_type;
00055     int                variant;
00056     fla_blocksize_t*   blocksize;
00057     struct fla_ttmm_s* sub_ttmm;
00058     struct fla_syrk_s* sub_syrk;
00059     struct fla_herk_s* sub_herk;
00060     struct fla_trmm_s* sub_trmm;
00061     struct fla_gemm_s* sub_gemm;
00062 };
00063 typedef struct fla_ttmm_s fla_ttmm_t;
00064 
00065 
00066 struct fla_lu_s
00067 {
00068     FLA_Matrix_type    matrix_type;
00069     int                variant;
00070     fla_blocksize_t*   blocksize;
00071     struct fla_lu_s*   sub_lu;
00072     struct fla_trsm_s* sub_trsm1;
00073     struct fla_trsm_s* sub_trsm2;
00074     struct fla_gemm_s* sub_gemm1;
00075     struct fla_gemm_s* sub_gemm2;
00076     struct fla_gemm_s* sub_gemm3;
00077 };
00078 typedef struct fla_lu_s fla_lu_t;
00079 
00080 
00081 struct fla_qr_ut_s
00082 {
00083     FLA_Matrix_type     matrix_type;
00084     int                 variant;
00085     fla_blocksize_t*    blocksize;
00086     struct fla_qr_ut_s* sub_qrut;
00087     struct fla_trmm_s*  sub_trmm1;
00088     struct fla_trmm_s*  sub_trmm2;
00089     struct fla_gemm_s*  sub_gemm1;
00090     struct fla_gemm_s*  sub_gemm2;
00091     struct fla_trsm_s*  sub_trsm;
00092     struct fla_copy_s*  sub_copy;
00093     struct fla_axpy_s*  sub_axpy;
00094 };
00095 typedef struct fla_qr_ut_s fla_qrut_t;
00096 
00097 
00098 struct fla_qr_ut_ud_s
00099 {
00100     FLA_Matrix_type        matrix_type;
00101     int                    variant;
00102     fla_blocksize_t*       blocksize;
00103     struct fla_qr_ut_ud_s* sub_qrutud;
00104     struct fla_gemm_s*     sub_gemm1;
00105     struct fla_gemm_s*     sub_gemm2;
00106     struct fla_trsm_s*     sub_trsm;
00107     struct fla_copy_s*     sub_copy;
00108     struct fla_axpy_s*     sub_axpy;
00109 };
00110 typedef struct fla_qr_ut_ud_s fla_qrutud_t;
00111 
00112 
00113 struct fla_qr_ut_inc_s
00114 {
00115     FLA_Matrix_type        matrix_type;
00116     int                    variant;
00117     fla_blocksize_t*       blocksize;
00118     struct fla_qr_ut_s*    sub_qrut;
00119     struct fla_qr_ut_ud_s* sub_qrutud;
00120     struct fla_apqut_s*    sub_apqut;
00121     struct fla_apqutud_s*  sub_apqutud;
00122 };
00123 typedef struct fla_qr_ut_inc_s fla_qrutinc_t;
00124 
00125 
00126 struct fla_lq_ut_s
00127 {
00128     FLA_Matrix_type     matrix_type;
00129     int                 variant;
00130     fla_blocksize_t*    blocksize;
00131     struct fla_lq_ut_s* sub_lqut;
00132     struct fla_trmm_s*  sub_trmm1;
00133     struct fla_trmm_s*  sub_trmm2;
00134     struct fla_gemm_s*  sub_gemm1;
00135     struct fla_gemm_s*  sub_gemm2;
00136     struct fla_trsm_s*  sub_trsm;
00137     struct fla_copy_s*  sub_copy;
00138     struct fla_axpy_s*  sub_axpy;
00139 };
00140 typedef struct fla_lq_ut_s fla_lqut_t;
00141 
00142 
00143 struct fla_hess_s
00144 {
00145     FLA_Matrix_type    matrix_type;
00146     int                variant;
00147     fla_blocksize_t*   blocksize;
00148     struct fla_hess_s* sub_hess;
00149     struct fla_trmm_s* sub_trmm1;
00150     struct fla_trmm_s* sub_trmm2;
00151     struct fla_trmm_s* sub_trmm3;
00152     struct fla_trmm_s* sub_trmm4;
00153     struct fla_gemm_s* sub_gemm1;
00154     struct fla_gemm_s* sub_gemm2;
00155     struct fla_gemm_s* sub_gemm3;
00156 };
00157 typedef struct fla_hess_s fla_hess_t;
00158 
00159 
00160 struct fla_trinv_s
00161 {
00162     FLA_Matrix_type     matrix_type;
00163     int                 variant;
00164     fla_blocksize_t*    blocksize;
00165     struct fla_trinv_s* sub_trinv;
00166     struct fla_gemm_s*  sub_gemm;
00167     struct fla_trmm_s*  sub_trmm;
00168     struct fla_trsm_s*  sub_trsm1;
00169     struct fla_trsm_s*  sub_trsm2;
00170 };
00171 typedef struct fla_trinv_s fla_trinv_t;
00172 
00173 
00174 struct fla_sylv_s
00175 {
00176     FLA_Matrix_type     matrix_type;
00177     int                 variant;
00178     fla_blocksize_t*    blocksize;
00179     struct fla_sylv_s*  sub_sylv1;
00180     struct fla_sylv_s*  sub_sylv2;
00181     struct fla_sylv_s*  sub_sylv3;
00182     struct fla_gemm_s*  sub_gemm1;
00183     struct fla_gemm_s*  sub_gemm2;
00184     struct fla_gemm_s*  sub_gemm3;
00185     struct fla_gemm_s*  sub_gemm4;
00186     struct fla_gemm_s*  sub_gemm5;
00187     struct fla_gemm_s*  sub_gemm6;
00188     struct fla_gemm_s*  sub_gemm7;
00189     struct fla_gemm_s*  sub_gemm8;
00190 };
00191 typedef struct fla_sylv_s fla_sylv_t;
00192 
00193 
00194 struct fla_accum_s_s
00195 {
00196     FLA_Matrix_type    matrix_type;
00197     int                variant;
00198     fla_blocksize_t*   blocksize;
00199 };
00200 typedef struct fla_accum_s_s fla_accum_S_t;
00201 
00202 
00203 struct fla_spdinv_s
00204 {
00205     FLA_Matrix_type     matrix_type;
00206     int                 variant;
00207     fla_blocksize_t*    blocksize;
00208     struct fla_chol_s*  sub_chol;
00209     struct fla_trinv_s* sub_trinv;
00210     struct fla_ttmm_s*  sub_ttmm;
00211 };
00212 typedef struct fla_spdinv_s fla_spdinv_t;
00213 
00214 
00215 struct fla_apqut_s
00216 {
00217     FLA_Matrix_type      matrix_type;
00218     int                  variant;
00219     fla_blocksize_t*     blocksize;
00220     struct fla_apqut_s*  sub_apqut;
00221     struct fla_trmm_s*   sub_trmm1;
00222     struct fla_trmm_s*   sub_trmm2;
00223     struct fla_gemm_s*   sub_gemm1;
00224     struct fla_gemm_s*   sub_gemm2;
00225     struct fla_trsm_s*   sub_trsm;
00226     struct fla_copy_s*   sub_copy;
00227     struct fla_axpy_s*   sub_axpy;
00228 };
00229 typedef struct fla_apqut_s fla_apqut_t;
00230 
00231 
00232 struct fla_apqutud_s
00233 {
00234     FLA_Matrix_type       matrix_type;
00235     int                   variant;
00236     fla_blocksize_t*      blocksize;
00237     struct fla_apqutud_s* sub_apqutud;
00238     struct fla_gemm_s*    sub_gemm1;
00239     struct fla_gemm_s*    sub_gemm2;
00240     struct fla_trsm_s*    sub_trsm;
00241     struct fla_copy_s*    sub_copy;
00242     struct fla_axpy_s*    sub_axpy;
00243 };
00244 typedef struct fla_apqutud_s fla_apqutud_t;
00245 
00246 
00247 struct fla_apqutinc_s
00248 {
00249     FLA_Matrix_type        matrix_type;
00250     int                    variant;
00251     fla_blocksize_t*       blocksize;
00252     struct fla_apqut_s*    sub_apqut;
00253     struct fla_apqutud_s*  sub_apqutud;
00254 };
00255 typedef struct fla_apqutinc_s fla_apqutinc_t;
00256 
00257 
00258 
00259 #define FLA_Cntl_sub_chol( cntl )     cntl->sub_chol
00260 #define FLA_Cntl_sub_lu( cntl )       cntl->sub_lu
00261 #define FLA_Cntl_sub_qr( cntl )       cntl->sub_qr
00262 #define FLA_Cntl_sub_qrut( cntl )     cntl->sub_qrut
00263 #define FLA_Cntl_sub_qrutud( cntl )   cntl->sub_qrutud
00264 #define FLA_Cntl_sub_lq( cntl )       cntl->sub_lq
00265 #define FLA_Cntl_sub_lqut( cntl )     cntl->sub_lqut
00266 #define FLA_Cntl_sub_trinv( cntl )    cntl->sub_trinv
00267 #define FLA_Cntl_sub_hess( cntl )     cntl->sub_hess
00268 #define FLA_Cntl_sub_ttmm( cntl )     cntl->sub_ttmm
00269 #define FLA_Cntl_sub_sylv1( cntl )    cntl->sub_sylv1
00270 #define FLA_Cntl_sub_sylv2( cntl )    cntl->sub_sylv2
00271 #define FLA_Cntl_sub_sylv3( cntl )    cntl->sub_sylv3
00272 #define FLA_Cntl_sub_apqut( cntl )    cntl->sub_apqut
00273 #define FLA_Cntl_sub_apqutud( cntl )  cntl->sub_apqutud
00274 
00275 
00276 fla_chol_t* FLA_Cntl_chol_obj_create( FLA_Matrix_type  matrix_type,
00277                                       int              variant,
00278                                       fla_blocksize_t* blocksize,
00279                                       fla_chol_t*      sub_chol,
00280                                       fla_syrk_t*      sub_syrk,
00281                                       fla_herk_t*      sub_herk,
00282                                       fla_trsm_t*      sub_trsm,
00283                                       fla_gemm_t*      sub_gemm );
00284 fla_lu_t* FLA_Cntl_lu_obj_create( FLA_Matrix_type  matrix_type,
00285                                   int              variant,
00286                                   fla_blocksize_t* blocksize,
00287                                   fla_lu_t*        sub_lu,
00288                                   fla_gemm_t*      sub_gemm1,
00289                                   fla_gemm_t*      sub_gemm2,
00290                                   fla_gemm_t*      sub_gemm3,
00291                                   fla_trsm_t*      sub_trsm1,
00292                                   fla_trsm_t*      sub_trsm2 );
00293 fla_qrut_t* FLA_Cntl_qrut_obj_create( FLA_Matrix_type  matrix_type,
00294                                       int              variant,
00295                                       fla_blocksize_t* blocksize,
00296                                       fla_qrut_t*      sub_qrut,
00297                                       fla_trmm_t*      sub_trmm1,
00298                                       fla_trmm_t*      sub_trmm2,
00299                                       fla_gemm_t*      sub_gemm1,
00300                                       fla_gemm_t*      sub_gemm2,
00301                                       fla_trsm_t*      sub_trsm,
00302                                       fla_copy_t*      sub_copy,
00303                                       fla_axpy_t*      sub_axpy );
00304 fla_qrutud_t* FLA_Cntl_qrutud_obj_create( FLA_Matrix_type  matrix_type,
00305                                           int              variant,
00306                                           fla_blocksize_t* blocksize,
00307                                           fla_qrutud_t*    sub_qrutud,
00308                                           fla_gemm_t*      sub_gemm1,
00309                                           fla_gemm_t*      sub_gemm2,
00310                                           fla_trsm_t*      sub_trsm,
00311                                           fla_copy_t*      sub_copy,
00312                                           fla_axpy_t*      sub_axpy );
00313 fla_lqut_t* FLA_Cntl_lqut_obj_create( FLA_Matrix_type  matrix_type,
00314                                       int              variant,
00315                                       fla_blocksize_t* blocksize,
00316                                       fla_lqut_t*      sub_lqut,
00317                                       fla_trmm_t*      sub_trmm1,
00318                                       fla_trmm_t*      sub_trmm2,
00319                                       fla_gemm_t*      sub_gemm1,
00320                                       fla_gemm_t*      sub_gemm2,
00321                                       fla_trsm_t*      sub_trsm,
00322                                       fla_copy_t*      sub_copy,
00323                                       fla_axpy_t*      sub_axpy );
00324 fla_trinv_t* FLA_Cntl_trinv_obj_create( FLA_Matrix_type  matrix_type,
00325                                         int              variant,
00326                                         fla_blocksize_t* blocksize,
00327                                         fla_trinv_t*     sub_trinv,
00328                                         fla_trmm_t*      sub_trmm,
00329                                         fla_trsm_t*      sub_trsm1,
00330                                         fla_trsm_t*      sub_trsm2,
00331                                         fla_gemm_t*      sub_gemm );
00332 fla_hess_t* FLA_Cntl_hess_obj_create( FLA_Matrix_type  matrix_type,
00333                                       int              variant,
00334                                       fla_blocksize_t* blocksize,
00335                                       fla_hess_t*      sub_hess,
00336                                       fla_trmm_t*      sub_trmm1,
00337                                       fla_trmm_t*      sub_trmm2,
00338                                       fla_trmm_t*      sub_trmm3,
00339                                       fla_trmm_t*      sub_trmm4,
00340                                       fla_gemm_t*      sub_gemm1,
00341                                       fla_gemm_t*      sub_gemm2,
00342                                       fla_gemm_t*      sub_gemm3 );
00343 fla_ttmm_t* FLA_Cntl_ttmm_obj_create( FLA_Matrix_type  matrix_type,
00344                                       int              variant,
00345                                       fla_blocksize_t* blocksize,
00346                                       fla_ttmm_t*      sub_ttmm,
00347                                       fla_syrk_t*      sub_syrk,
00348                                       fla_herk_t*      sub_herk,
00349                                       fla_trmm_t*      sub_trmm,
00350                                       fla_gemm_t*      sub_gemm );
00351 fla_sylv_t* FLA_Cntl_sylv_obj_create( FLA_Matrix_type  matrix_type,
00352                                       int              variant,
00353                                       fla_blocksize_t* blocksize,
00354                                       fla_sylv_t*      sub_sylv1,
00355                                       fla_sylv_t*      sub_sylv2,
00356                                       fla_sylv_t*      sub_sylv3,
00357                                       fla_gemm_t*      sub_gemm1,
00358                                       fla_gemm_t*      sub_gemm2,
00359                                       fla_gemm_t*      sub_gemm3,
00360                                       fla_gemm_t*      sub_gemm4,
00361                                       fla_gemm_t*      sub_gemm5,
00362                                       fla_gemm_t*      sub_gemm6,
00363                                       fla_gemm_t*      sub_gemm7,
00364                                       fla_gemm_t*      sub_gemm8 );
00365 fla_spdinv_t* FLA_Cntl_spdinv_obj_create( FLA_Matrix_type  matrix_type,
00366                                           int              variant,
00367                                           fla_blocksize_t* blocksize,
00368                                           fla_chol_t*      sub_chol,
00369                                           fla_trinv_t*     sub_trinv,
00370                                           fla_ttmm_t*      sub_ttmm );
00371 fla_apqut_t* FLA_Cntl_apqut_obj_create( FLA_Matrix_type  matrix_type,
00372                                         int              variant,
00373                                         fla_blocksize_t* blocksize,
00374                                         fla_apqut_t*     sub_apqut,
00375                                         fla_trmm_t*      sub_trmm1,
00376                                         fla_trmm_t*      sub_trmm2,
00377                                         fla_gemm_t*      sub_gemm1,
00378                                         fla_gemm_t*      sub_gemm2,
00379                                         fla_trsm_t*      sub_trsm,
00380                                         fla_copy_t*      sub_copy,
00381                                         fla_axpy_t*      sub_axpy );
00382 fla_apqutud_t* FLA_Cntl_apqutud_obj_create( FLA_Matrix_type  matrix_type,
00383                                             int              variant,
00384                                             fla_blocksize_t* blocksize,
00385                                             fla_apqutud_t*   sub_apqutud,
00386                                             fla_gemm_t*      sub_gemm1,
00387                                             fla_gemm_t*      sub_gemm2,
00388                                             fla_trsm_t*      sub_trsm,
00389                                             fla_copy_t*      sub_copy,
00390                                             fla_axpy_t*      sub_axpy );
00391 fla_qrutinc_t* FLA_Cntl_qrutinc_obj_create( FLA_Matrix_type  matrix_type,
00392                                             int              variant,
00393                                             fla_blocksize_t* blocksize,
00394                                             fla_qrut_t*      sub_qrut,
00395                                             fla_apqut_t*     sub_apqut,
00396                                             fla_qrutud_t*    sub_qrutud,
00397                                             fla_apqutud_t*   sub_apqutud );
00398 fla_apqutinc_t* FLA_Cntl_apqutinc_obj_create( FLA_Matrix_type  matrix_type,
00399                                               int              variant,
00400                                               fla_blocksize_t* blocksize,
00401                                               fla_apqut_t*     sub_apqut,
00402                                               fla_apqutud_t*   sub_apqutud );

Generated on Mon Jul 6 05:45:48 2009 for libflame by  doxygen 1.5.9