Tpetra parallel linear algebra Version of the Day
Loading...
Searching...
No Matches
TpetraExt_MatrixMatrix.cpp
1// @HEADER
2// *****************************************************************************
3// Tpetra: Templated Linear Algebra Services Package
4//
5// Copyright 2008 NTESS and the Tpetra contributors.
6// SPDX-License-Identifier: BSD-3-Clause
7// *****************************************************************************
8// @HEADER
9
10#include "TpetraExt_MatrixMatrix.hpp"
11
12#ifdef HAVE_TPETRA_EXPLICIT_INSTANTIATION
13
14#include "TpetraCore_ETIHelperMacros.h"
16
17namespace Tpetra {
18
19 TPETRA_ETI_MANGLING_TYPEDEFS()
20
21 TPETRA_INSTANTIATE_SLGN(TPETRA_MATRIXMATRIX_INSTANT)
22
23 // Zoltan2 wants Scalar = int (Bug 6298).
24 // This is already covered above for the GO = int case.
25 //
26 // FIXME (mfh 07 Oct 2015) I'm hand-rolling this for now.
27 // It would be better to let CMake do the ETI generation,
28 // as with CrsMatrix.
29
30 // NOTE: The Zoltan2 adaptation stuff only gets engaged for full ETI.
31 // If we're doing reduced ETI, we disable all of this
32
33#ifndef HAVE_TPETRA_REDUCED_ETI
34
35#ifdef HAVE_TPETRA_INST_INT_LONG
36#ifdef HAVE_TPETRA_INST_LONG_DOUBLE
37#define TPETRA_MATRIXMATRIX_INSTANT_SC_LONG_DOUBLE_LO_INT_GO_LONG( NT ) \
38 TPETRA_MATRIXMATRIX_INSTANT( longdouble, int, long, NT )
39
40 TPETRA_INSTANTIATE_N(TPETRA_MATRIXMATRIX_INSTANT_SC_LONG_DOUBLE_LO_INT_GO_LONG)
41#else
42#define TPETRA_MATRIXMATRIX_INSTANT_SC_INT_LO_INT_GO_LONG( NT ) \
43 TPETRA_MATRIXMATRIX_INSTANT( int, int, long, NT )
44
45 TPETRA_INSTANTIATE_N(TPETRA_MATRIXMATRIX_INSTANT_SC_INT_LO_INT_GO_LONG)
46#endif //HAVE_TPETRA_INST_LONG_DOUBLE
47#endif // HAVE_TPETRA_INST_INT_LONG
48
49#ifdef HAVE_TPETRA_INST_INT_LONG_LONG
50#ifdef HAVE_TPETRA_INST_LONG_DOUBLE
51#define TPETRA_MATRIXMATRIX_INSTANT_SC_LONG_DOUBLE_LO_INT_GO_LONG_LONG( NT ) \
52 TPETRA_MATRIXMATRIX_INSTANT( longdouble, int, longlong, NT )
53
54 TPETRA_INSTANTIATE_N(TPETRA_MATRIXMATRIX_INSTANT_SC_LONG_DOUBLE_LO_INT_GO_LONG_LONG)
55#else
56#define TPETRA_MATRIXMATRIX_INSTANT_SC_INT_LO_INT_GO_LONG_LONG( NT ) \
57 TPETRA_MATRIXMATRIX_INSTANT( int, int, longlong, NT )
58
59 TPETRA_INSTANTIATE_N(TPETRA_MATRIXMATRIX_INSTANT_SC_INT_LO_INT_GO_LONG_LONG)
60#endif //HAVE_TPETRA_INST_LONG_DOUBLE
61#endif // HAVE_TPETRA_INST_INT_LONG_LONG
62
63#ifdef HAVE_TPETRA_INST_INT_UNSIGNED
64#ifdef HAVE_TPETRA_INST_LONG_DOUBLE
65#define TPETRA_MATRIXMATRIX_INSTANT_SC_LONG_DOUBLE_LO_INT_GO_UNSIGNED( NT ) \
66 TPETRA_MATRIXMATRIX_INSTANT( longdouble, int, unsigned, NT )
67
68 TPETRA_INSTANTIATE_N(TPETRA_MATRIXMATRIX_INSTANT_SC_LONG_DOUBLE_LO_INT_GO_UNSIGNED)
69#else
70#define TPETRA_MATRIXMATRIX_INSTANT_SC_INT_LO_INT_GO_UNSIGNED( NT ) \
71 TPETRA_MATRIXMATRIX_INSTANT( int, int, unsigned, NT )
72
73 TPETRA_INSTANTIATE_N(TPETRA_MATRIXMATRIX_INSTANT_SC_INT_LO_INT_GO_UNSIGNED)
74#endif //HAVE_TPETRA_INST_LONG_DOUBLE
75#endif // HAVE_TPETRA_INST_INT_UNSIGNED
76
77#ifdef HAVE_TPETRA_INST_INT_UNSIGNED_LONG
78#ifdef HAVE_TPETRA_INST_LONG_DOUBLE
79#define TPETRA_MATRIXMATRIX_INSTANT_SC_LONG_DOUBLE_LO_INT_GO_UNSIGNED_LONG( NT ) \
80 TPETRA_MATRIXMATRIX_INSTANT( longdouble, int, unsignedlong, NT )
81
82 TPETRA_INSTANTIATE_N(TPETRA_MATRIXMATRIX_INSTANT_SC_LONG_DOUBLE_LO_INT_GO_UNSIGNED_LONG)
83#else
84#define TPETRA_MATRIXMATRIX_INSTANT_SC_INT_LO_INT_GO_UNSIGNED_LONG( NT ) \
85 TPETRA_MATRIXMATRIX_INSTANT( int, int, unsignedlong, NT )
86
87 TPETRA_INSTANTIATE_N(TPETRA_MATRIXMATRIX_INSTANT_SC_INT_LO_INT_GO_UNSIGNED_LONG)
88#endif //HAVE_TPETRA_INST_LONG_DOUBLE
89#endif // HAVE_TPETRA_INST_INT_UNSIGNED_LONG
90
91#endif // HAVE_TPETRA_REDUCED_ETI
92
93} // namespace Tpetra
94
95#endif // HAVE_TPETRA_EXPLICIT_INSTANTIATION
Namespace Tpetra contains the class and methods constituting the Tpetra library.