summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenneth Moreland <morelandkd@ornl.gov>2024-10-18 09:25:00 -0400
committerGitHub <noreply@github.com>2024-10-18 07:25:00 -0600
commitb9e0914ab28b5030740115fee32da21eded31963 (patch)
tree8462a781f16e35caa708d7f5302699349186ebe2
parent49a8e8458852ffbca461506a857a382c2a939006 (diff)
downloadspack-b9e0914ab28b5030740115fee32da21eded31963.tar.gz
spack-b9e0914ab28b5030740115fee32da21eded31963.tar.bz2
spack-b9e0914ab28b5030740115fee32da21eded31963.tar.xz
spack-b9e0914ab28b5030740115fee32da21eded31963.zip
vtk-m: Add sycl option to vtk-m package (#46996)
Some unused methods in VTK-m resulted in compile errors. These were not discovered because many compilers ignore unused methods in templated classes, but the SYCL compiler for Aurora gave an error.
-rw-r--r--var/spack/repos/builtin/packages/vtk-m/mr3271-contourtree-print-error.patch38
-rw-r--r--var/spack/repos/builtin/packages/vtk-m/mr3272-bad-mir-table-method.patch35
-rw-r--r--var/spack/repos/builtin/packages/vtk-m/package.py16
3 files changed, 89 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/vtk-m/mr3271-contourtree-print-error.patch b/var/spack/repos/builtin/packages/vtk-m/mr3271-contourtree-print-error.patch
new file mode 100644
index 0000000000..c8943aea9f
--- /dev/null
+++ b/var/spack/repos/builtin/packages/vtk-m/mr3271-contourtree-print-error.patch
@@ -0,0 +1,38 @@
+From 48e385af319543800398656645327243a29babfb Mon Sep 17 00:00:00 2001
+From: Kenneth Moreland <morelandkd@ornl.gov>
+Date: Tue, 15 Oct 2024 12:01:34 -0400
+Subject: [PATCH] Fix compile error for contour tree print
+
+A print for one of the contour tree objects was referencing members of
+itself that don't seem to exist. This causes the Intel compiler to fail
+to compile it. I'm at a loss about how any other compiler does not error
+out, but at any rate this should be correct.
+---
+ .../worklet/contourtree_distributed/HierarchicalContourTree.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/vtkm/filter/scalar_topology/worklet/contourtree_distributed/HierarchicalContourTree.h b/vtkm/filter/scalar_topology/worklet/contourtree_distributed/HierarchicalContourTree.h
+index a996d4292..e40d5f4f1 100644
+--- a/vtkm/filter/scalar_topology/worklet/contourtree_distributed/HierarchicalContourTree.h
++++ b/vtkm/filter/scalar_topology/worklet/contourtree_distributed/HierarchicalContourTree.h
+@@ -663,7 +663,7 @@ std::string HierarchicalContourTree<FieldType>::PrintDotSuperStructure(const cha
+ auto hyperarcsPortal = this->Hyperarcs.ReadPortal();
+ auto regularNodeGlobalIdsPortal = this->RegularNodeGlobalIds.ReadPortal();
+ auto whichIterationPortal = this->WhichIteration.ReadPortal();
+- auto whichRoundPortal = this->whichRound.ReadPortal();
++ auto whichRoundPortal = this->WhichRound.ReadPortal();
+ auto superarcsPortal = this->Superarcs.ReadPortal();
+ auto superparentsPortal = this->Superparents.ReadPortal();
+ for (vtkm::Id supernode = 0; supernode < this->Supernodes.GetNumberOfValues(); supernode++)
+@@ -708,7 +708,7 @@ std::string HierarchicalContourTree<FieldType>::PrintDotSuperStructure(const cha
+ if (contourtree_augmented::NoSuchElement(superarcTo))
+ { // no superarc
+ // if it occurred on the final round, it's the global root and is shown as the NULL node
+- if (whichRoundPortal.Get(superarcFrom) == this->NRounds)
++ if (whichRoundPortal.Get(superarcFrom) == this->NumRounds)
+ { // root node
+ outstream << "\tSN" << std::setw(1) << superarcFrom << " -> SA" << std::setw(1) << superarc
+ << " [label=\"S" << std::setw(1) << superarc << "\",style=dotted]\n";
+--
+2.46.2
+
diff --git a/var/spack/repos/builtin/packages/vtk-m/mr3272-bad-mir-table-method.patch b/var/spack/repos/builtin/packages/vtk-m/mr3272-bad-mir-table-method.patch
new file mode 100644
index 0000000000..cf3987079b
--- /dev/null
+++ b/var/spack/repos/builtin/packages/vtk-m/mr3272-bad-mir-table-method.patch
@@ -0,0 +1,35 @@
+From c805a6039ea500cb96158cfc11271987c9f67aa4 Mon Sep 17 00:00:00 2001
+From: Kenneth Moreland <morelandkd@ornl.gov>
+Date: Tue, 15 Oct 2024 13:06:36 -0400
+Subject: [PATCH] Remove unused method from MIR tables
+
+The implementation of this method was incorrect as it referenced a class
+member that does not exist. Many compilers allowed it in a templated
+class when the method was never used, but other compilers attempt to
+compile the inlined method regardless.
+
+Since the method clearly is not needed, the easy solution is to remove
+it.
+---
+ vtkm/filter/contour/worklet/mir/MIRTables.h | 5 -----
+ 1 file changed, 5 deletions(-)
+
+diff --git a/vtkm/filter/contour/worklet/mir/MIRTables.h b/vtkm/filter/contour/worklet/mir/MIRTables.h
+index 3dff3329e..a6f4d4f1f 100644
+--- a/vtkm/filter/contour/worklet/mir/MIRTables.h
++++ b/vtkm/filter/contour/worklet/mir/MIRTables.h
+@@ -11400,11 +11400,6 @@ public:
+ return FacesLookup[shape];
+ }
+
+- VTKM_EXEC vtkm::UInt8 GetPoint(vtkm::Id pointIndex) const
+- {
+- return this->CellFacePortal.Get(pointIndex);
+- }
+-
+ private:
+ typename vtkm::cont::ArrayHandle<vtkm::UInt8>::ReadPortalType MIRTablesDataPortal;
+ typename vtkm::cont::ArrayHandle<vtkm::UInt16>::ReadPortalType MIRTablesIndicesPortal;
+--
+2.46.2
+
diff --git a/var/spack/repos/builtin/packages/vtk-m/package.py b/var/spack/repos/builtin/packages/vtk-m/package.py
index 737ee3a3a7..6bf7c4203f 100644
--- a/var/spack/repos/builtin/packages/vtk-m/package.py
+++ b/var/spack/repos/builtin/packages/vtk-m/package.py
@@ -85,6 +85,7 @@ class VtkM(CMakePackage, CudaPackage, ROCmPackage):
description="build openmp support",
)
variant("tbb", default=(sys.platform == "darwin"), description="build TBB support")
+ variant("sycl", default=False, description="Build with SYCL backend")
depends_on("cmake@3.12:", type="build") # CMake >= 3.12
depends_on("cmake@3.18:", when="+rocm", type="build") # CMake >= 3.18
@@ -132,6 +133,13 @@ class VtkM(CMakePackage, CudaPackage, ROCmPackage):
conflicts("+rocm", when="~kokkos", msg="VTK-m does not support HIP without Kokkos")
conflicts("+rocm", when="+virtuals", msg="VTK-m does not support virtual functions with ROCm")
+ # VTK-m uses the Kokkos SYCL backend.
+ # If Kokkos provides multiple backends, the SYCL backend may or
+ # may not be used for VTK-m depending on the default selected by Kokkos
+ depends_on("kokkos +sycl", when="+kokkos +sycl")
+
+ conflicts("+sycl", when="~kokkos", msg="VTK-m does not support SYCL without Kokkos")
+
# Can build +shared+cuda after @1.7:
conflicts("+shared", when="@:1.6 +cuda_native")
conflicts("+cuda~cuda_native~kokkos", msg="Cannot have +cuda without a cuda device")
@@ -162,6 +170,14 @@ class VtkM(CMakePackage, CudaPackage, ROCmPackage):
# https://gitlab.kitware.com/vtk/vtk-m/-/merge_requests/3259
patch("mr3259-thrust-is_arithmetic-fix.patch", when="@2.0.0:2.2.0 +cuda ^cuda@12.6:")
+ # VTK-m PR#3271
+ # https://gitlab.kitware.com/vtk/vtk-m/-/merge_requests/3271
+ patch("mr3271-contourtree-print-error.patch", when="@2.0:2.2")
+
+ # VTK-m PR#3272
+ # https://gitlab.kitware.com/vtk/vtk-m/-/merge_requests/3272
+ patch("mr3272-bad-mir-table-method.patch", when="@2.0:2.2")
+
# Disable Thrust patch that is no longer needed in modern Thrust
patch(
"https://github.com/Kitware/VTK-m/commit/4a4466e7c8cd44d2be2bd3fe6f359faa8e9547aa.patch?full_index=1",