mirror of
https://gitlab.kitware.com/vtk/vtk-m
synced 2024-09-08 13:23:51 +00:00
Speed up bounding interval hierarchy test.
This commit is contained in:
parent
bdc73333c9
commit
be2ad7dd4b
@ -62,45 +62,28 @@ vtkm::cont::DataSet ConstructDataSet(vtkm::Id size)
|
||||
|
||||
void TestBoundingIntervalHierarchy(vtkm::cont::DataSet dataSet, vtkm::IdComponent numPlanes)
|
||||
{
|
||||
using Timer = vtkm::cont::Timer;
|
||||
|
||||
vtkm::cont::DynamicCellSet cellSet = dataSet.GetCellSet();
|
||||
auto vertices = dataSet.GetCoordinateSystem().GetDataAsMultiplexer();
|
||||
|
||||
std::cout << "Using numPlanes: " << numPlanes << "\n";
|
||||
std::cout << "Building Bounding Interval Hierarchy Tree" << std::endl;
|
||||
vtkm::cont::CellLocatorBoundingIntervalHierarchy bih =
|
||||
vtkm::cont::CellLocatorBoundingIntervalHierarchy(numPlanes, 5);
|
||||
bih.SetCellSet(cellSet);
|
||||
bih.SetCoordinates(dataSet.GetCoordinateSystem());
|
||||
bih.Update();
|
||||
std::cout << "Built Bounding Interval Hierarchy Tree" << std::endl;
|
||||
|
||||
Timer centroidsTimer;
|
||||
centroidsTimer.Start();
|
||||
vtkm::cont::ArrayHandle<vtkm::Vec3f> centroids;
|
||||
vtkm::worklet::DispatcherMapTopology<CellCentroidCalculator>().Invoke(
|
||||
cellSet, vertices, centroids);
|
||||
centroidsTimer.Stop();
|
||||
std::cout << "Centroids calculation time: " << centroidsTimer.GetElapsedTime() << "\n";
|
||||
|
||||
|
||||
vtkm::cont::ArrayHandleCounting<vtkm::Id> expectedCellIds(0, 1, cellSet.GetNumberOfCells());
|
||||
|
||||
Timer interpolationTimer;
|
||||
interpolationTimer.Start();
|
||||
vtkm::cont::ArrayHandle<vtkm::IdComponent> results;
|
||||
|
||||
vtkm::worklet::DispatcherMapField<BoundingIntervalHierarchyTester>().Invoke(
|
||||
centroids, bih, expectedCellIds, results);
|
||||
|
||||
vtkm::Id numDiffs = vtkm::cont::Algorithm::Reduce(results, 0, vtkm::Add());
|
||||
interpolationTimer.Stop();
|
||||
vtkm::Float64 timeDiff = interpolationTimer.GetElapsedTime();
|
||||
std::cout << "No of interpolations: " << results.GetNumberOfValues() << "\n";
|
||||
std::cout << "Interpolation time: " << timeDiff << "\n";
|
||||
std::cout << "Average interpolation rate: "
|
||||
<< (static_cast<vtkm::Float64>(results.GetNumberOfValues()) / timeDiff) << "\n";
|
||||
std::cout << "No of diffs: " << numDiffs << "\n";
|
||||
VTKM_TEST_ASSERT(numDiffs == 0, "Calculated cell Ids not the same as expected cell Ids");
|
||||
}
|
||||
|
||||
@ -113,10 +96,10 @@ void RunTest()
|
||||
omp_set_num_threads(std::min(4, omp_get_max_threads()));
|
||||
#endif
|
||||
|
||||
TestBoundingIntervalHierarchy(ConstructDataSet(16), 3);
|
||||
TestBoundingIntervalHierarchy(ConstructDataSet(16), 4);
|
||||
TestBoundingIntervalHierarchy(ConstructDataSet(16), 6);
|
||||
TestBoundingIntervalHierarchy(ConstructDataSet(16), 9);
|
||||
TestBoundingIntervalHierarchy(ConstructDataSet(8), 3);
|
||||
TestBoundingIntervalHierarchy(ConstructDataSet(8), 4);
|
||||
TestBoundingIntervalHierarchy(ConstructDataSet(8), 6);
|
||||
TestBoundingIntervalHierarchy(ConstructDataSet(8), 9);
|
||||
}
|
||||
|
||||
} // anonymous namespace
|
||||
|
Loading…
Reference in New Issue
Block a user