isl-org / isl-org/Open3D

why the speed of RemoveStatisticalOutliers in cuda is slower than in cpu

Open
#6,378 1 comment 0 reactions 0 assignees View on GitHub
question
Dominant language
C++
Stars
14k
Forks
2.6k
Avg merge
5d 18h
Merged PRs (30d)
6

Description

### Checklist

- [X] I have searched for [similar issues](https://github.com/isl-org/Open3D/issues).
- [X] For Python issues, I have tested with the [latest development wheel](http://www.open3d.org/docs/latest/getting_started.html#development-version-pip).
- [X] I have checked the [release documentation](http://www.open3d.org/docs/release/) and the [latest documentation](http://www.open3d.org/docs/latest/) (for `master` branch).

### My Question

The speed of RemoveStatisticalOutliers can not meet my requirement,so I use the open3d version 0.17.0 to use RemoveStatisticalOutliers in cuda,but the speed of RemoveStatisticalOutliers in cuda is slower than in cpu . maybe there is some error in my code.

bool is_cuda = open3d::core::cuda::IsAvailable();

auto cloud = std::make_shared();

open3d::core::Device cuda = open3d::core::Device("CUDA:0");

if (open3d::io::ReadPointCloud("F:/PointCloudy/PCD/1.pcd", *cloud) == 0)
{
open3d::utility::LogWarning("pcd load failed!!!\n\n");
return;
}

auto down_pcd = cloud->VoxelDownSample(0.0001f);

auto down_pcd1 = cloud->VoxelDownSample(0.0001f);

std::tuple, std::vector>sor;

sor = down_pcd->RemoveStatisticalOutliers(100, 1); //RemoveStatisticalOutliers in cpu about 700ms

auto sor_cloud = std::get<0>(sor);

open3d::t::geometry::PointCloud pcd = open3d::t::geometry::PointCloud::FromLegacy(*down_pcd1, open3d::core::Float64, cuda);

auto res_t = pcd.RemoveStatisticalOutliers(100, 1); //RemoveStatisticalOutliers in cuda about 10000ms

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.