Tpetra parallel linear algebra  Version of the Day
Classes | Namespaces | Functions
Tpetra_Details_cublasGemm.hpp File Reference

Implementation detail of Tpetra::MultiVector. More...

#include "TpetraCore_config.h"
#include "Tpetra_Details_Blas.hpp"
#include "Tpetra_Details_libGemm.hpp"

Go to the source code of this file.

Classes

struct  Tpetra::Details::Blas::Cublas::GemmCanUseCublas< ViewType1, ViewType2, ViewType3, CoefficientType, IndexType >
 For this set of template parameters, can and should we implement Gemm (see below) using cuBLAS? More...
 
struct  Tpetra::Details::Blas::Cublas::Impl::Gemm< ScalarType >
 Wrapper for the above wrappers, templated on scalar type (the type of each entry in the matrices). More...
 

Namespaces

 Tpetra
 Namespace Tpetra contains the class and methods constituting the Tpetra library.
 
 Tpetra::Details
 Namespace for Tpetra implementation details.
 

Functions

void Tpetra::Details::Blas::Cublas::Impl::cgemm (const char char_transA, const char char_transB, const int m, const int n, const int k, const ::Kokkos::complex< float > &alpha, const ::Kokkos::complex< float > A[], const int lda, const ::Kokkos::complex< float > B[], const int ldb, const ::Kokkos::complex< float > &beta, ::Kokkos::complex< float > C[], const int ldc)
 Wrapped version of cublasCgemm (v1 API). More...
 
void Tpetra::Details::Blas::Cublas::Impl::dgemm (const char char_transA, const char char_transB, const int m, const int n, const int k, const double alpha, const double A[], const int lda, const double B[], const int ldb, const double beta, double C[], const int ldc)
 Wrapped version of cublasDgemm (v1 API). More...
 
void Tpetra::Details::Blas::Cublas::Impl::sgemm (const char char_transA, const char char_transB, const int m, const int n, const int k, const float alpha, const float A[], const int lda, const float B[], const int ldb, const float beta, float C[], const int ldc)
 Wrapped version of cublasSgemm (v1 API). More...
 
void Tpetra::Details::Blas::Cublas::Impl::zgemm (const char char_transA, const char char_transB, const int m, const int n, const int k, const ::Kokkos::complex< double > &alpha, const ::Kokkos::complex< double > A[], const int lda, const ::Kokkos::complex< double > B[], const int ldb, const ::Kokkos::complex< double > &beta, ::Kokkos::complex< double > C[], const int ldc)
 Wrapped version of cublasZgemm (v1 API). More...
 

Detailed Description

Implementation detail of Tpetra::MultiVector.

Warning
This file, and its contents, are an implementation detail of Tpetra::MultiVector. Either may disappear or change at any time.

The point of this file is to wrap cuBLAS calls, so that application code is not exposed to cublas.h or cublas_v2.h. This fixes the following issue relating to conflicts at build time between the old and new cuBLAS API:

https://github.com/trilinos/Trilinos/issues/1194

It also generally improves encapsulation.

Definition in file Tpetra_Details_cublasGemm.hpp.

Function Documentation

◆ cgemm()

void Tpetra::Details::Blas::Cublas::Impl::cgemm ( const char  char_transA,
const char  char_transB,
const int  m,
const int  n,
const int  k,
const ::Kokkos::complex< float > &  alpha,
const ::Kokkos::complex< float >  A[],
const int  lda,
const ::Kokkos::complex< float >  B[],
const int  ldb,
const ::Kokkos::complex< float > &  beta,
::Kokkos::complex< float >  C[],
const int  ldc 
)

Wrapped version of cublasCgemm (v1 API).

See the cuBLAS documentation for details.

Wrapped version of cublasCgemm (v1 API).

Wrapped version of cublasCgemm (v1 API).

See the MKL documentation for details.

Definition at line 111 of file Tpetra_Details_libGemm.cpp.

◆ dgemm()

void Tpetra::Details::Blas::Cublas::Impl::dgemm ( const char  char_transA,
const char  char_transB,
const int  m,
const int  n,
const int  k,
const double  alpha,
const double  A[],
const int  lda,
const double  B[],
const int  ldb,
const double  beta,
double  C[],
const int  ldc 
)

Wrapped version of cublasDgemm (v1 API).

See the cuBLAS documentation for details.

Definition at line 94 of file Tpetra_Details_cublasGemm.cpp.

◆ sgemm()

void Tpetra::Details::Blas::Cublas::Impl::sgemm ( const char  char_transA,
const char  char_transB,
const int  m,
const int  n,
const int  k,
const float  alpha,
const float  A[],
const int  lda,
const float  B[],
const int  ldb,
const float  beta,
float  C[],
const int  ldc 
)

Wrapped version of cublasSgemm (v1 API).

See the cuBLAS documentation for details.

Definition at line 124 of file Tpetra_Details_cublasGemm.cpp.

◆ zgemm()

void Tpetra::Details::Blas::Cublas::Impl::zgemm ( const char  char_transA,
const char  char_transB,
const int  m,
const int  n,
const int  k,
const ::Kokkos::complex< double > &  alpha,
const ::Kokkos::complex< double >  A[],
const int  lda,
const ::Kokkos::complex< double >  B[],
const int  ldb,
const ::Kokkos::complex< double > &  beta,
::Kokkos::complex< double >  C[],
const int  ldc 
)

Wrapped version of cublasZgemm (v1 API).

See the cuBLAS documentation for details.

Wrapped version of cublasZgemm (v1 API).

Wrapped version of cublasZgemm (v1 API).

See the MKL documentation for details.

Definition at line 170 of file Tpetra_Details_libGemm.cpp.