summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris White <white238@llnl.gov>2024-06-17 18:37:50 -0700
committerGitHub <noreply@github.com>2024-06-17 19:37:50 -0600
commit12866eb0d6fc0bc5ecc9ef0648e0b9144f5267b0 (patch)
treeb1145f10aa1554c0fe14b406d61cd129dd3d8865
parent24b8d0666e4a43aab26981e98f06b72b34e658a8 (diff)
downloadspack-12866eb0d6fc0bc5ecc9ef0648e0b9144f5267b0.tar.gz
spack-12866eb0d6fc0bc5ecc9ef0648e0b9144f5267b0.tar.bz2
spack-12866eb0d6fc0bc5ecc9ef0648e0b9144f5267b0.tar.xz
spack-12866eb0d6fc0bc5ecc9ef0648e0b9144f5267b0.zip
ascent: add v0.9.3 (#44571)
* add new ascent version * add requirement for new version of umpire/raja * add patch for vtk-m dependency
-rw-r--r--var/spack/repos/builtin/packages/ascent/package.py28
-rw-r--r--var/spack/repos/builtin/packages/vtk-m/package.py4
-rw-r--r--var/spack/repos/builtin/packages/vtk-m/vtkm-mr3215-ext-geom-fix.patch145
3 files changed, 169 insertions, 8 deletions
diff --git a/var/spack/repos/builtin/packages/ascent/package.py b/var/spack/repos/builtin/packages/ascent/package.py
index 17c5604033..d4e7d674aa 100644
--- a/var/spack/repos/builtin/packages/ascent/package.py
+++ b/var/spack/repos/builtin/packages/ascent/package.py
@@ -55,14 +55,18 @@ class Ascent(CMakePackage, CudaPackage):
version("develop", branch="develop", submodules=True)
version(
- "0.9.2",
- tag="v0.9.2",
- commit="b842516d12640e4a0d9433a18c7249440ef6fc3d",
+ "0.9.3",
+ tag="v0.9.3",
+ commit="e69d6ec77938846caae8fea7ed988b1151ac9b81",
submodules=True,
preferred=True,
)
version(
+ "0.9.2", tag="v0.9.2", commit="b842516d12640e4a0d9433a18c7249440ef6fc3d", submodules=True
+ )
+
+ version(
"0.9.1", tag="v0.9.1", commit="027a2fe184f65a4923817a8cdfed0b0c61c2c75a", submodules=True
)
@@ -155,6 +159,7 @@ class Ascent(CMakePackage, CudaPackage):
depends_on("conduit@:0.7.2", when="@:0.7.1")
depends_on("conduit@0.8.2:", when="@0.8:")
depends_on("conduit@0.8.6:", when="@0.9:")
+ depends_on("conduit@0.9.1:", when="@0.9.3:")
depends_on("conduit+python", when="+python")
depends_on("conduit~python", when="~python")
depends_on("conduit+mpi", when="+mpi")
@@ -183,12 +188,18 @@ class Ascent(CMakePackage, CudaPackage):
#######################
# RAJA and Umpire
+ # Note: Let RAJA/Umpire handle the Camp version constraints
#######################
- depends_on("raja", when="+raja")
- depends_on("raja+openmp", when="+raja +openmp")
- depends_on("raja~openmp", when="+raja ~openmp")
- depends_on("umpire", when="+umpire")
- depends_on("umpire@:2023.06.0", when="@:0.9.2 +umpire")
+ with when("+raja"):
+ depends_on("raja")
+ depends_on("raja@2024.02.1:", when="@0.9.3:")
+ depends_on("raja+openmp", when="+openmp")
+ depends_on("raja~openmp", when="~openmp")
+
+ with when("+umpire"):
+ depends_on("umpire")
+ depends_on("umpire@:2023.06.0", when="@:0.9.2")
+ depends_on("umpire@2024.02.1:", when="@0.9.3:")
#######################
# BabelFlow
@@ -215,6 +226,7 @@ class Ascent(CMakePackage, CudaPackage):
depends_on("vtk-m~shared+fpic", when="@0.8.0: ~shared")
# Ascent defaults to C++11
depends_on("kokkos cxxstd=11", when="+vtkh ^vtk-m +kokkos")
+ depends_on("kokkos@3.7.02", when="@0.9.3: +vtkh ^vtk-m +kokkos")
#######################
# VTK-h
diff --git a/var/spack/repos/builtin/packages/vtk-m/package.py b/var/spack/repos/builtin/packages/vtk-m/package.py
index 6c7e3cda9d..2f5c868374 100644
--- a/var/spack/repos/builtin/packages/vtk-m/package.py
+++ b/var/spack/repos/builtin/packages/vtk-m/package.py
@@ -139,6 +139,10 @@ class VtkM(CMakePackage, CudaPackage, ROCmPackage):
# Patch
patch("diy-include-cstddef.patch", when="@1.5.3:1.8.0")
+ # VTK-M PR#3215
+ # https://gitlab.kitware.com/vtk/vtk-m/-/merge_requests/3215
+ patch("vtkm-mr3215-ext-geom-fix.patch", when="@2.1")
+
# VTK-M PR#2972
# https://gitlab.kitware.com/vtk/vtk-m/-/merge_requests/2972
patch("vtkm-cuda-swap-conflict-pr2972.patch", when="@1.9 +cuda ^cuda@12:")
diff --git a/var/spack/repos/builtin/packages/vtk-m/vtkm-mr3215-ext-geom-fix.patch b/var/spack/repos/builtin/packages/vtk-m/vtkm-mr3215-ext-geom-fix.patch
new file mode 100644
index 0000000000..ed82e5630e
--- /dev/null
+++ b/var/spack/repos/builtin/packages/vtk-m/vtkm-mr3215-ext-geom-fix.patch
@@ -0,0 +1,145 @@
+From 49518e5054c607942f644c82a5289e12b0f50476 Mon Sep 17 00:00:00 2001
+From: Kenneth Moreland <morelandkd@ornl.gov>
+Date: Fri, 3 May 2024 09:22:56 -0400
+Subject: [PATCH] Fix bug with ExtractGeometry filter
+
+The `ExtractGeometry` filter was outputing datasets containing
+`CellSetPermutation` as the representation for the cells. Although this is
+technically correct and a very fast implementation, it is essentially
+useless. The problem is that any downstream processing will have to know
+that the data has a `CellSetPermutation`. None do (because the permutation
+can be on any other cell set type, which creates an explosion of possible
+cell types).
+
+Like was done with `Threshold` a while ago, this problem is fixed by deep
+copying the result into a `CellSetExplicit`. This behavior is consistent
+with VTK.
+---
+ .../changelog/extract-geometry-permutation.md | 13 +++++++
+ .../testing/UnitTestExtractGeometryFilter.cxx | 13 ++++++-
+ .../worklet/ExtractGeometry.h | 34 +++++++------------
+ 3 files changed, 37 insertions(+), 23 deletions(-)
+ create mode 100644 docs/changelog/extract-geometry-permutation.md
+
+diff --git a/docs/changelog/extract-geometry-permutation.md b/docs/changelog/extract-geometry-permutation.md
+new file mode 100644
+index 0000000000..8a90495f76
+--- /dev/null
++++ b/docs/changelog/extract-geometry-permutation.md
+@@ -0,0 +1,13 @@
++# Fix bug with ExtractGeometry filter
++
++The `ExtractGeometry` filter was outputing datasets containing
++`CellSetPermutation` as the representation for the cells. Although this is
++technically correct and a very fast implementation, it is essentially
++useless. The problem is that any downstream processing will have to know
++that the data has a `CellSetPermutation`. None do (because the permutation
++can be on any other cell set type, which creates an explosion of possible
++cell types).
++
++Like was done with `Threshold` a while ago, this problem is fixed by deep
++copying the result into a `CellSetExplicit`. This behavior is consistent
++with VTK.
+diff --git a/vtkm/filter/entity_extraction/testing/UnitTestExtractGeometryFilter.cxx b/vtkm/filter/entity_extraction/testing/UnitTestExtractGeometryFilter.cxx
+index 675df8f77c..14de333666 100644
+--- a/vtkm/filter/entity_extraction/testing/UnitTestExtractGeometryFilter.cxx
++++ b/vtkm/filter/entity_extraction/testing/UnitTestExtractGeometryFilter.cxx
+@@ -11,6 +11,7 @@
+ #include <vtkm/cont/testing/MakeTestDataSet.h>
+ #include <vtkm/cont/testing/Testing.h>
+
++#include <vtkm/filter/clean_grid/CleanGrid.h>
+ #include <vtkm/filter/entity_extraction/ExtractGeometry.h>
+
+ using vtkm::cont::testing::MakeTestDataSet;
+@@ -41,11 +42,21 @@ public:
+ vtkm::cont::DataSet output = extractGeometry.Execute(dataset);
+ VTKM_TEST_ASSERT(test_equal(output.GetNumberOfCells(), 8), "Wrong result for ExtractGeometry");
+
++ vtkm::filter::clean_grid::CleanGrid cleanGrid;
++ cleanGrid.SetCompactPointFields(true);
++ cleanGrid.SetMergePoints(false);
++ vtkm::cont::DataSet cleanOutput = cleanGrid.Execute(output);
++
+ vtkm::cont::ArrayHandle<vtkm::Float32> outCellData;
+- output.GetField("cellvar").GetData().AsArrayHandle(outCellData);
++ cleanOutput.GetField("cellvar").GetData().AsArrayHandle(outCellData);
+
+ VTKM_TEST_ASSERT(outCellData.ReadPortal().Get(0) == 21.f, "Wrong cell field data");
+ VTKM_TEST_ASSERT(outCellData.ReadPortal().Get(7) == 42.f, "Wrong cell field data");
++
++ vtkm::cont::ArrayHandle<vtkm::Float32> outPointData;
++ cleanOutput.GetField("pointvar").GetData().AsArrayHandle(outPointData);
++ VTKM_TEST_ASSERT(outPointData.ReadPortal().Get(0) == 99);
++ VTKM_TEST_ASSERT(outPointData.ReadPortal().Get(7) == 90);
+ }
+
+ static void TestUniformByBox1()
+diff --git a/vtkm/filter/entity_extraction/worklet/ExtractGeometry.h b/vtkm/filter/entity_extraction/worklet/ExtractGeometry.h
+index 97521335f2..449d7eae60 100644
+--- a/vtkm/filter/entity_extraction/worklet/ExtractGeometry.h
++++ b/vtkm/filter/entity_extraction/worklet/ExtractGeometry.h
+@@ -10,11 +10,13 @@
+ #ifndef vtkm_m_worklet_ExtractGeometry_h
+ #define vtkm_m_worklet_ExtractGeometry_h
+
++#include <vtkm/worklet/CellDeepCopy.h>
+ #include <vtkm/worklet/WorkletMapTopology.h>
+
+ #include <vtkm/cont/Algorithm.h>
+ #include <vtkm/cont/ArrayCopy.h>
+ #include <vtkm/cont/ArrayHandle.h>
++#include <vtkm/cont/CellSetExplicit.h>
+ #include <vtkm/cont/CellSetPermutation.h>
+ #include <vtkm/cont/CoordinateSystem.h>
+ #include <vtkm/cont/Invoker.h>
+@@ -114,28 +116,13 @@ public:
+ }
+ };
+
+- ////////////////////////////////////////////////////////////////////////////////////
+- // Extract cells by ids permutes input data
+- template <typename CellSetType>
+- vtkm::cont::CellSetPermutation<CellSetType> Run(const CellSetType& cellSet,
+- const vtkm::cont::ArrayHandle<vtkm::Id>& cellIds)
+- {
+- using OutputType = vtkm::cont::CellSetPermutation<CellSetType>;
+-
+- vtkm::cont::ArrayCopy(cellIds, this->ValidCellIds);
+-
+- return OutputType(this->ValidCellIds, cellSet);
+- }
+-
+- ////////////////////////////////////////////////////////////////////////////////////
+- // Extract cells by implicit function permutes input data
+ template <typename CellSetType, typename ImplicitFunction>
+- vtkm::cont::CellSetPermutation<CellSetType> Run(const CellSetType& cellSet,
+- const vtkm::cont::CoordinateSystem& coordinates,
+- const ImplicitFunction& implicitFunction,
+- bool extractInside,
+- bool extractBoundaryCells,
+- bool extractOnlyBoundaryCells)
++ vtkm::cont::CellSetExplicit<> Run(const CellSetType& cellSet,
++ const vtkm::cont::CoordinateSystem& coordinates,
++ const ImplicitFunction& implicitFunction,
++ bool extractInside,
++ bool extractBoundaryCells,
++ bool extractOnlyBoundaryCells)
+ {
+ // Worklet output will be a boolean passFlag array
+ vtkm::cont::ArrayHandle<bool> passFlags;
+@@ -149,7 +136,10 @@ public:
+ vtkm::cont::Algorithm::CopyIf(indices, passFlags, this->ValidCellIds);
+
+ // generate the cellset
+- return vtkm::cont::CellSetPermutation<CellSetType>(this->ValidCellIds, cellSet);
++ vtkm::cont::CellSetPermutation<CellSetType> permutedCellSet(this->ValidCellIds, cellSet);
++
++ vtkm::cont::CellSetExplicit<> outputCells;
++ return vtkm::worklet::CellDeepCopy::Run(permutedCellSet);
+ }
+
+ vtkm::cont::ArrayHandle<vtkm::Id> GetValidCellIds() const { return this->ValidCellIds; }
+--
+GitLab
+