ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
AddMMCPU.cpp
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - CloudViewer: www.cloudViewer.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2024 www.cloudViewer.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
8 #include <Logging.h>
9 
13 
14 namespace cloudViewer {
15 namespace core {
16 
17 void AddMMCPU(void* A_data,
18  void* B_data,
19  void* C_data,
20  int64_t m,
21  int64_t k,
22  int64_t n,
23  double alpha,
24  double beta,
25  bool gemmTrA,
26  bool gemmTrB,
27  int lda,
28  int ldb,
29  int ldc,
30  Dtype dtype) {
31  DISPATCH_DTYPE_TO_TEMPLATE(dtype, [&]() {
32  gemm_cpu(CblasColMajor, gemmTrA ? CblasTrans : CblasNoTrans,
33  gemmTrB ? CblasTrans : CblasNoTrans, m, n, k,
34  static_cast<scalar_t>(alpha),
35  static_cast<const scalar_t*>(A_data), lda,
36  static_cast<const scalar_t*>(B_data), ldb,
37  static_cast<scalar_t>(beta), static_cast<scalar_t*>(C_data),
38  ldc);
39  });
40 }
41 
42 } // namespace core
43 } // namespace cloudViewer
#define DISPATCH_DTYPE_TO_TEMPLATE(DTYPE,...)
Definition: Dispatch.h:31
void AddMMCPU(void *A_data, void *B_data, void *C_data, int64_t m, int64_t k, int64_t n, double alpha, double beta, bool gemmTrA, bool gemmTrB, int lda, int ldb, int ldc, Dtype dtype)
Definition: AddMMCPU.cpp:17
void gemm_cpu(CBLAS_LAYOUT layout, CBLAS_TRANSPOSE trans_A, CBLAS_TRANSPOSE trans_B, CLOUDVIEWER_CPU_LINALG_INT m, CLOUDVIEWER_CPU_LINALG_INT n, CLOUDVIEWER_CPU_LINALG_INT k, scalar_t alpha, const scalar_t *A_data, CLOUDVIEWER_CPU_LINALG_INT lda, const scalar_t *B_data, CLOUDVIEWER_CPU_LINALG_INT ldb, scalar_t beta, scalar_t *C_data, CLOUDVIEWER_CPU_LINALG_INT ldc)
Definition: BlasWrapper.h:19
Generic file read and write utility for python interface.