⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fmm.l

📁 C++编写的高性能矩阵乘法的Stranssen算法
💻 L
字号:
.TH fmm l "12 November 1996" "PRISM version 1.0" "PRISM routine (version 1.0)".TH fmm l "12 November 1996" "PRISM routine" "PRISM routine".SH NAMEfmm - Winograd's variant of Strassen's algorithm to perform one of the matrix-matrix operations.brC := alpha*op( A )*op( B ) + beta*C..SH SYNOPSIS.TP 6fmm ( 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, double *work, .brint lwork ).SH PURPOSEfmm performs one of the matrix-matrix operationsC := alpha*op( A )*op( B ) + beta*C,where  op( X ) is one of.br   op( X ) = X   or   op( X ) = X' (transpose of X),.bralpha and beta are scalars, and A, B and C are matrices, with op( A )an m by k matrix,  op( B )  a  k by n matrix and  C an m by n matrix.fmm calling sequence is very similar to the Level 3 BLAS routineDGEMM except it has two extra arguments to specify work space.  Ituses Winograd's variant of Strassen's algorithm to reduce theoperations count relative to conventional matrix multiplication(DGEMM).  It has a C calling interface but all arrays are stored in columnmajor format (Fortran style)..SH PARAMETERS.TP 8transa  - char.On entry, transa specifies the form of op( a ) to be used inthe matrix multiplication as follows:transa = 'N' or 'n',  op( a ) = a.transa = 'T' or 't',  op( a ) = a'.transa = 'C' or 'c',  op( a ) = a'.Unchanged on exit..TP 8transb  - charOn entry, transb specifies the form of op( b ) to be used inthe matrix multiplication as follows:transb = 'N' or 'n',  op( b ) = b.transb = 'T' or 't',  op( b ) = b'.transb = 'C' or 'c',  op( b ) = b'.Unchanged on exit..TP 8m       - int.On entry,  m  specifies  the number  of rows  of the  matrixop( a )  and of the  matrix  c.  m  must  be at least  zero.Unchanged on exit..TP 8n       - int.On entry,  n  specifies the number  of columns of the matrixop( b ) and the number of columns of the matrix c. n must beat least zero.Unchanged on exit..TP 8k       - int.On entry,  k  specifies  the number of columns of the matrixop( a ) and the number of rows of the matrix op( b ). k mustbe at least  zero.Unchanged on exit..TP 8alpha   - double.On entry, alpha specifies the scalar alpha.Unchanged on exit..TP 8a       - double pointer.a is logically an array of size ( LDA, ka ), where ka isk  when  transa = 'N' or 'n',  and is  m  otherwise.Before entry with  transa = 'N' or 'n',  the leading  m by kpart of the array  a  must contain the matrix  A,  otherwisethe leading  k by m  part of the array  a  must contain  thematrix A.Unchanged on exit..TP 8lda     - int.On entry, lda specifies the first dimension of a as "declared"in the calling (sub) program. When  transa = 'N' or 'n' thenlda must be at least  max( 1, m ), otherwise  lda must be atleast  max( 1, k ).Unchanged on exit..TP 8b       - double pointerb is logically an array of size  ( ldb, kb ), where kb isn  when  transb = 'N' or 'n',  and is  k  otherwise.Before entry with  transb = 'N' or 'n',  the leading  k by npart of the array  b  must contain the matrix  B,  otherwisethe leading  n by k  part of the array  b  must contain  thematrix B.Unchanged on exit..TP 8ldb     - int.On entry, ldb specifies the first dimension of b as "declared"in the calling (sub) program. When  transb = 'N' or 'n' thenldb must be at least  max( 1, k ), otherwise  ldb must be atleast  max( 1, n ).Unchanged on exit..TP 8beta    - double.On entry,  beta  specifies the scalar  beta.  When  beta  issupplied as zero then c need not be set on input.Unchanged on exit..TP 8c       - double pointer.c is logically an array of size ( ldc, n ).Before entry, the leading  m by n  part of the array  c mustcontain the matrix  C,  except when  beta  is zero, in whichcase c need not be set on entry.On exit, the array  c  is overwritten by the  m by n  matrix( alpha*op( a )*op( b ) + beta*c )..TP 8ldc     - int.On entry, ldc specifies the first dimension of c as "declared"in  the  calling  (sub)  program.   ldc  must  be  at  leastmax( 1, m ).Unchanged on exit..TP 8work    - double pointer.work is logically an array of size ( LWORK ) which istemporary work space for use by the routine.  Size must be at least lwork double words.  Input values are ignored.If work is NULL then fmm automatically allocates the temporaryspace it needs.On exit, the array  work will be overwritten by values that are only of internal use..TP 8lwork   - int.On entry, lwork specifies the size of the work space array work.If lwork is too small for the work space needed then fmm automaticallyallocates the temporary space it needs.The size necessary can be calculated with the routine tmp_fmm.Unchanged on exit..SH SEE ALSO.BR DGEFMM (l),.BR DGEFMM_MEM (l),.BR TMP_DGEFMM_MEM (l),.BR tmp_fmm (l)..SH FURTHER INFORMATION.LPSee the DGEFMM User's Guide provided in the doc/ directory of the distribution..SH BUGS.LPThere are no known bugs..SH COPYRIGHTSee COPYRIGHT file provided with the software distribution..SH AUTHORS.IPSteven Huss-Lederman, University of Wisconsin.brElaine M. Jacobson, Center for Computing Sciences.brJeremy R. Johnson, Drexel University.brAnna Tsao, Center for Computing Sciences.brThomas Turnbull, Center for Computing Sciences

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -