Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

filters.pmf gives different classifications on ARM64 vs AMD64 #3867

Open
brianV opened this issue Sep 21, 2022 · 1 comment
Open

filters.pmf gives different classifications on ARM64 vs AMD64 #3867

brianV opened this issue Sep 21, 2022 · 1 comment

Comments

@brianV
Copy link

brianV commented Sep 21, 2022

Describe the bug

filters.pmf classification of a point as 'ground' appears to be sensitive to CPU architecture, at least between Intel and ARM machines. That is, we are seeing differences between Intel machines (our CI pipeline and developer Intel-based Macbooks) and ARM machines (developers with M1-based Macbooks).

The set of points classified as ground following the filter run is different between these two machine types. Here is our pipeline:
[
  {
    "type": "readers.pcd"
  },
  {
    "type": "filters.pmf",
    "slope": 0.15,
    "cell_size": 0.6,
    "max_window_size": 30,
    "initial_distance": 0.3,
    "max_distance": 1
  },
  {
    "type": "writers.pcd",
    "precision": 3,
    "filename": "classified.pcd"
  }
]

In our test case, we ran this pipeline in a simple Alpine docker container with PDAL installed. We build and execute the container on both Intel and ARM-based systems and compare the output.

When we diff copies of classified.pcd generated on the two system types, we see the same number of points present, but the classification as 'ground' vs 'not ground' is not consistent.

Expected behavior
The ground point classification should be consistent across CPU architectures.

System/installation information:

For the container built on the M1 Mac:

/app # pdal --version
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
pdal 2.4.0 (git-version: c2b1c7)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

/app # uname -a
Linux 2f7305bbb55e 5.10.124-linuxkit #1 SMP PREEMPT Thu Jun 30 08:18:26 UTC 2022 aarch64 Linux
/app # 

For the container built on an Intel Mac:

/app # pdal --version
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
pdal 2.4.0 (git-version: 295706)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

/app # uname -a
Linux 9fe707a03fc2 5.10.104-linuxkit #1 SMP Thu Mar 17 17:08:06 UTC 2022 x86_64 Linux
/app # 
@hobu
Copy link
Member

hobu commented Dec 6, 2022

but the classification as 'ground' vs 'not ground' is not consistent.

I'm afraid I don't have an explanation for you. We are of course available to hire if getting to the bottom of this is very important.

I would also suggest using filters.smrf instead of filters.pmf for better memory and CPU performance along with better output.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants