SuperLU Distributed 9.0.0
gpu3d
luAuxStructTemplated.hpp File Reference
#include <mpi.h>
#include "superlu_defs.h"
#include "superlu_zdefs.h"
Include dependency graph for luAuxStructTemplated.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  diagFactBufs_t< Ftype >
 

Typedefs

template<typename Ftype >
using AnormType = typename std::conditional< std::is_same< Ftype, float >::value, float, typename std::conditional< std::is_same< Ftype, double >::value||std::is_same< Ftype, doublecomplex >::value, double, float >::type >::type
 
template<typename Ftype >
using threshPivValType = typename std::conditional< std::is_same< Ftype, float >::value, float, typename std::conditional< std::is_same< Ftype, double >::value||std::is_same< Ftype, doublecomplex >::value, double, float >::type >::type
 
template<typename Ftype >
using trf3dpartitionType = typename std::conditional< std::is_same< Ftype, double >::value, dtrf3Dpartition_t, typename std::conditional< std::is_same< Ftype, float >::value, strf3Dpartition_t, typename std::conditional< std::is_same< Ftype, doublecomplex >::value, ztrf3Dpartition_t, void >::type >::type >::type
 
template<typename Ftype >
using LUStruct_type = typename std::conditional< std::is_same< Ftype, double >::value, dLUstruct_t, typename std::conditional< std::is_same< Ftype, float >::value, sLUstruct_t, typename std::conditional< std::is_same< Ftype, doublecomplex >::value, zLUstruct_t, void >::type >::type >::type
 
template<typename Ftype >
using LocalLU_type = typename std::conditional< std::is_same< Ftype, double >::value, dLocalLU_t, typename std::conditional< std::is_same< Ftype, float >::value, sLocalLU_t, typename std::conditional< std::is_same< Ftype, doublecomplex >::value, zLocalLU_t, void >::type >::type >::type
 
template<typename Ftype >
using LUValSubBuf_type = typename std::conditional< std::is_same< Ftype, double >::value, dLUValSubBuf_t, typename std::conditional< std::is_same< Ftype, float >::value, sLUValSubBuf_t, typename std::conditional< std::is_same< Ftype, doublecomplex >::value, zLUValSubBuf_t, void >::type >::type >::type
 
template<typename Ftype >
using diagFactBufs_type = typename std::conditional< std::is_same< Ftype, double >::value, ddiagFactBufs_t, typename std::conditional< std::is_same< Ftype, float >::value, sdiagFactBufs_t, typename std::conditional< std::is_same< Ftype, doublecomplex >::value, zdiagFactBufs_t, void >::type >::type >::type
 

Functions

template<typename T >
MPI_Datatype get_mpi_type ()
 
template<>
MPI_Datatype get_mpi_type< int > ()
 
template<>
MPI_Datatype get_mpi_type< float > ()
 
template<>
MPI_Datatype get_mpi_type< double > ()
 
template<>
MPI_Datatype get_mpi_type< doublecomplex > ()
 
template<typename T >
one ()
 
template<>
double one< double > ()
 
template<>
float one< float > ()
 
template<>
doublecomplex one< doublecomplex > ()
 
template<typename T >
zeroT ()
 
template<>
double zeroT< double > ()
 
template<>
float zeroT< float > ()
 
template<>
doublecomplex zeroT< doublecomplex > ()
 
template<typename T >
__device__ T atomicAddT (T *address, T val)
 
template<>
double atomicAddT< double > (double *address, double val)
 
template<>
float atomicAddT< float > (float *address, float val)
 
template<>
doublecomplex atomicAddT< doublecomplex > (doublecomplex *address, doublecomplex val)
 
__host__ __device__ doublecomplex operator- (const doublecomplex &a, const doublecomplex &b)
 
__host__ __device__ bool operator== (const doublecomplex &a, const doublecomplex &b)
 
__host__ __device__ doublecomplex operator/ (const doublecomplex &a, const doublecomplex &b)
 
__host__ __device__ doublecomplex operator- (const doublecomplex &a)
 
__host__ __device__ doublecomplexoperator*= (doublecomplex &a, const doublecomplex &b)
 
__host__ __device__ doublecomplexoperator-= (doublecomplex &a, const doublecomplex &b)
 
double sqnorm (float value)
 
double sqnorm (double value)
 
double sqnorm (doublecomplex value)
 
void setDiagToThreshold (double *diagptr, double thresh)
 
void setDiagToThreshold (float *diagptr, float thresh)
 
void setDiagToThreshold (doublecomplex *diagptr, double thresh)
 

Typedef Documentation

◆ AnormType

template<typename Ftype >
using AnormType = typename std::conditional< std::is_same<Ftype, float>::value, float, typename std::conditional< std::is_same<Ftype, double>::value || std::is_same<Ftype, doublecomplex>::value, double, float >::type >::type

◆ diagFactBufs_type

template<typename Ftype >
using diagFactBufs_type = typename std::conditional< std::is_same<Ftype, double>::value, ddiagFactBufs_t, typename std::conditional< std::is_same<Ftype, float>::value, sdiagFactBufs_t, typename std::conditional< std::is_same<Ftype, doublecomplex>::value, zdiagFactBufs_t, void >::type >::type >::type

◆ LocalLU_type

template<typename Ftype >
using LocalLU_type = typename std::conditional< std::is_same<Ftype, double>::value, dLocalLU_t, typename std::conditional< std::is_same<Ftype, float>::value, sLocalLU_t, typename std::conditional< std::is_same<Ftype, doublecomplex>::value, zLocalLU_t, void >::type >::type >::type

◆ LUStruct_type

template<typename Ftype >
using LUStruct_type = typename std::conditional< std::is_same<Ftype, double>::value, dLUstruct_t, typename std::conditional< std::is_same<Ftype, float>::value, sLUstruct_t, typename std::conditional< std::is_same<Ftype, doublecomplex>::value, zLUstruct_t, void >::type >::type >::type

◆ LUValSubBuf_type

template<typename Ftype >
using LUValSubBuf_type = typename std::conditional< std::is_same<Ftype, double>::value, dLUValSubBuf_t, typename std::conditional< std::is_same<Ftype, float>::value, sLUValSubBuf_t, typename std::conditional< std::is_same<Ftype, doublecomplex>::value, zLUValSubBuf_t, void >::type >::type >::type

◆ threshPivValType

template<typename Ftype >
using threshPivValType = typename std::conditional< std::is_same<Ftype, float>::value, float, typename std::conditional< std::is_same<Ftype, double>::value || std::is_same<Ftype, doublecomplex>::value, double, float >::type >::type

◆ trf3dpartitionType

template<typename Ftype >
using trf3dpartitionType = typename std::conditional< std::is_same<Ftype, double>::value, dtrf3Dpartition_t, typename std::conditional< std::is_same<Ftype, float>::value, strf3Dpartition_t, typename std::conditional< std::is_same<Ftype, doublecomplex>::value, ztrf3Dpartition_t, void >::type >::type >::type

Function Documentation

◆ atomicAddT()

template<typename T >
__device__ T atomicAddT ( T *  address,
val 
)

◆ atomicAddT< double >()

template<>
double atomicAddT< double > ( double *  address,
double  val 
)

◆ atomicAddT< doublecomplex >()

template<>
doublecomplex atomicAddT< doublecomplex > ( doublecomplex address,
doublecomplex  val 
)

◆ atomicAddT< float >()

template<>
float atomicAddT< float > ( float *  address,
float  val 
)

◆ get_mpi_type()

template<typename T >
MPI_Datatype get_mpi_type ( )

◆ get_mpi_type< double >()

template<>
MPI_Datatype get_mpi_type< double > ( )

◆ get_mpi_type< doublecomplex >()

template<>
MPI_Datatype get_mpi_type< doublecomplex > ( )

◆ get_mpi_type< float >()

template<>
MPI_Datatype get_mpi_type< float > ( )

◆ get_mpi_type< int >()

template<>
MPI_Datatype get_mpi_type< int > ( )

◆ one()

template<typename T >
T one ( )
Here is the caller graph for this function:

◆ one< double >()

template<>
double one< double > ( )

◆ one< doublecomplex >()

template<>
doublecomplex one< doublecomplex > ( )

◆ one< float >()

template<>
float one< float > ( )

◆ operator*=()

__host__ __device__ doublecomplex & operator*= ( doublecomplex a,
const doublecomplex b 
)

◆ operator-() [1/2]

__host__ __device__ doublecomplex operator- ( const doublecomplex a)

◆ operator-() [2/2]

__host__ __device__ doublecomplex operator- ( const doublecomplex a,
const doublecomplex b 
)

◆ operator-=()

__host__ __device__ doublecomplex & operator-= ( doublecomplex a,
const doublecomplex b 
)

◆ operator/()

__host__ __device__ doublecomplex operator/ ( const doublecomplex a,
const doublecomplex b 
)

◆ operator==()

__host__ __device__ bool operator== ( const doublecomplex a,
const doublecomplex b 
)

◆ setDiagToThreshold() [1/3]

void setDiagToThreshold ( double *  diagptr,
double  thresh 
)
Here is the caller graph for this function:

◆ setDiagToThreshold() [2/3]

void setDiagToThreshold ( doublecomplex diagptr,
double  thresh 
)

◆ setDiagToThreshold() [3/3]

void setDiagToThreshold ( float *  diagptr,
float  thresh 
)

◆ sqnorm() [1/3]

double sqnorm ( double  value)

◆ sqnorm() [2/3]

double sqnorm ( doublecomplex  value)

◆ sqnorm() [3/3]

double sqnorm ( float  value)
Here is the caller graph for this function:

◆ zeroT()

template<typename T >
T zeroT ( )

◆ zeroT< double >()

template<>
double zeroT< double > ( )

◆ zeroT< doublecomplex >()

template<>
doublecomplex zeroT< doublecomplex > ( )

◆ zeroT< float >()

template<>
float zeroT< float > ( )