Tpetra parallel linear algebra  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Tpetra_Details_FixedHashTable_Threads.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 "Tpetra_Details_FixedHashTable_decl.hpp"
11 
12 #if defined(HAVE_TPETRA_EXPLICIT_INSTANTIATION) && defined(KOKKOS_ENABLE_THREADS)
13 
14 #include "TpetraCore_ETIHelperMacros.h"
15 #include "Tpetra_Details_FixedHashTable_def.hpp"
16 
17 namespace Tpetra {
18 namespace Details {
19 
20  TPETRA_ETI_MANGLING_TYPEDEFS()
21 
22  typedef Kokkos::Device<Kokkos::Threads, Kokkos::HostSpace> threads_device_type;
23 
24 #define TPETRA_DETAILS_FIXEDHASHTABLE_INSTANT_PTHREAD( LO, GO ) \
25  TPETRA_DETAILS_FIXEDHASHTABLE_INSTANT( LO, GO, threads_device_type )
26 
27  TPETRA_INSTANTIATE_LG( TPETRA_DETAILS_FIXEDHASHTABLE_INSTANT_PTHREAD )
28 
29  // mfh 26 Sep 2015: Make sure that the {KeyType = LO, ValueType =
30  // LO} and {KeyType = int, ValueType = LO} specializations get
31  // built, since Directory needs them.
32 
33  // KeyType = int doesn't get built if GO = int is disabled.
34 #ifndef HAVE_TPETRA_INST_INT_INT
35 # define TPETRA_DETAILS_FIXEDHASHTABLE_INSTANT_PTHREAD_INT( LO ) \
36  TPETRA_DETAILS_FIXEDHASHTABLE_INSTANT( LO, int, threads_device_type )
37 
38  TPETRA_INSTANTIATE_L( TPETRA_DETAILS_FIXEDHASHTABLE_INSTANT_PTHREAD_INT )
39 
40  // FIXME (mfh 26 Sep 2015) Once it becomes possible to disable LO =
41  // int, add an instantiation here for {KeyType = LO, ValueType =
42  // LO}. However, this case has likely already been covered above,
43  // since disabling LO = int leaves LO = GO = long or long long as
44  // the most reasonable options. (It would be silly to use LO = long
45  // and GO = long long if sizeof(long) = sizeof(long long).)
46 
47 #endif // HAVE_TPETRA_INST_INT_INT
48 
49 } // namespace Details
50 } // namespace Tpetra
51 
52 #endif // defined(HAVE_TPETRA_EXPLICIT_INSTANTIATION) && defined(KOKKOS_ENABLE_THREADS)