Skip to content

Commit

Permalink
Merge pull request #1123 from LLNL/bugfix/gunney/marching-cubes-loops
Browse files Browse the repository at this point in the history
Fix marching cubes loops on GPUs
  • Loading branch information
gunney1 committed Jul 6, 2023
2 parents 878d8ce + b40a075 commit dd7ce1f
Show file tree
Hide file tree
Showing 6 changed files with 761 additions and 390 deletions.
2 changes: 1 addition & 1 deletion src/axom/primal/geometry/Sphere.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ class Sphere
* <li> zero on the boundary </li>
* </ul>
*/
inline T computeSignedDistance(const PointType& q) const
AXOM_HOST_DEVICE inline T computeSignedDistance(const PointType& q) const
{
return VectorType(m_center, q).norm() - m_radius;
}
Expand Down
24 changes: 16 additions & 8 deletions src/axom/quest/MarchingCubes.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -206,31 +206,39 @@ void MarchingCubesSingleDomain::allocateImpl()
if(m_runtimePolicy == RuntimePolicy::seq)
{
m_impl = m_ndim == 2
? std::unique_ptr<ImplBase>(new MarchingCubesImpl<2, axom::SEQ_EXEC>)
: std::unique_ptr<ImplBase>(new MarchingCubesImpl<3, axom::SEQ_EXEC>);
? std::unique_ptr<ImplBase>(
new MarchingCubesImpl<2, axom::SEQ_EXEC, axom::SEQ_EXEC>)
: std::unique_ptr<ImplBase>(
new MarchingCubesImpl<3, axom::SEQ_EXEC, axom::SEQ_EXEC>);
}
#ifdef _AXOM_MC_USE_OPENMP
else if(m_runtimePolicy == RuntimePolicy::omp)
{
m_impl = m_ndim == 2
? std::unique_ptr<ImplBase>(new MarchingCubesImpl<2, axom::OMP_EXEC>)
: std::unique_ptr<ImplBase>(new MarchingCubesImpl<3, axom::OMP_EXEC>);
? std::unique_ptr<ImplBase>(
new MarchingCubesImpl<2, axom::OMP_EXEC, axom::SEQ_EXEC>)
: std::unique_ptr<ImplBase>(
new MarchingCubesImpl<3, axom::OMP_EXEC, axom::SEQ_EXEC>);
}
#endif
#ifdef _AXOM_MC_USE_CUDA
else if(m_runtimePolicy == RuntimePolicy::cuda)
{
m_impl = m_ndim == 2
? std::unique_ptr<ImplBase>(new MarchingCubesImpl<2, axom::CUDA_EXEC<256>>)
: std::unique_ptr<ImplBase>(new MarchingCubesImpl<3, axom::CUDA_EXEC<256>>);
? std::unique_ptr<ImplBase>(
new MarchingCubesImpl<2, axom::CUDA_EXEC<256>, axom::CUDA_EXEC<1>>)
: std::unique_ptr<ImplBase>(
new MarchingCubesImpl<3, axom::CUDA_EXEC<256>, axom::CUDA_EXEC<1>>);
}
#endif
#ifdef _AXOM_MC_USE_HIP
else if(m_runtimePolicy == RuntimePolicy::hip)
{
m_impl = m_ndim == 2
? std::unique_ptr<ImplBase>(new MarchingCubesImpl<2, axom::HIP_EXEC<256>>)
: std::unique_ptr<ImplBase>(new MarchingCubesImpl<3, axom::HIP_EXEC<256>>);
? std::unique_ptr<ImplBase>(
new MarchingCubesImpl<2, axom::HIP_EXEC<256>, axom::HIP_EXEC<1>>)
: std::unique_ptr<ImplBase>(
new MarchingCubesImpl<3, axom::HIP_EXEC<256>, axom::HIP_EXEC<1>>);
}
#endif
else
Expand Down
4 changes: 2 additions & 2 deletions src/axom/quest/MarchingCubes.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ namespace detail
{
namespace marching_cubes
{
template <int DIM, typename ExecSpace>
template <int DIM, typename ExecSpace, typename SequentialLoopPolicy>
class MarchingCubesImpl;
}
} // namespace detail
Expand Down Expand Up @@ -184,7 +184,7 @@ class MarchingCubes
*/
class MarchingCubesSingleDomain
{
template <int DIM, typename ExecSpace>
template <int DIM, typename ExecSpace, typename SequentialLoopPolicy>
friend class detail::marching_cubes::MarchingCubesImpl;

public:
Expand Down

0 comments on commit dd7ce1f

Please sign in to comment.