Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion source/source_base/gather_math_lib_info.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ void zhegvx_i(const int *itype,
const int *il,
const int *iu,
const double *abstol,
const int *m,
int *m,
double *w,
std::complex<double> *z,
const int *ldz,
Expand Down
6 changes: 3 additions & 3 deletions source/source_base/global_function.h
Original file line number Diff line number Diff line change
Expand Up @@ -182,17 +182,17 @@ inline void DCOPY(const T* a, T* b, const int& dim) {
}

template <typename T>
inline void COPYARRAY(const T* a, T* b, const long dim);
inline void COPYARRAY(const T* a, T* b, const int dim);

template <>
inline void COPYARRAY(const std::complex<double>* a, std::complex<double>* b, const long dim)
inline void COPYARRAY(const std::complex<double>* a, std::complex<double>* b, const int dim)
{
const int one = 1;
zcopy_(&dim, a, &one, b, &one);
}

template <>
inline void COPYARRAY(const double* a, double* b, const long dim)
inline void COPYARRAY(const double* a, double* b, const int dim)
{
const int one = 1;
dcopy_(&dim, a, &one, b, &one);
Expand Down
32 changes: 22 additions & 10 deletions source/source_base/module_container/base/third_party/blas.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ void daxpy_(const int *N, const double *alpha, const double *x, const int *incx,
void caxpy_(const int *N, const std::complex<float> *alpha, const std::complex<float> *x, const int *incx, std::complex<float> *y, const int *incy);
void zaxpy_(const int *N, const std::complex<double> *alpha, const std::complex<double> *x, const int *incx, std::complex<double> *y, const int *incy);

void dcopy_(long const *n, const double *a, int const *incx, double *b, int const *incy);
void zcopy_(long const *n, const std::complex<double> *a, int const *incx, std::complex<double> *b, int const *incy);
void dcopy_(const int *n, const double *a, const int *incx, double *b, const int *incy);
void zcopy_(const int *n, const std::complex<double> *a, const int *incx, std::complex<double> *b, const int *incy);

//reason for passing results as argument instead of returning it:
//see https://www.numbercrunch.de/blog/2014/07/lost-in-translation/
Expand Down Expand Up @@ -107,14 +107,26 @@ void dsymm_(const char *side, const char *uplo, const int *m, const int *n,
const double *alpha, const double *a, const int *lda, const double *b, const int *ldb,
const double *beta, double *c, const int *ldc);
//a is hermitian
void zhemm_(char *side, char *uplo, int *m, int *n,std::complex<double> *alpha,
std::complex<double> *a, int *lda, std::complex<double> *b, int *ldb, std::complex<double> *beta, std::complex<double> *c, int *ldc);
void zhemm_(const char *side, const char *uplo,
const int *m, const int *n,
const std::complex<double> *alpha,
const std::complex<double> *a, const int *lda,
const std::complex<double> *b, const int *ldb,
const std::complex<double> *beta,
std::complex<double> *c, const int *ldc);

//solving triangular matrix with multiple right hand sides
void dtrsm_(char *side, char* uplo, char *transa, char *diag, int *m, int *n,
double* alpha, double* a, int *lda, double*b, int *ldb);
void ztrsm_(char *side, char* uplo, char *transa, char *diag, int *m, int *n,
std::complex<double>* alpha, std::complex<double>* a, int *lda, std::complex<double>*b, int *ldb);
void dtrsm_(const char *side, const char *uplo, const char *transa, const char *diag,
const int *m, const int *n,
const double *alpha,
const double *a, const int *lda,
double *b, const int *ldb);

void ztrsm_(const char *side, const char *uplo, const char *transa, const char *diag,
const int *m, const int *n,
const std::complex<double> *alpha,
const std::complex<double> *a, const int *lda,
std::complex<double> *b, const int *ldb);

}

Expand Down Expand Up @@ -339,12 +351,12 @@ double nrm2( const int n, const std::complex<double> *x, const int incx )

// copies a into b
static inline
void copy(const long n, const double *a, const int incx, double *b, const int incy)
void copy(const int n, const double *a, const int incx, double *b, const int incy)
{
dcopy_(&n, a, &incx, b, &incy);
}
static inline
void copy(const long n, const std::complex<double> *a, const int incx, std::complex<double> *b, const int incy)
void copy(const int n, const std::complex<double> *a, const int incx, std::complex<double> *b, const int incy)
{
zcopy_(&n, a, &incx, b, &incy);
}
Expand Down
219 changes: 127 additions & 92 deletions source/source_base/module_container/base/third_party/lapack.h

Large diffs are not rendered by default.

322 changes: 188 additions & 134 deletions source/source_base/module_external/blas_connector.h

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions source/source_base/module_external/blas_connector_vector.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -322,7 +322,7 @@ double BlasConnector::nrm2( const int n, const std::complex<double> *X, const in
}

// copies a into b
void BlasConnector::copy(const long n, const float *a, const int incx, float *b, const int incy, base_device::AbacusDevice_t device_type)
void BlasConnector::copy(const int n, const float *a, const int incx, float *b, const int incy, base_device::AbacusDevice_t device_type)
{
if (device_type == base_device::AbacusDevice_t::CpuDevice) {
scopy_(&n, a, &incx, b, &incy);
Expand All @@ -332,7 +332,7 @@ void BlasConnector::copy(const long n, const float *a, const int incx, float *b,
}
}

void BlasConnector::copy(const long n, const double *a, const int incx, double *b, const int incy, base_device::AbacusDevice_t device_type)
void BlasConnector::copy(const int n, const double *a, const int incx, double *b, const int incy, base_device::AbacusDevice_t device_type)
{
if (device_type == base_device::AbacusDevice_t::CpuDevice) {
dcopy_(&n, a, &incx, b, &incy);
Expand All @@ -342,7 +342,7 @@ void BlasConnector::copy(const long n, const double *a, const int incx, double *
}
}

void BlasConnector::copy(const long n, const std::complex<float> *a, const int incx, std::complex<float> *b, const int incy, base_device::AbacusDevice_t device_type)
void BlasConnector::copy(const int n, const std::complex<float> *a, const int incx, std::complex<float> *b, const int incy, base_device::AbacusDevice_t device_type)
{
if (device_type == base_device::AbacusDevice_t::CpuDevice) {
ccopy_(&n, a, &incx, b, &incy);
Expand All @@ -352,7 +352,7 @@ void BlasConnector::copy(const long n, const std::complex<float> *a, const int i
}
}

void BlasConnector::copy(const long n, const std::complex<double> *a, const int incx, std::complex<double> *b, const int incy, base_device::AbacusDevice_t device_type)
void BlasConnector::copy(const int n, const std::complex<double> *a, const int incx, std::complex<double> *b, const int incy, base_device::AbacusDevice_t device_type)
{
if (device_type == base_device::AbacusDevice_t::CpuDevice) {
zcopy_(&n, a, &incx, b, &incy);
Expand Down
Loading
Loading