]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Mark ArraView::data access only has device-callable for MemorySpace::Default
authorDaniel Arndt <arndtd@ornl.gov>
Thu, 3 Apr 2025 19:02:18 +0000 (15:02 -0400)
committerDaniel Arndt <arndtd@ornl.gov>
Thu, 3 Apr 2025 19:02:18 +0000 (15:02 -0400)
include/deal.II/base/array_view.h

index 010e6b7a2b65721a5198a6f55a3b706c5b5a2a0a..0e187c3449634b43a19d4efe8366e72940b5150f 100644 (file)
@@ -431,7 +431,15 @@ public:
    * Return a pointer to the underlying array serving as element storage.
    * In case the container is empty a nullptr is returned.
    */
-  DEAL_II_HOST_DEVICE value_type *
+  template <typename Dummy = MemorySpaceType>
+  DEAL_II_HOST_DEVICE
+    std::enable_if_t<std::is_same_v<Dummy, dealii::MemorySpace::Default>,
+                     value_type *>
+    data() const noexcept;
+
+  template <typename Dummy = MemorySpaceType>
+  std::enable_if_t<std::is_same_v<Dummy, dealii::MemorySpace::Host>,
+                   value_type *>
   data() const noexcept;
 
   /**
@@ -661,9 +669,26 @@ ArrayView<ElementType, MemorySpaceType>::operator!=(
 
 
 template <typename ElementType, typename MemorySpaceType>
-inline DEAL_II_HOST_DEVICE
-  typename ArrayView<ElementType, MemorySpaceType>::value_type *
-  ArrayView<ElementType, MemorySpaceType>::data() const noexcept
+template <typename Dummy>
+inline DEAL_II_HOST_DEVICE std::enable_if_t<
+  std::is_same_v<Dummy, dealii::MemorySpace::Default>,
+  typename ArrayView<ElementType, MemorySpaceType>::value_type *>
+ArrayView<ElementType, MemorySpaceType>::data() const noexcept
+{
+  if (n_elements == 0)
+    return nullptr;
+  else
+    return starting_element;
+}
+
+
+
+template <typename ElementType, typename MemorySpaceType>
+template <typename Dummy>
+inline std::enable_if_t<
+  std::is_same_v<Dummy, dealii::MemorySpace::Host>,
+  typename ArrayView<ElementType, MemorySpaceType>::value_type *>
+ArrayView<ElementType, MemorySpaceType>::data() const noexcept
 {
   if (n_elements == 0)
     return nullptr;

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.