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.
This commit is contained in:
Kenneth Moreland 2024-10-18 09:25:00 -04:00 committed by GitHub
parent 49a8e84588
commit b9e0914ab2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 89 additions and 0 deletions

View File

@ -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

View File

@ -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

View File

@ -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",