Changeset 198db5a in tol


Ignore:
Timestamp:
Dec 29, 2008, 4:44:56 PM (18 years ago)
Author:
Víctor de Buen <vdebuen@…>
Branches:
1941-docker-image-to-test, devel, master
Children:
1c5053a
Parents:
f743e2a
Message:

Avoiding internal cblas exit calling when some dimension is zero

git-svn-id: ​https://www.tol-project.org/svn/tolp/trunk@354 be4846ae-f051-483a-831f-b64e7d08527f

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tol/bmath/blinalg/tol_blas.cpp

    rf743e2a r198db5a  
    8888    C.SetAllValuesTo(0);
    8989  }
    90   const double* A_ = A.Data().Buffer();
    91   const double* B_ = B.Data().Buffer();
    92   double* C_ = C.GetData().GetBuffer();
    93   cblas_dgemm
    94   (
    95     CblasRowMajor, TransA, TransB,
    96     M, N, K,
    97     alpha,
    98     A_, Ac,
    99     B_, Bc,
    100     beta,
    101     C_, N
    102   );
     90  if(N&&K&&M)
     91  {
     92    const double* A_ = A.Data().Buffer();
     93    const double* B_ = B.Data().Buffer();
     94    double* C_ = C.GetData().GetBuffer();
     95    cblas_dgemm
     96    (
     97      CblasRowMajor, TransA, TransB,
     98      M, N, K,
     99      alpha,
     100      A_, Ac,
     101      B_, Bc,
     102      beta,
     103      C_, N
     104    );
     105  }
    103106//VBR: Comprobar si hay error
    104107  return(0);
    … …  
    154157    C.SetAllValuesTo(0);
    155158  }
    156   cblas_dsyrk
    157   (
    158     CblasRowMajor, Uplo, Trans,
    159     N, K,
    160     alpha,
    161     A.Data().Buffer(), Ac,
    162     beta,
    163     C.GetData().GetBuffer(), Cc
    164   );
     159  if(N&&K)
     160  {
     161    cblas_dsyrk
     162    (
     163      CblasRowMajor, Uplo, Trans,
     164      N, K,
     165      alpha,
     166      A.Data().Buffer(), Ac,
     167      beta,
     168      C.GetData().GetBuffer(), Cc
     169    );
     170  }
    165171//VBR: Comprobar si hay error
    166172  return(0);
    … …  
    205211  int lda = (Side==CblasLeft)?M:N;
    206212  int ldb = N;
    207   cblas_dtrmm(CblasRowMajor,Side,Uplo,TransA,Diag,M,N,alpha,
    208               A.Data   ().Buffer   (),lda,
    209               X.GetData().GetBuffer(),ldb);
     213  if(N&&M)
     214  {
     215    cblas_dtrmm(CblasRowMajor,Side,Uplo,TransA,Diag,M,N,alpha,
     216                A.Data   ().Buffer   (),lda,
     217                X.GetData().GetBuffer(),ldb);
     218  }
    210219//VBR: Comprobar si hay error
    211220  return(0);
    … …  
    255264  int lda = (Side==CblasLeft)?M:N;
    256265  int ldb = N;
    257   cblas_dtrsm(CblasRowMajor,Side,Uplo,TransA,Diag,M,N,alpha,
    258               A.Data   ().Buffer   (),lda,
    259               X.GetData().GetBuffer(),ldb);
     266  if(N&&M)
     267  {
     268    cblas_dtrsm(CblasRowMajor,Side,Uplo,TransA,Diag,M,N,alpha,
     269                A.Data   ().Buffer   (),lda,
     270                X.GetData().GetBuffer(),ldb);
     271  }
    260272//VBR: Comprobar si hay error
    261273  return(0);
Note: See TracChangeset for help on using the changeset viewer.