diff --git a/vtkm/cont/BoundingIntervalHierarchy.h b/vtkm/cont/BoundingIntervalHierarchy.h index f29ca3133..5968c2a56 100644 --- a/vtkm/cont/BoundingIntervalHierarchy.h +++ b/vtkm/cont/BoundingIntervalHierarchy.h @@ -693,24 +693,24 @@ private: vtkm::cont::CoordinateSystem coords = Self->GetCoords(); vtkm::cont::ArrayHandleVirtualCoordinates points = coords.GetData(); - std::cout << "No of cells: " << numCells << "\n"; - std::cout.precision(3); - START_TIMER(s11); + //std::cout << "No of cells: " << numCells << "\n"; + //std::cout.precision(3); + //START_TIMER(s11); IdArrayHandle cellIds; Algorithms::Copy(CountingIdArrayHandle(0, 1, numCells), cellIds); IdArrayHandle segmentIds; Algorithms::Copy(vtkm::cont::ArrayHandleConstant(0, numCells), segmentIds); - PRINT_TIMER("1.1", s11); + //PRINT_TIMER("1.1", s11); - START_TIMER(s12); + //START_TIMER(s12); CoordsArrayHandle centerXs, centerYs, centerZs; RangeArrayHandle xRanges, yRanges, zRanges; vtkm::worklet::DispatcherMapTopology().Invoke( cellSet, points, xRanges, yRanges, zRanges, centerXs, centerYs, centerZs); - PRINT_TIMER("1.2", s12); + //PRINT_TIMER("1.2", s12); bool done = false; - vtkm::IdComponent iteration = 0; + //vtkm::IdComponent iteration = 0; vtkm::Id nodesIndexOffset = 0; vtkm::Id numSegments = 1; IdArrayHandle discardKeys; @@ -723,24 +723,24 @@ private: while (!done) { - std::cout << "**** Iteration " << (++iteration) << " ****\n"; + //std::cout << "**** Iteration " << (++iteration) << " ****\n"; Timer iterationTimer; //Output(segmentSizes); - START_TIMER(s21); + //START_TIMER(s21); // Calculate the X, Y, Z bounding ranges for each segment RangeArrayHandle perSegmentXRanges, perSegmentYRanges, perSegmentZRanges; Algorithms::ReduceByKey(segmentIds, xRanges, discardKeys, perSegmentXRanges, vtkm::Add()); Algorithms::ReduceByKey(segmentIds, yRanges, discardKeys, perSegmentYRanges, vtkm::Add()); Algorithms::ReduceByKey(segmentIds, zRanges, discardKeys, perSegmentZRanges, vtkm::Add()); - PRINT_TIMER("2.1", s21); + //PRINT_TIMER("2.1", s21); // Expand the per segment bounding ranges, to per cell; RangePermutationArrayHandle segmentXRanges(segmentIds, perSegmentXRanges); RangePermutationArrayHandle segmentYRanges(segmentIds, perSegmentYRanges); RangePermutationArrayHandle segmentZRanges(segmentIds, perSegmentZRanges); - START_TIMER(s22); + //START_TIMER(s22); // Calculate split costs for NumPlanes split planes, across X, Y and Z dimensions vtkm::Id numSplitPlanes = numSegments * (Self->NumPlanes + 1); vtkm::cont::ArrayHandle xSplits, ySplits, zSplits; @@ -753,9 +753,9 @@ private: segmentYRanges, yRanges, centerYs, segmentIds, ySplits, DeviceAdapter()); Self->CalculateSplitCosts( segmentZRanges, zRanges, centerZs, segmentIds, zSplits, DeviceAdapter()); - PRINT_TIMER("2.2", s22); + //PRINT_TIMER("2.2", s22); - START_TIMER(s23); + //START_TIMER(s23); // Select best split plane and dimension across X, Y, Z dimension, per segment SplitArrayHandle segmentSplits; vtkm::cont::ArrayHandle segmentPlanes; @@ -771,28 +771,28 @@ private: segmentSplits, segmentPlanes, splitChoices); - PRINT_TIMER("2.3", s23); + //PRINT_TIMER("2.3", s23); // Expand the per segment split plane to per cell SplitPermutationArrayHandle splits(segmentIds, segmentSplits); CoordsPermutationArrayHandle planes(segmentIds, segmentPlanes); - START_TIMER(s31); + //START_TIMER(s31); IdArrayHandle leqFlags; vtkm::worklet::DispatcherMapField computeFlagDispatcher; computeFlagDispatcher.Invoke(centerXs, centerYs, centerZs, splits, planes, leqFlags); - PRINT_TIMER("3.1", s31); + //PRINT_TIMER("3.1", s31); - START_TIMER(s32); + //START_TIMER(s32); IdArrayHandle scatterIndices = Self->CalculateSplitScatterIndices(cellIds, leqFlags, segmentIds, DeviceAdapter()); IdArrayHandle newSegmentIds; IdPermutationArrayHandle sizes(segmentIds, segmentSizes); vtkm::worklet::DispatcherMapField(SegmentSplitter(Self->MaxLeafSize)) .Invoke(segmentIds, leqFlags, sizes, newSegmentIds); - PRINT_TIMER("3.2", s32); + //PRINT_TIMER("3.2", s32); - START_TIMER(s33); + //START_TIMER(s33); vtkm::cont::ArrayHandle choices; Algorithms::Copy(IdPermutationArrayHandle(segmentIds, splitChoices), choices); cellIds = ScatterArray(cellIds, scatterIndices); @@ -805,10 +805,10 @@ private: centerYs = ScatterArray(centerYs, scatterIndices); centerZs = ScatterArray(centerZs, scatterIndices); choices = ScatterArray(choices, scatterIndices); - PRINT_TIMER("3.3", s33); + //PRINT_TIMER("3.3", s33); // Move the cell ids at leafs to the processed cellids list - START_TIMER(s41); + //START_TIMER(s41); IdArrayHandle nonSplitSegmentSizes; vtkm::worklet::DispatcherMapField( NonSplitIndexCalculator(Self->MaxLeafSize)) @@ -817,9 +817,9 @@ private: Algorithms::ScanExclusive(nonSplitSegmentSizes, nonSplitSegmentIndices); IdArrayHandle runningSplitSegmentCounts; Algorithms::ScanExclusive(splitChoices, runningSplitSegmentCounts); - PRINT_TIMER("4.1", s41); + //PRINT_TIMER("4.1", s41); - START_TIMER(s42); + //START_TIMER(s42); IdArrayHandle doneCellIds; Algorithms::CopyIf(cellIds, choices, doneCellIds, Invert()); Algorithms::CopySubRange( @@ -833,9 +833,9 @@ private: centerXs = CopyIfArray(centerXs, choices, DeviceAdapter()); centerYs = CopyIfArray(centerYs, choices, DeviceAdapter()); centerZs = CopyIfArray(centerZs, choices, DeviceAdapter()); - PRINT_TIMER("4.2", s42); + //PRINT_TIMER("4.2", s42); - START_TIMER(s43); + //START_TIMER(s43); // Make a new nodes with enough nodes for the currnt level, copying over the old one vtkm::Id nodesSize = Self->Nodes.GetNumberOfValues() + numSegments; vtkm::cont::ArrayHandle newTree; @@ -854,8 +854,8 @@ private: nodesIndexOffset = nodesSize; cellIdsOffset += doneCellIds.GetNumberOfValues(); Self->Nodes = newTree; - PRINT_TIMER("4.3", s43); - START_TIMER(s51); + //PRINT_TIMER("4.3", s43); + //START_TIMER(s51); segmentIds = newSegmentIds; segmentSizes = Self->CalculateSegmentSizes(segmentIds, segmentIds.GetNumberOfValues()); @@ -866,10 +866,10 @@ private: Algorithms::Unique(uniqueSegmentIds); numSegments = uniqueSegmentIds.GetNumberOfValues(); done = segmentIds.GetNumberOfValues() == 0; - PRINT_TIMER("5.1", s51); - std::cout << "Iteration time: " << iterationTimer.GetElapsedTime() << "\n"; + //PRINT_TIMER("5.1", s51); + //std::cout << "Iteration time: " << iterationTimer.GetElapsedTime() << "\n"; } - std::cout << "Total time: " << totalTimer.GetElapsedTime() << "\n"; + //std::cout << "Total time: " << totalTimer.GetElapsedTime() << "\n"; return true; } }; diff --git a/vtkm/worklet/testing/UnitTestBoundingIntervalHierarchy.cxx b/vtkm/worklet/testing/UnitTestBoundingIntervalHierarchy.cxx index d3056ae4f..8bd2cf041 100644 --- a/vtkm/worklet/testing/UnitTestBoundingIntervalHierarchy.cxx +++ b/vtkm/worklet/testing/UnitTestBoundingIntervalHierarchy.cxx @@ -86,7 +86,7 @@ void TestBoundingIntervalHierarchy(vtkm::cont::DataSet dataSet, vtkm::IdComponen vtkm::cont::ArrayHandle> centroids; vtkm::worklet::DispatcherMapTopology().Invoke( cellSet, vertices, centroids); - std::cout << "Centroids calculation time: " << centroidsTimer.GetElapsedTime() << "\n"; + //std::cout << "Centroids calculation time: " << centroidsTimer.GetElapsedTime() << "\n"; vtkm::cont::ArrayHandleCounting expectedCellIds(0, 1, cellSet.GetNumberOfCells()); @@ -99,11 +99,6 @@ void TestBoundingIntervalHierarchy(vtkm::cont::DataSet dataSet, vtkm::IdComponen cudaDeviceSetLimit(cudaLimitStackSize, 1024 * 200); #endif - /*vtkm::cont::DeviceAdapterId deviceId = vtkm::cont::DeviceAdapterTraits::GetId(); - std::unique_ptr temp = bih.PrepareForExecution(deviceId); - vtkm::exec::BoundingIntervalHierarchyExec& bihExec - = dynamic_cast&>(*temp);*/ - vtkm::worklet::DispatcherMapField().Invoke( centroids, bih, expectedCellIds, results); @@ -117,17 +112,7 @@ void TestBoundingIntervalHierarchy(vtkm::cont::DataSet dataSet, vtkm::IdComponen std::cout << "Average interpolation rate: " << (static_cast(results.GetNumberOfValues()) / timeDiff) << "\n"; std::cout << "No of diffs: " << numDiffs << "\n"; -} - -vtkm::cont::DataSet LoadFromFile(const char* file) -{ - vtkm::io::reader::VTKDataSetReader reader(file); - return reader.ReadDataSet(); -} - -void TestBoundingIntervalHierarchyFromFile(const char* file, vtkm::IdComponent numPlanes) -{ - TestBoundingIntervalHierarchy(LoadFromFile(file), numPlanes); + VTKM_TEST_ASSERT(numDiffs == 0, "Calculated cell Ids not the same as expected cell Ids"); } void RunTest() @@ -136,10 +121,6 @@ void RunTest() TestBoundingIntervalHierarchy(ConstructDataSet(145), 4); TestBoundingIntervalHierarchy(ConstructDataSet(145), 6); TestBoundingIntervalHierarchy(ConstructDataSet(145), 9); - TestBoundingIntervalHierarchyFromFile("buoyancy.vtk", 3); - TestBoundingIntervalHierarchyFromFile("buoyancy.vtk", 4); - TestBoundingIntervalHierarchyFromFile("buoyancy.vtk", 6); - TestBoundingIntervalHierarchyFromFile("buoyancy.vtk", 9); } } // anonymous namespace