ascent: add v0.9.3 (#44571)
* add new ascent version * add requirement for new version of umpire/raja * add patch for vtk-m dependency
This commit is contained in:
		| @@ -55,13 +55,17 @@ class Ascent(CMakePackage, CudaPackage): | |||||||
|     version("develop", branch="develop", submodules=True) |     version("develop", branch="develop", submodules=True) | ||||||
| 
 | 
 | ||||||
|     version( |     version( | ||||||
|         "0.9.2", |         "0.9.3", | ||||||
|         tag="v0.9.2", |         tag="v0.9.3", | ||||||
|         commit="b842516d12640e4a0d9433a18c7249440ef6fc3d", |         commit="e69d6ec77938846caae8fea7ed988b1151ac9b81", | ||||||
|         submodules=True, |         submodules=True, | ||||||
|         preferred=True, |         preferred=True, | ||||||
|     ) |     ) | ||||||
| 
 | 
 | ||||||
|  |     version( | ||||||
|  |         "0.9.2", tag="v0.9.2", commit="b842516d12640e4a0d9433a18c7249440ef6fc3d", submodules=True | ||||||
|  |     ) | ||||||
|  | 
 | ||||||
|     version( |     version( | ||||||
|         "0.9.1", tag="v0.9.1", commit="027a2fe184f65a4923817a8cdfed0b0c61c2c75a", submodules=True |         "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.7.2", when="@:0.7.1") | ||||||
|     depends_on("conduit@0.8.2:", when="@0.8:") |     depends_on("conduit@0.8.2:", when="@0.8:") | ||||||
|     depends_on("conduit@0.8.6:", when="@0.9:") |     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~python", when="~python") |     depends_on("conduit~python", when="~python") | ||||||
|     depends_on("conduit+mpi", when="+mpi") |     depends_on("conduit+mpi", when="+mpi") | ||||||
| @@ -183,12 +188,18 @@ class Ascent(CMakePackage, CudaPackage): | |||||||
| 
 | 
 | ||||||
|     ####################### |     ####################### | ||||||
|     # RAJA and Umpire |     # RAJA and Umpire | ||||||
|  |     # Note: Let RAJA/Umpire handle the Camp version constraints | ||||||
|     ####################### |     ####################### | ||||||
|     depends_on("raja", when="+raja") |     with when("+raja"): | ||||||
|     depends_on("raja+openmp", when="+raja +openmp") |         depends_on("raja") | ||||||
|     depends_on("raja~openmp", when="+raja ~openmp") |         depends_on("raja@2024.02.1:", when="@0.9.3:") | ||||||
|     depends_on("umpire", when="+umpire") |         depends_on("raja+openmp", when="+openmp") | ||||||
|     depends_on("umpire@:2023.06.0", when="@:0.9.2 +umpire") |         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 |     # BabelFlow | ||||||
| @@ -215,6 +226,7 @@ class Ascent(CMakePackage, CudaPackage): | |||||||
|         depends_on("vtk-m~shared+fpic", when="@0.8.0: ~shared") |         depends_on("vtk-m~shared+fpic", when="@0.8.0: ~shared") | ||||||
|         # Ascent defaults to C++11 |         # Ascent defaults to C++11 | ||||||
|         depends_on("kokkos cxxstd=11", when="+vtkh ^vtk-m +kokkos") |         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 |         # VTK-h | ||||||
|   | |||||||
| @@ -139,6 +139,10 @@ class VtkM(CMakePackage, CudaPackage, ROCmPackage): | |||||||
|     # Patch |     # Patch | ||||||
|     patch("diy-include-cstddef.patch", when="@1.5.3:1.8.0") |     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 |     # VTK-M PR#2972 | ||||||
|     # https://gitlab.kitware.com/vtk/vtk-m/-/merge_requests/2972 |     # https://gitlab.kitware.com/vtk/vtk-m/-/merge_requests/2972 | ||||||
|     patch("vtkm-cuda-swap-conflict-pr2972.patch", when="@1.9 +cuda ^cuda@12:") |     patch("vtkm-cuda-swap-conflict-pr2972.patch", when="@1.9 +cuda ^cuda@12:") | ||||||
|   | |||||||
| @@ -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 | ||||||
|  |  | ||||||
		Reference in New Issue
	
	Block a user
	 Chris White
					Chris White