libflame
revision_anchor
|
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 // --- Level-3 BLAS-like prototypes -------------------------------------------- 00034 00035 // --- gemm --- 00036 00037 void bli_sgemm( trans_t transa, trans_t transb, int m, int k, int n, float* alpha, float* a, int a_rs, int a_cs, float* b, int b_rs, int b_cs, float* beta, float* c, int c_rs, int c_cs ); 00038 void bli_dgemm( trans_t transa, trans_t transb, int m, int k, int n, double* alpha, double* a, int a_rs, int a_cs, double* b, int b_rs, int b_cs, double* beta, double* c, int c_rs, int c_cs ); 00039 void bli_cgemm( trans_t transa, trans_t transb, int m, int k, int n, scomplex* alpha, scomplex* a, int a_rs, int a_cs, scomplex* b, int b_rs, int b_cs, scomplex* beta, scomplex* c, int c_rs, int c_cs ); 00040 void bli_zgemm( trans_t transa, trans_t transb, int m, int k, int n, dcomplex* alpha, dcomplex* a, int a_rs, int a_cs, dcomplex* b, int b_rs, int b_cs, dcomplex* beta, dcomplex* c, int c_rs, int c_cs ); 00041 00042 void bli_sgemm_blas( trans_t transa, trans_t transb, int m, int n, int k, float* alpha, float* a, int lda, float* b, int ldb, float* beta, float* c, int ldc ); 00043 void bli_dgemm_blas( trans_t transa, trans_t transb, int m, int n, int k, double* alpha, double* a, int lda, double* b, int ldb, double* beta, double* c, int ldc ); 00044 void bli_cgemm_blas( trans_t transa, trans_t transb, int m, int n, int k, scomplex* alpha, scomplex* a, int lda, scomplex* b, int ldb, scomplex* beta, scomplex* c, int ldc ); 00045 void bli_zgemm_blas( trans_t transa, trans_t transb, int m, int n, int k, dcomplex* alpha, dcomplex* a, int lda, dcomplex* b, int ldb, dcomplex* beta, dcomplex* c, int ldc ); 00046 00047 // --- hemm --- 00048 00049 void bli_shemm( side_t side, uplo_t uplo, int m, int n, float* alpha, float* a, int a_rs, int a_cs, float* b, int b_rs, int b_cs, float* beta, float* c, int c_rs, int c_cs ); 00050 void bli_dhemm( side_t side, uplo_t uplo, int m, int n, double* alpha, double* a, int a_rs, int a_cs, double* b, int b_rs, int b_cs, double* beta, double* c, int c_rs, int c_cs ); 00051 void bli_chemm( side_t side, uplo_t uplo, int m, int n, scomplex* alpha, scomplex* a, int a_rs, int a_cs, scomplex* b, int b_rs, int b_cs, scomplex* beta, scomplex* c, int c_rs, int c_cs ); 00052 void bli_zhemm( side_t side, uplo_t uplo, int m, int n, dcomplex* alpha, dcomplex* a, int a_rs, int a_cs, dcomplex* b, int b_rs, int b_cs, dcomplex* beta, dcomplex* c, int c_rs, int c_cs ); 00053 00054 void bli_chemm_blas( side_t side, uplo_t uplo, int m, int n, scomplex* alpha, scomplex* a, int lda, scomplex* b, int ldb, scomplex* beta, scomplex* c, int ldc ); 00055 void bli_zhemm_blas( side_t side, uplo_t uplo, int m, int n, dcomplex* alpha, dcomplex* a, int lda, dcomplex* b, int ldb, dcomplex* beta, dcomplex* c, int ldc ); 00056 00057 // --- herk --- 00058 00059 void bli_sherk( uplo_t uplo, trans_t trans, int m, int k, float* alpha, float* a, int a_rs, int a_cs, float* beta, float* c, int c_rs, int c_cs ); 00060 void bli_dherk( uplo_t uplo, trans_t trans, int m, int k, double* alpha, double* a, int a_rs, int a_cs, double* beta, double* c, int c_rs, int c_cs ); 00061 void bli_cherk( uplo_t uplo, trans_t trans, int m, int k, float* alpha, scomplex* a, int a_rs, int a_cs, float* beta, scomplex* c, int c_rs, int c_cs ); 00062 void bli_zherk( uplo_t uplo, trans_t trans, int m, int k, double* alpha, dcomplex* a, int a_rs, int a_cs, double* beta, dcomplex* c, int c_rs, int c_cs ); 00063 00064 void bli_cherk_blas( uplo_t uplo, trans_t trans, int m, int k, float* alpha, scomplex* a, int lda, float* beta, scomplex* c, int ldc ); 00065 void bli_zherk_blas( uplo_t uplo, trans_t trans, int m, int k, double* alpha, dcomplex* a, int lda, double* beta, dcomplex* c, int ldc ); 00066 00067 // --- her2k --- 00068 00069 void bli_sher2k( uplo_t uplo, trans_t trans, int m, int k, float* alpha, float* a, int a_rs, int a_cs, float* b, int b_rs, int b_cs, float* beta, float* c, int c_rs, int c_cs ); 00070 void bli_dher2k( uplo_t uplo, trans_t trans, int m, int k, double* alpha, double* a, int a_rs, int a_cs, double* b, int b_rs, int b_cs, double* beta, double* c, int c_rs, int c_cs ); 00071 void bli_cher2k( uplo_t uplo, trans_t trans, int m, int k, scomplex* alpha, scomplex* a, int a_rs, int a_cs, scomplex* b, int b_rs, int b_cs, float* beta, scomplex* c, int c_rs, int c_cs ); 00072 void bli_zher2k( uplo_t uplo, trans_t trans, int m, int k, dcomplex* alpha, dcomplex* a, int a_rs, int a_cs, dcomplex* b, int b_rs, int b_cs, double* beta, dcomplex* c, int c_rs, int c_cs ); 00073 00074 void bli_cher2k_blas( uplo_t uplo, trans_t trans, int m, int k, scomplex* alpha, scomplex* a, int lda, scomplex* b, int ldb, float* beta, scomplex* c, int ldc ); 00075 void bli_zher2k_blas( uplo_t uplo, trans_t trans, int m, int k, dcomplex* alpha, dcomplex* a, int lda, dcomplex* b, int ldb, double* beta, dcomplex* c, int ldc ); 00076 00077 // --- symm --- 00078 00079 void bli_ssymm( side_t side, uplo_t uplo, int m, int n, float* alpha, float* a, int a_rs, int a_cs, float* b, int b_rs, int b_cs, float* beta, float* c, int c_rs, int c_cs ); 00080 void bli_dsymm( side_t side, uplo_t uplo, int m, int n, double* alpha, double* a, int a_rs, int a_cs, double* b, int b_rs, int b_cs, double* beta, double* c, int c_rs, int c_cs ); 00081 void bli_csymm( side_t side, uplo_t uplo, int m, int n, scomplex* alpha, scomplex* a, int a_rs, int a_cs, scomplex* b, int b_rs, int b_cs, scomplex* beta, scomplex* c, int c_rs, int c_cs ); 00082 void bli_zsymm( side_t side, uplo_t uplo, int m, int n, dcomplex* alpha, dcomplex* a, int a_rs, int a_cs, dcomplex* b, int b_rs, int b_cs, dcomplex* beta, dcomplex* c, int c_rs, int c_cs ); 00083 00084 void bli_ssymm_blas( side_t side, uplo_t uplo, int m, int n, float* alpha, float* a, int lda, float* b, int ldb, float* beta, float* c, int ldc ); 00085 void bli_dsymm_blas( side_t side, uplo_t uplo, int m, int n, double* alpha, double* a, int lda, double* b, int ldb, double* beta, double* c, int ldc ); 00086 void bli_csymm_blas( side_t side, uplo_t uplo, int m, int n, scomplex* alpha, scomplex* a, int lda, scomplex* b, int ldb, scomplex* beta, scomplex* c, int ldc ); 00087 void bli_zsymm_blas( side_t side, uplo_t uplo, int m, int n, dcomplex* alpha, dcomplex* a, int lda, dcomplex* b, int ldb, dcomplex* beta, dcomplex* c, int ldc ); 00088 00089 // --- syrk --- 00090 00091 void bli_ssyrk( uplo_t uplo, trans_t trans, int m, int k, float* alpha, float* a, int a_rs, int a_cs, float* beta, float* c, int c_rs, int c_cs ); 00092 void bli_dsyrk( uplo_t uplo, trans_t trans, int m, int k, double* alpha, double* a, int a_rs, int a_cs, double* beta, double* c, int c_rs, int c_cs ); 00093 void bli_csyrk( uplo_t uplo, trans_t trans, int m, int k, scomplex* alpha, scomplex* a, int a_rs, int a_cs, scomplex* beta, scomplex* c, int c_rs, int c_cs ); 00094 void bli_zsyrk( uplo_t uplo, trans_t trans, int m, int k, dcomplex* alpha, dcomplex* a, int a_rs, int a_cs, dcomplex* beta, dcomplex* c, int c_rs, int c_cs ); 00095 00096 void bli_ssyrk_blas( uplo_t uplo, trans_t trans, int m, int k, float* alpha, float* a, int lda, float* beta, float* c, int ldc ); 00097 void bli_dsyrk_blas( uplo_t uplo, trans_t trans, int m, int k, double* alpha, double* a, int lda, double* beta, double* c, int ldc ); 00098 void bli_csyrk_blas( uplo_t uplo, trans_t trans, int m, int k, scomplex* alpha, scomplex* a, int lda, scomplex* beta, scomplex* c, int ldc ); 00099 void bli_zsyrk_blas( uplo_t uplo, trans_t trans, int m, int k, dcomplex* alpha, dcomplex* a, int lda, dcomplex* beta, dcomplex* c, int ldc ); 00100 00101 // --- syr2k --- 00102 00103 void bli_ssyr2k( uplo_t uplo, trans_t trans, int m, int k, float* alpha, float* a, int a_rs, int a_cs, float* b, int b_rs, int b_cs, float* beta, float* c, int c_rs, int c_cs ); 00104 void bli_dsyr2k( uplo_t uplo, trans_t trans, int m, int k, double* alpha, double* a, int a_rs, int a_cs, double* b, int b_rs, int b_cs, double* beta, double* c, int c_rs, int c_cs ); 00105 void bli_csyr2k( uplo_t uplo, trans_t trans, int m, int k, scomplex* alpha, scomplex* a, int a_rs, int a_cs, scomplex* b, int b_rs, int b_cs, scomplex* beta, scomplex* c, int c_rs, int c_cs ); 00106 void bli_zsyr2k( uplo_t uplo, trans_t trans, int m, int k, dcomplex* alpha, dcomplex* a, int a_rs, int a_cs, dcomplex* b, int b_rs, int b_cs, dcomplex* beta, dcomplex* c, int c_rs, int c_cs ); 00107 00108 void bli_ssyr2k_blas( uplo_t uplo, trans_t trans, int m, int k, float* alpha, float* a, int lda, float* b, int ldb, float* beta, float* c, int ldc ); 00109 void bli_dsyr2k_blas( uplo_t uplo, trans_t trans, int m, int k, double* alpha, double* a, int lda, double* b, int ldb, double* beta, double* c, int ldc ); 00110 void bli_csyr2k_blas( uplo_t uplo, trans_t trans, int m, int k, scomplex* alpha, scomplex* a, int lda, scomplex* b, int ldb, scomplex* beta, scomplex* c, int ldc ); 00111 void bli_zsyr2k_blas( uplo_t uplo, trans_t trans, int m, int k, dcomplex* alpha, dcomplex* a, int lda, dcomplex* b, int ldb, dcomplex* beta, dcomplex* c, int ldc ); 00112 00113 // --- trmm --- 00114 00115 void bli_strmm( side_t side, uplo_t uplo, trans_t trans, diag_t diag, int m, int n, float* alpha, float* a, int a_rs, int a_cs, float* b, int b_rs, int b_cs ); 00116 void bli_dtrmm( side_t side, uplo_t uplo, trans_t trans, diag_t diag, int m, int n, double* alpha, double* a, int a_rs, int a_cs, double* b, int b_rs, int b_cs ); 00117 void bli_ctrmm( side_t side, uplo_t uplo, trans_t trans, diag_t diag, int m, int n, scomplex* alpha, scomplex* a, int a_rs, int a_cs, scomplex* b, int b_rs, int b_cs ); 00118 void bli_ztrmm( side_t side, uplo_t uplo, trans_t trans, diag_t diag, int m, int n, dcomplex* alpha, dcomplex* a, int a_rs, int a_cs, dcomplex* b, int b_rs, int b_cs ); 00119 00120 void bli_strmm_blas( side_t side, uplo_t uplo, trans_t trans, diag_t diag, int m, int n, float* alpha, float* a, int lda, float* b, int ldb ); 00121 void bli_dtrmm_blas( side_t side, uplo_t uplo, trans_t trans, diag_t diag, int m, int n, double* alpha, double* a, int lda, double* b, int ldb ); 00122 void bli_ctrmm_blas( side_t side, uplo_t uplo, trans_t trans, diag_t diag, int m, int n, scomplex* alpha, scomplex* a, int lda, scomplex* b, int ldb ); 00123 void bli_ztrmm_blas( side_t side, uplo_t uplo, trans_t trans, diag_t diag, int m, int n, dcomplex* alpha, dcomplex* a, int lda, dcomplex* b, int ldb ); 00124 00125 // --- trsm --- 00126 00127 void bli_strsm( side_t side, uplo_t uplo, trans_t trans, diag_t diag, int m, int n, float* alpha, float* a, int a_rs, int a_cs, float* b, int b_rs, int b_cs ); 00128 void bli_dtrsm( side_t side, uplo_t uplo, trans_t trans, diag_t diag, int m, int n, double* alpha, double* a, int a_rs, int a_cs, double* b, int b_rs, int b_cs ); 00129 void bli_ctrsm( side_t side, uplo_t uplo, trans_t trans, diag_t diag, int m, int n, scomplex* alpha, scomplex* a, int a_rs, int a_cs, scomplex* b, int b_rs, int b_cs ); 00130 void bli_ztrsm( side_t side, uplo_t uplo, trans_t trans, diag_t diag, int m, int n, dcomplex* alpha, dcomplex* a, int a_rs, int a_cs, dcomplex* b, int b_rs, int b_cs ); 00131 00132 void bli_strsm_blas( side_t side, uplo_t uplo, trans_t trans, diag_t diag, int m, int n, float* alpha, float* a, int lda, float* b, int ldb ); 00133 void bli_dtrsm_blas( side_t side, uplo_t uplo, trans_t trans, diag_t diag, int m, int n, double* alpha, double* a, int lda, double* b, int ldb ); 00134 void bli_ctrsm_blas( side_t side, uplo_t uplo, trans_t trans, diag_t diag, int m, int n, scomplex* alpha, scomplex* a, int lda, scomplex* b, int ldb ); 00135 void bli_ztrsm_blas( side_t side, uplo_t uplo, trans_t trans, diag_t diag, int m, int n, dcomplex* alpha, dcomplex* a, int lda, dcomplex* b, int ldb ); 00136 00137 // --- trmmsx --- 00138 00139 void bli_strmmsx( side_t side, uplo_t uplo, trans_t trans, diag_t diag, int m, int n, float* alpha, float* a, int a_rs, int a_cs, float* b, int b_rs, int b_cs, float* beta, float* c, int c_rs, int c_cs ); 00140 void bli_dtrmmsx( side_t side, uplo_t uplo, trans_t trans, diag_t diag, int m, int n, double* alpha, double* a, int a_rs, int a_cs, double* b, int b_rs, int b_cs, double* beta, double* c, int c_rs, int c_cs ); 00141 void bli_ctrmmsx( side_t side, uplo_t uplo, trans_t trans, diag_t diag, int m, int n, scomplex* alpha, scomplex* a, int a_rs, int a_cs, scomplex* b, int b_rs, int b_cs, scomplex* beta, scomplex* c, int c_rs, int c_cs ); 00142 void bli_ztrmmsx( side_t side, uplo_t uplo, trans_t trans, diag_t diag, int m, int n, dcomplex* alpha, dcomplex* a, int a_rs, int a_cs, dcomplex* b, int b_rs, int b_cs, dcomplex* beta, dcomplex* c, int c_rs, int c_cs ); 00143 00144 // --- trsmsx --- 00145 00146 void bli_strsmsx( side_t side, uplo_t uplo, trans_t trans, diag_t diag, int m, int n, float* alpha, float* a, int a_rs, int a_cs, float* b, int b_rs, int b_cs, float* beta, float* c, int c_rs, int c_cs ); 00147 void bli_dtrsmsx( side_t side, uplo_t uplo, trans_t trans, diag_t diag, int m, int n, double* alpha, double* a, int a_rs, int a_cs, double* b, int b_rs, int b_cs, double* beta, double* c, int c_rs, int c_cs ); 00148 void bli_ctrsmsx( side_t side, uplo_t uplo, trans_t trans, diag_t diag, int m, int n, scomplex* alpha, scomplex* a, int a_rs, int a_cs, scomplex* b, int b_rs, int b_cs, scomplex* beta, scomplex* c, int c_rs, int c_cs ); 00149 void bli_ztrsmsx( side_t side, uplo_t uplo, trans_t trans, diag_t diag, int m, int n, dcomplex* alpha, dcomplex* a, int a_rs, int a_cs, dcomplex* b, int b_rs, int b_cs, dcomplex* beta, dcomplex* c, int c_rs, int c_cs ); 00150