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( | ||||
|         "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 | ||||
|   | ||||
| @@ -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:") | ||||
|   | ||||
| @@ -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