Resolve code review issues, 1. cudaDeviceSetLimit issue, 2. Namespace issue
This commit is contained in:
parent
bf11195da8
commit
37ded1cf69
@ -36,6 +36,7 @@ set(headers
|
||||
FieldHistogram.h
|
||||
FieldStatistics.h
|
||||
Gradient.h
|
||||
KdTree3D.h
|
||||
KernelSplatter.h
|
||||
Keys.h
|
||||
Magnitude.h
|
||||
|
69
vtkm/worklet/KdTree3D.h
Normal file
69
vtkm/worklet/KdTree3D.h
Normal file
@ -0,0 +1,69 @@
|
||||
//============================================================================
|
||||
// Copyright (c) Kitware, Inc.
|
||||
// All rights reserved.
|
||||
// See LICENSE.txt for details.
|
||||
// This software is distributed WITHOUT ANY WARRANTY; without even
|
||||
// the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
// PURPOSE. See the above copyright notice for more information.
|
||||
//
|
||||
// Copyright 2014 Sandia Corporation.
|
||||
// Copyright 2014 UT-Battelle, LLC.
|
||||
// Copyright 2014 Los Alamos National Security.
|
||||
//
|
||||
// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
|
||||
// the U.S. Government retains certain rights in this software.
|
||||
//
|
||||
// Under the terms of Contract DE-AC52-06NA25396 with Los Alamos National
|
||||
// Laboratory (LANL), the U.S. Government retains certain rights in
|
||||
// this software.
|
||||
//============================================================================
|
||||
#ifndef vtkm_m_worklet_KdTree3D_h
|
||||
#define vtkm_m_worklet_KdTree3D_h
|
||||
|
||||
#include <vtkm/worklet/spatialstructure/KdTree3DConstruction.h>
|
||||
#include <vtkm/worklet/spatialstructure/KdTree3DNNSearch.h>
|
||||
|
||||
namespace vtkm
|
||||
{
|
||||
namespace worklet
|
||||
{
|
||||
|
||||
class KdTree3D
|
||||
{
|
||||
public:
|
||||
KdTree3D() {}
|
||||
|
||||
// Execute the 3d kd tree construction given x y z coordinate vectors
|
||||
// Returns:
|
||||
// Leaf Node vector and internal node (split) vectpr
|
||||
template <typename CoordiType, typename TreeIdType, typename DeviceAdapter>
|
||||
void Run(vtkm::cont::ArrayHandle<vtkm::Vec<CoordiType, 3>>& coordi_Handle,
|
||||
vtkm::cont::ArrayHandle<TreeIdType>& pointId_Handle,
|
||||
vtkm::cont::ArrayHandle<TreeIdType>& splitId_Handle,
|
||||
DeviceAdapter device)
|
||||
{
|
||||
vtkm::worklet::spatialstructure::KdTree3DConstruction kdtree3DConstruction;
|
||||
kdtree3DConstruction.Run(coordi_Handle, pointId_Handle, splitId_Handle, device);
|
||||
}
|
||||
|
||||
// Execute the Neaseat Neighbor Search given kdtree and search points
|
||||
// Returns:
|
||||
// Vectors of NN point index and NNpoint distance
|
||||
template <typename CoordiType, typename TreeIdType, typename DeviceAdapter>
|
||||
void Run(vtkm::cont::ArrayHandle<vtkm::Vec<CoordiType, 3>>& coordi_Handle,
|
||||
vtkm::cont::ArrayHandle<TreeIdType>& pointId_Handle,
|
||||
vtkm::cont::ArrayHandle<TreeIdType>& splitId_Handle,
|
||||
vtkm::cont::ArrayHandle<vtkm::Vec<CoordiType, 3>>& qc_Handle,
|
||||
vtkm::cont::ArrayHandle<TreeIdType>& nnId_Handle,
|
||||
vtkm::cont::ArrayHandle<CoordiType>& nnDis_Handle,
|
||||
DeviceAdapter device)
|
||||
{
|
||||
vtkm::worklet::spatialstructure::KdTree3DNNSearch kdtree3DNNS;
|
||||
kdtree3DNNS.Run(
|
||||
coordi_Handle, pointId_Handle, splitId_Handle, qc_Handle, nnId_Handle, nnDis_Handle, device);
|
||||
}
|
||||
};
|
||||
}
|
||||
} // namespace vtkm::worklet
|
||||
|
||||
#endif // vtkm_m_worklet_Kdtree3D_h
|
@ -19,7 +19,7 @@
|
||||
##============================================================================
|
||||
|
||||
set(headers
|
||||
KdTree3D.h
|
||||
KdTree3DConstruction.h
|
||||
KdTree3DNNSearch.h
|
||||
)
|
||||
|
||||
|
@ -18,8 +18,8 @@
|
||||
// this software.
|
||||
//============================================================================
|
||||
|
||||
#ifndef vtk_m_worklet_KdTree3D_h
|
||||
#define vtk_m_worklet_KdTree3D_h
|
||||
#ifndef vtk_m_worklet_KdTree3DConstruction_h
|
||||
#define vtk_m_worklet_KdTree3DConstruction_h
|
||||
|
||||
#include <vtkm/Math.h>
|
||||
#include <vtkm/cont/ArrayHandle.h>
|
||||
@ -42,7 +42,7 @@ namespace worklet
|
||||
namespace spatialstructure
|
||||
{
|
||||
|
||||
class KdTree3D
|
||||
class KdTree3DConstruction
|
||||
{
|
||||
public:
|
||||
////////// General WORKLET for Kd-tree //////
|
||||
@ -236,7 +236,7 @@ public:
|
||||
vtkm::cont::ArrayHandle<T> ReverseScanInclusiveByKey(vtkm::cont::ArrayHandle<T>& keyHandle,
|
||||
vtkm::cont::ArrayHandle<T>& dataHandle,
|
||||
BinaryFunctor binary_functor,
|
||||
DeviceAdapter device)
|
||||
DeviceAdapter vtkmNotUsed(device))
|
||||
{
|
||||
typedef typename vtkm::cont::DeviceAdapterAlgorithm<DeviceAdapter> Algorithm;
|
||||
|
||||
@ -254,7 +254,7 @@ public:
|
||||
|
||||
template <typename T, typename DeviceAdapter>
|
||||
vtkm::cont::ArrayHandle<T> Inverse01ArrayWrapper(vtkm::cont::ArrayHandle<T>& inputHandle,
|
||||
DeviceAdapter device)
|
||||
DeviceAdapter vtkmNotUsed(device))
|
||||
{
|
||||
vtkm::cont::ArrayHandle<T> InverseHandle;
|
||||
InverseArray invWorklet;
|
||||
@ -267,7 +267,7 @@ public:
|
||||
template <typename T, typename DeviceAdapter>
|
||||
vtkm::cont::ArrayHandle<T> ScatterArrayWrapper(vtkm::cont::ArrayHandle<T>& inputHandle,
|
||||
vtkm::cont::ArrayHandle<T>& indexHandle,
|
||||
DeviceAdapter device)
|
||||
DeviceAdapter vtkmNotUsed(device))
|
||||
{
|
||||
vtkm::cont::ArrayHandle<T> outputHandle;
|
||||
outputHandle.Allocate(inputHandle.GetNumberOfValues());
|
||||
@ -281,7 +281,7 @@ public:
|
||||
template <typename T, typename DeviceAdapter>
|
||||
vtkm::cont::ArrayHandle<T> NewKeyWrapper(vtkm::cont::ArrayHandle<T>& oldSegIdHandle,
|
||||
vtkm::cont::ArrayHandle<T>& flagHandle,
|
||||
DeviceAdapter device)
|
||||
DeviceAdapter vtkmNotUsed(device))
|
||||
{
|
||||
vtkm::cont::ArrayHandle<T> newSegIdHandle;
|
||||
NewSegmentId newsegidWorklet;
|
||||
@ -320,7 +320,7 @@ public:
|
||||
template <typename T, typename DeviceAdapter>
|
||||
vtkm::cont::ArrayHandle<T> ArrayAddWrapper(vtkm::cont::ArrayHandle<T>& array0Handle,
|
||||
vtkm::cont::ArrayHandle<T>& array1Handle,
|
||||
DeviceAdapter device)
|
||||
DeviceAdapter vtkmNotUsed(device))
|
||||
{
|
||||
vtkm::cont::ArrayHandle<T> resultHandle;
|
||||
ArrayAdd arrayAddWorklet;
|
||||
@ -609,4 +609,4 @@ public:
|
||||
}
|
||||
} // namespace vtkm::worklet
|
||||
|
||||
#endif // vtk_m_worklet_KdTree3D_h
|
||||
#endif // vtk_m_worklet_KdTree3DConstruction_h
|
@ -199,11 +199,13 @@ public:
|
||||
vtkm::cont::ArrayHandle<vtkm::Vec<CoordiType, 3>>& qc_Handle,
|
||||
vtkm::cont::ArrayHandle<TreeIdType>& nnId_Handle,
|
||||
vtkm::cont::ArrayHandle<CoordiType>& nnDis_Handle,
|
||||
DeviceAdapter device)
|
||||
DeviceAdapter vtkmNotUsed(device))
|
||||
{
|
||||
#if VTKM_DEVICE_ADAPTER == VTKM_DEVICE_ADAPTER_CUDA
|
||||
//set up stack size for cuda envinroment
|
||||
cudaThreadSetLimit(cudaLimitStackSize, 1024 * 16);
|
||||
size_t stackSizeBackup;
|
||||
cudaDeviceGetLimit(&stackSizeBackup, cudaLimitStackSize);
|
||||
cudaDeviceSetLimit(cudaLimitStackSize, 1024 * 16);
|
||||
#endif
|
||||
|
||||
NearestNeighborSearch3DWorklet nns3dWorklet;
|
||||
@ -211,6 +213,9 @@ public:
|
||||
nns3DDispatcher(nns3dWorklet);
|
||||
nns3DDispatcher.Invoke(
|
||||
qc_Handle, pointId_Handle, splitId_Handle, coordi_Handle, nnId_Handle, nnDis_Handle);
|
||||
#if VTKM_DEVICE_ADAPTER == VTKM_DEVICE_ADAPTER_CUDA
|
||||
cudaDeviceSetLimit(cudaLimitStackSize, stackSizeBackup);
|
||||
#endif
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -19,8 +19,7 @@
|
||||
//============================================================================
|
||||
|
||||
#include <random>
|
||||
#include <vtkm/worklet/spatialstructure/KdTree3D.h>
|
||||
#include <vtkm/worklet/spatialstructure/KdTree3DNNSearch.h>
|
||||
#include <vtkm/worklet/KdTree3D.h>
|
||||
|
||||
namespace
|
||||
{
|
||||
@ -109,9 +108,9 @@ void TestKdTreeBuildNNS()
|
||||
vtkm::cont::ArrayHandle<vtkm::Id> pointId_Handle;
|
||||
vtkm::cont::ArrayHandle<vtkm::Id> splitId_Handle;
|
||||
|
||||
vtkm::worklet::spatialstructure::KdTree3D kdtree3D;
|
||||
// Run data
|
||||
kdtree3D.Run(coordi_Handle, pointId_Handle, splitId_Handle, VTKM_DEFAULT_DEVICE_ADAPTER_TAG());
|
||||
vtkm::worklet::KdTree3D kdtree3d;
|
||||
kdtree3d.Run(coordi_Handle, pointId_Handle, splitId_Handle, VTKM_DEFAULT_DEVICE_ADAPTER_TAG());
|
||||
|
||||
//Nearest Neighbor worklet Testing
|
||||
/// randomly generate testing points /////
|
||||
@ -132,14 +131,13 @@ void TestKdTreeBuildNNS()
|
||||
vtkm::cont::ArrayHandle<vtkm::Id> nnId_Handle;
|
||||
vtkm::cont::ArrayHandle<vtkm::Float32> nnDis_Handle;
|
||||
|
||||
vtkm::worklet::spatialstructure::KdTree3DNNSearch kdtree3DNNS;
|
||||
kdtree3DNNS.Run(coordi_Handle,
|
||||
pointId_Handle,
|
||||
splitId_Handle,
|
||||
qc_Handle,
|
||||
nnId_Handle,
|
||||
nnDis_Handle,
|
||||
VTKM_DEFAULT_DEVICE_ADAPTER_TAG());
|
||||
kdtree3d.Run(coordi_Handle,
|
||||
pointId_Handle,
|
||||
splitId_Handle,
|
||||
qc_Handle,
|
||||
nnId_Handle,
|
||||
nnDis_Handle,
|
||||
VTKM_DEFAULT_DEVICE_ADAPTER_TAG());
|
||||
|
||||
vtkm::cont::ArrayHandle<vtkm::Id> bfnnId_Handle;
|
||||
vtkm::cont::ArrayHandle<vtkm::Float32> bfnnDis_Handle;
|
||||
|
Loading…
Reference in New Issue
Block a user