42 #ifndef TPETRA_IMPORTEXPORTDATA_DECL_HPP
43 #define TPETRA_IMPORTEXPORTDATA_DECL_HPP
49 #include "Tpetra_Distributor.hpp"
50 #include "Teuchos_Array.hpp"
51 #include "Teuchos_RCP.hpp"
53 #ifndef DOXYGEN_SHOULD_SKIP_THIS
57 #endif // DOXYGEN_SHOULD_SKIP_THIS
80 template<
class LocalOrdinal,
85 typedef LocalOrdinal local_ordinal_type;
86 typedef GlobalOrdinal global_ordinal_type;
87 typedef Node node_type;
97 const Teuchos::RCP<const map_type>& target);
105 const Teuchos::RCP<const map_type>& target,
106 const Teuchos::RCP<Teuchos::FancyOStream>& out);
114 const Teuchos::RCP<const map_type>& target,
115 const Teuchos::RCP<Teuchos::ParameterList>& plist);
124 const Teuchos::RCP<const map_type>& target,
125 const Teuchos::RCP<Teuchos::FancyOStream>& out,
126 const Teuchos::RCP<Teuchos::ParameterList>& plist);
135 Teuchos::RCP<ImportExportData<LocalOrdinal, GlobalOrdinal, Node> >
reverseClone();
138 const Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> >
source_;
141 const Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> >
target_;
144 Teuchos::RCP<Teuchos::FancyOStream>
out_;
149 using execution_space =
typename Node::device_type::execution_space;
152 #ifdef KOKKOS_ENABLE_CUDA
153 using memory_space =
typename std::conditional<
154 std::is_same<execution_space, Kokkos::Cuda>::value,
156 typename Node::device_type::memory_space>::type;
158 using memory_space =
typename Node::device_type::memory_space;
159 #endif // KOKKOS_ENABLE_CUDA
160 using device_type = Kokkos::Device<execution_space, memory_space>;
257 #endif // TPETRA_IMPORTEXPORTDATA_DECL_HPP
size_t numSameIDs_
Number of initial identical indices.
bool isLocallyComplete_
Is this Export or Import locally complete?
Kokkos::DualView< LocalOrdinal *, device_type > permuteFromLIDs_
Index of source Map LIDs from which to permute.
Forward declaration of Tpetra::ImportExportData.
Teuchos::Array< int > exportPIDs_
Ranks of the processes to which the source object sends data.
Forward declaration of Tpetra::Export.
Kokkos::DualView< LocalOrdinal *, device_type > exportLIDs_
"Outgoing" local indices.
Kokkos::DualView< LocalOrdinal *, device_type > remoteLIDs_
"Incoming" indices.
Forward declaration of Tpetra::Import.
Implementation detail of Import and Export.
Sets up and executes a communication plan for a Tpetra DistObject.
bool verbose_
Whether to print verbose debugging output.
~ImportExportData()=default
Destructor.
Teuchos::RCP< Teuchos::FancyOStream > out_
Output stream for verbose debugging output.
A parallel distribution of indices over processes.
const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > target_
Target Map of the Import or Export.
Distributor distributor_
Object that actually distributes (sends and receives) data.
const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > source_
Source Map of the Import or Export.
Forward declaration of Tpetra::Map.
Kokkos::DualView< LocalOrdinal *, device_type > permuteToLIDs_
Index of target Map LIDs to which to permute.
Teuchos::RCP< ImportExportData< LocalOrdinal, GlobalOrdinal, Node > > reverseClone()
Copy the data, but reverse the direction of the transfer as well as reversing the Distributor...