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

STACK OVERFLOW 50 #32

Open
mcmingchang opened this issue Dec 30, 2024 · 4 comments
Open

STACK OVERFLOW 50 #32

mcmingchang opened this issue Dec 30, 2024 · 4 comments

Comments

@mcmingchang
Copy link

mcmingchang commented Dec 30, 2024

The code used compute_80 and sm_80 did not encounter any issues, but the above error occurred under default parameters.
The problem lies in calling the function:

template<typename CandidateList,
typename data_t,
typename data_traits>
inline device
float knn(CandidateList &result,
const SpatialKDTree<data_t,data_traits> &tree,
typename data_traits::point_t queryPoint)

@mcmingchang
Copy link
Author

The reason is that the construction of the KD tree failed,tree.numPrims=10000,but tree.numNodes=2

@ingowald
Copy link
Owner

Leaving for vacation right now, can't look at that til weekend. Can u send me google drive link with file containing these 10k points to reproduce?

@ingowald
Copy link
Owner

ingowald commented Jan 6, 2025

Hey - any change i could get some more info and/or data to test with?
What's happening here is pretty clear - it cannot find any way of splitting your input points into two separate halves, and then creates a single huge leaf - but the question is why: I currently see these options:
a) your input data is 10k copies of the same identical point, in which case the bounding box collases to a single point, and the builder can't find any plane to split.
b) maybe your input data contains some coordinates that are messing up my code (NANs or INFs?) that are messing up the way i compute the bounding box,
or
c) something's wrong with how cuda treats the atomic min/max'es in the bounding box computation.

given that you explicitly mention "compute_80" vs "default parameters" i kind of assume it's the latter, but some more info would be very useful. Also, please provide the cmdline flags you used to compile.

@ingowald
Copy link
Owner

ingowald commented Jan 6, 2025

BTW: i'd have to double-check, but I think that starting with either compute_75 or compute_80 architectures you can no longer run code that was explicitly compiled for earlier archs; in particular, not if your code was explicitly compiled for compute_50, which unfortunately is what some older cmake archs will default to if arch isn't set.

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