Tpetra: Make it possible to use a Kokkos::Device or Kokkos execution space in place of Node
Created by: mhoemmen
@trilinos/tpetra #57 depends on this.
- Move Tpetra objects into an inner, hidden namespace.
- Use C++11 type aliases in the Tpetra namespace, so supplying a Kokkos::Device or Kokkos execution space in place of the Node works
For example (default template parameters omitted for brevity):
namespace Tpetra {
namespace Impl {
template<class S, class LO, class GO, class Node>
class MultiVector { /* the actual implementation */ };
} // namespace Impl
template<class S, class LO, class GO, class ExecSpace, class MemSpace>
using MultiVector = Impl::MultiVector<S, LO, GO, Kokkos::Compat::KokkosDeviceWrapperNode<ExecSpace, MemSpace> >;
} // namespace Tpetra