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( char transa, char 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( char transa, char 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( char transa, char 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( char transa, char 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( char transa, char 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( char transa, char 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( char transa, char 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( char transa, char 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( char side, char 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( char side, char 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( char side, char 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( char side, char 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( char side, char 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( char side, char 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( char uplo, char 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( char uplo, char 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( char uplo, char 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( char uplo, char 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( char uplo, char trans, int m, int k, float* alpha, scomplex* a, int lda, float* beta, scomplex* c, int ldc ); 00065 void bli_zherk_blas( char uplo, char 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( char uplo, char 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( char uplo, char 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( char uplo, char 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( char uplo, char 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( char uplo, char 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( char uplo, char 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( char side, char 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( char side, char 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( char side, char 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( char side, char 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( char side, char 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( char side, char 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( char side, char 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( char side, char 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( char uplo, char 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( char uplo, char 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( char uplo, char 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( char uplo, char 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( char uplo, char trans, int m, int k, float* alpha, float* a, int lda, float* beta, float* c, int ldc ); 00097 void bli_dsyrk_blas( char uplo, char trans, int m, int k, double* alpha, double* a, int lda, double* beta, double* c, int ldc ); 00098 void bli_csyrk_blas( char uplo, char trans, int m, int k, scomplex* alpha, scomplex* a, int lda, scomplex* beta, scomplex* c, int ldc ); 00099 void bli_zsyrk_blas( char uplo, char 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( char uplo, char 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( char uplo, char 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( char uplo, char 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( char uplo, char 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( char uplo, char 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( char uplo, char 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( char uplo, char 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( char uplo, char 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( char side, char uplo, char trans, char 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( char side, char uplo, char trans, char 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( char side, char uplo, char trans, char 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( char side, char uplo, char trans, char 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( char side, char uplo, char trans, char diag, int m, int n, float* alpha, float* a, int lda, float* b, int ldb ); 00121 void bli_dtrmm_blas( char side, char uplo, char trans, char diag, int m, int n, double* alpha, double* a, int lda, double* b, int ldb ); 00122 void bli_ctrmm_blas( char side, char uplo, char trans, char diag, int m, int n, scomplex* alpha, scomplex* a, int lda, scomplex* b, int ldb ); 00123 void bli_ztrmm_blas( char side, char uplo, char trans, char diag, int m, int n, dcomplex* alpha, dcomplex* a, int lda, dcomplex* b, int ldb ); 00124 00125 // --- trsm --- 00126 00127 void bli_strsm( char side, char uplo, char trans, char 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( char side, char uplo, char trans, char 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( char side, char uplo, char trans, char 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( char side, char uplo, char trans, char 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( char side, char uplo, char trans, char diag, int m, int n, float* alpha, float* a, int lda, float* b, int ldb ); 00133 void bli_dtrsm_blas( char side, char uplo, char trans, char diag, int m, int n, double* alpha, double* a, int lda, double* b, int ldb ); 00134 void bli_ctrsm_blas( char side, char uplo, char trans, char diag, int m, int n, scomplex* alpha, scomplex* a, int lda, scomplex* b, int ldb ); 00135 void bli_ztrsm_blas( char side, char uplo, char trans, char diag, int m, int n, dcomplex* alpha, dcomplex* a, int lda, dcomplex* b, int ldb ); 00136 00137 // --- trmmsx --- 00138 00139 void bli_strmmsx( char side, char uplo, char trans, char 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( char side, char uplo, char trans, char 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( char side, char uplo, char trans, char 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( char side, char uplo, char trans, char 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( char side, char uplo, char trans, char 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( char side, char uplo, char trans, char 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( char side, char uplo, char trans, char 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( char side, char uplo, char trans, char 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