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:
parent
24b8d0666e
commit
12866eb0d6
@ -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
|
||||||
|
|
Loading…
Reference in New Issue
Block a user