wangyiqiu / hdbscan Goto Github PK
View Code? Open in Web Editor NEWA Fast Parallel Algorithm for HDBSCAN* Clustering
License: MIT License
A Fast Parallel Algorithm for HDBSCAN* Clustering
License: MIT License
how to pack the files if i want to use hdbscan in visual studio 2022 in windows ?
I have tried to compile the source and I get this error:
make[2]: *** [pybindings/CMakeFiles/pyhdbscan.dir/build.make:63: pybindings/CMakeFiles/pyhdbscan.dir/pyhdbscan.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:191: pybindings/CMakeFiles/pyhdbscan.dir/all] Error 2
make: *** [Makefile:84: all] Error 2
Hey, I wrote OCaml bindings for this library and while testing with random variables I got segmentation fault error.
I tried with the Python binding, the same error occurs.
Here is the data that can reproduce the error:
points = np.array([
[2.8982, -2.7502],
[2.0700, 4.6681],
[-3.3455, -0.8006],
[0.7183, 4.6198],
[-0.7986, -1.7616],
[4.1368, 1.7246],
[3.7679, 4.1976],
[3.2638, 2.1536],
[1.8979, 1.6000],
[2.7282, -3.5276],
[-2.4856, 2.7415]])
gdb tells me it fails on following line:
pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo
::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long) const::{lambda(unsigned long)#1}::operator()(unsigned long) const (
parent=<optimized out>, __closure=<optimized out>) at parBuf.h:154
154 all[vecSizes[p] + buf->m_parentSizes[parent] + elem] = buf->m_parent[parent][elem];
I've began debugging it and trying to understand where the error might come from but I decided to submit an issue if you might have an answer or a hint.
Under Windows system, MinGW-64 version, gcc version
After Using cmake .. -G "MinGW Makefiles" command, the make command will generate the following error
I found a similar problem in github
pybind/pybind11#4047
Hi @wangyiqiu, in your paper you talk about a parallel version of the dendrogram algorithm (the one splitting edges into light and heavy). I can't seem to find this in this code repo, as I only see the standard serial union-find algorithm. Am I missing something?
When I run
make -f
and I got this error:
make[2]: *** [src/CMakeFiles/hdbscanLib.dir/build.make:76: src/CMakeFiles/hdbscanLib.dir/hdbscan.cpp.o] Error 1 make[1]: *** [CMakeFiles/Makefile2:135: src/CMakeFiles/hdbscanLib.dir/all] Error 2 make: *** [Makefile:91: all] Error 2
.
I saw:
hdbscan-main/src/kdTree.h:33:6: error: redefinition of ‘template<class In_Seq, class Bool_Seq> std::pair<parlay::sequence<typename In_Seq::value_type>, long unsigned int> parlay::internal::split_two(const In_Seq&, const Bool_Seq&, parlay::flags)’ auto split_two(In_Seq const &In, Bool_Seq const &Fl, flags fl = no_flag)
When we tried to run the code on the CPU, It is throwing a "Segmentation fault (core dumped)", We ran the code on the below machine details:
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 48
On-line CPU(s) list: 0-47
Thread(s) per core: 1
Core(s) per socket: 24
Socket(s): 2
NUMA node(s): 2
Vendor ID: GenuineIntel
CPU family: 6
Model: 85
Model name: Intel(R) Xeon(R) Gold 6252 CPU @ 2.10GHz
Stepping: 7
CPU MHz: 2100.000
BogoMIPS: 4200.00
L1d cache: 32K
L1i cache: 32K
L2 cache: 1024K
L3 cache: 36608K
NUMA node0 CPU(s): 0-23
NUMA node1 CPU(s): 24-47
It is the latest error that we are getting, we ran the same code 2 weeks back, and we didn't see any errors and ran the code successfully. Please let us know if any extra details are required.
This is a continuation of #3.
I tried once again on origin repository on two machines (Linux Mint 20.2, X5675 CPU, 40GB RAM and CentOS Stream 9, Dual X5670, 64GB RAM). On the first machine (mint) as previously script works with data generated by make_blobs
and fails with the data posted in #3. To my surprise on the second machine the script fails immediately both on data generated by make_blobs
and above matrix.
Mint (I tried both clang and gcc on this system):
build-tree-time = 2.90871e-05
core-dist-time = 7.20024e-05
---
beta = 2
rho = -0.1 -- 2.10524
---
beta = 4
rho = 2.10524 -- 3.64498
edges = 8
mst-edges = 5
--Type <RET> for more, q to quit, c to continue without paging--
Thread 1 "python3" received signal SIGSEGV, Segmentation fault.
0x00007fff48b008f4 in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long) const::{lambda(unsigned long)#1}>(unsigned long, unsigned long, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long) const::{lambda(unsigned long)#1}, unsigned long, bool) () from /home/pah/hdbscan-origin/build-gcc/pybindings/pyhdbscan.cpython-38-x86_64-linux-gnu.so
(gdb) bt
#0 0x00007fff48b008f4 in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long) const::{lambda(unsigned long)#1}>(unsigned long, unsigned long, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long) const::{lambda(unsigned long)#1}, unsigned long, bool) () from /home/pah/hdbscan-origin/build-gcc/pybindings/pyhdbscan.cpython-38-x86_64-linux-gnu.so
#1 0x00007fff48b00ab5 in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long) const::{lambda(unsigned long)#1}>(unsigned long, unsigned long, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long) const::{lambda(unsigned long)#1}, unsigned long, bool) () from /home/pah/hdbscan-origin/build-gcc/pybindings/pyhdbscan.cpython-38-x86_64-linux-gnu.so
#2 0x00007fff48b00a55 in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long) const::{lambda(unsigned long)#1}>(unsigned long, unsigned long, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long) const::{lambda(unsigned long)#1}, unsigned long, bool) () from /home/pah/hdbscan-origin/build-gcc/pybindings/pyhdbscan.cpython-38-x86_64-linux-gnu.so
#3 0x00007fff48b00ab5 in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long) const::{lambda(unsigned long)#1}>(unsigned long, unsigned long, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long) const::{lambda(unsigned long)#1}, unsigned long, bool) () from /home/pah/hdbscan-origin/build-gcc/pybindings/pyhdbscan.cpython-38-x86_64-linux-gnu.so
#4 0x00007fff48b00d35 in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}>(unsigned long, unsigned long, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}, unsigned long, bool) ()
from /home/pah/hdbscan-origin/build-gcc/pybindings/pyhdbscan.cpython-38-x86_64-linux-gnu.so
#5 0x00007fff48b00e0a in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}>(unsigned long, unsigned long, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}, unsigned long, bool) ()
from /home/pah/hdbscan-origin/build-gcc/pybindings/pyhdbscan.cpython-38-x86_64-linux-gnu.so
#6 0x00007fff48b00e0a in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}>(unsigned long, unsigned long, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}, unsigned long, bool) ()
from /home/pah/hdbscan-origin/build-gcc/pybindings/pyhdbscan.cpython-38-x86_64-linux-gnu.so
#7 0x00007fff48b00e0a in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}>(unsigned long, unsigned long, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}, unsigned long, bool) ()
from /home/pah/hdbscan-origin/build-gcc/pybindings/pyhdbscan.cpython-38-x86_64-linux-gnu.so
#8 0x00007fff48b00e0a in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}>(unsigned long, unsigned long, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}, unsigned long, bool) ()
from /home/pah/hdbscan-origin/build-gcc/pybindings/pyhdbscan.cpython-38-x86_64-linux-gnu.so
#9 0x00007fff48ba9a0c in parlay::sequence<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double>, parlay::allocator<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >, std::is_same<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double>, char>::value> pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long) ()
from /home/pah/hdbscan-origin/build-gcc/pybindings/pyhdbscan.cpython-38-x86_64-linux-gnu.so
#10 0x00007fff48d63a36 in parlay::sequence<std::tuple<pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >::objT*, pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >::objT*, pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >::objT::floatT>, parlay::allocator<std::tuple<pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >::objT*, pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >::objT*, pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >::objT::floatT> >, std::is_same<std::tuple<pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >::objT*, pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >::objT*, pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >::objT::floatT>, char>::value> pargeo::hdbscanInternal::filterWspdParallel<pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >, pargeo::edgeUnionFind<long> >(double, double, double&, pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >*, pargeo::edgeUnionFind<long>*, parlay::sequence<double, parlay::allocator<double>, false>&, parlay::sequence<double, parlay::allocator<double>, false>&, parlay::sequence<double, parlay::allocator<double>, false>&, pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >::objT*) () from /home/pah/hdbscan-origin/build-gcc/pybindings/pyhdbscan.cpython-38-x86_64-linux-gnu.so
#11 0x00007fff48d641d5 in parlay::sequence<pargeo::_weightedEdge<false, unsigned long, double>, parlay::allocator<pargeo::_weightedEdge<false, unsigned long, double> >, false> pargeo::hdbscan<2>(parlay::sequence<pargeo::_point<2, double, double, pargeo::_empty>, parlay::allocator<pargeo::_point<2, double, double, pargeo::_empty> >, std::is_same<pargeo::_point<2, double, double, pargeo::_empty>, char>::value>&, unsigned long) () from /home/pah/hdbscan-origin/build-gcc/pybindings/pyhdbscan.cpython-38-x86_64-linux-gnu.so
#12 0x00007fff48a21109 in py_hdbscan(pybind11::array_t<double, 17>, unsigned long) () from /home/pah/hdbscan-origin/build-gcc/pybindings/pyhdbscan.cpython-38-x86_64-linux-gnu.so
#13 0x00007fff48a25783 in pybind11::cpp_function::initialize<pybind11::array_t<double, 16> (*&)(pybind11::array_t<double, 17>, unsigned long), pybind11::array_t<double, 16>, pybind11::array_t<double, 17>, unsigned long, pybind11::name, pybind11::scope, pybind11::sibling, char [21], pybind11::arg, pybind11::arg>(pybind11::array_t<double, 16> (*&)(pybind11::array_t<double, 17>, unsigned long), pybind11::array_t<double, 16> (*)(pybind11::array_t<double, 17>, unsigned long), pybind11::name const&, pybind11::scope const&, pybind11::sibling const&, char const (&) [21], pybind11::arg const&, pybind11::arg const&)::{lambda(pybind11::detail::function_call&)#3}::_FUN(pybind11::detail::function_call&) () from /home/pah/hdbscan-origin/build-gcc/pybindings/pyhdbscan.cpython-38-x86_64-linux-gnu.so
#14 0x00007fff48a26146 in pybind11::cpp_function::dispatcher(_object*, _object*, _object*) () from /home/pah/hdbscan-origin/build-gcc/pybindings/pyhdbscan.cpython-38-x86_64-linux-gnu.so
#15 0x00000000005f3989 in PyCFunction_Call ()
#16 0x00000000005f3e1e in _PyObject_MakeTpCall ()
#17 0x0000000000570266 in _PyEval_EvalFrameDefault ()
#18 0x000000000056939a in _PyEval_EvalCodeWithName ()
#19 0x000000000068d047 in PyEval_EvalCode ()
#20 0x000000000067e351 in ?? ()
#21 0x000000000067e3cf in ?? ()
#22 0x000000000067e471 in ?? ()
#23 0x000000000067e817 in PyRun_SimpleFileExFlags ()
#24 0x00000000006b6fe2 in Py_RunMain ()
#25 0x00000000006b736d in Py_BytesMain ()
#26 0x00007ffff7dd6083 in __libc_start_main (main=0x4eead0 <main>, argc=2, argv=0x7fffffffd988, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffd978)
at ../csu/libc-start.c:308
#27 0x00000000005fa5ce in _start ()
CentOS:
build-tree-time = 4.88758e-05
core-dist-time = 9.10759e-05
---
beta = 2
rho = -0.1 -- 0.552464
edges = 1
mst-edges = 1
Thread 1 "python3" received signal SIGSEGV, Segmentation fault.
0x00007fff6d9ebc7c in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pa
--Type <RET> for more, q to quit, c to continue without paging--
rgeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long) con
st::{lambda(unsigned long)#1}>(unsigned long, unsigned long, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(parge
o::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long) const:
:{lambda(unsigned long)#1}, unsigned long, bool) () from /root/hdbscan/build/pybindings/pyhdbscan.cpython-39-x86_64-linux-gnu.so
(gdb) bt
#0 0x00007fff6d9ebc7c in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double>
>(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long)
const::{lambda(unsigned long)#1}>(unsigned long, unsigned long, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(p
argeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long) co
nst::{lambda(unsigned long)#1}, unsigned long, bool) () from /root/hdbscan/build/pybindings/pyhdbscan.cpython-39-x86_64-linux-gnu.so
#1 0x00007fff6d9ebe25 in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double>
>(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long)
const::{lambda(unsigned long)#1}>(unsigned long, unsigned long, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(p
argeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long) co
nst::{lambda(unsigned long)#1}, unsigned long, bool) () from /root/hdbscan/build/pybindings/pyhdbscan.cpython-39-x86_64-linux-gnu.so
#2 0x00007fff6d9ebdc5 in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double>
>(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long)
const::{lambda(unsigned long)#1}>(unsigned long, unsigned long, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(p
argeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long) co
nst::{lambda(unsigned long)#1}, unsigned long, bool) () from /root/hdbscan/build/pybindings/pyhdbscan.cpython-39-x86_64-linux-gnu.so
#3 0x00007fff6d9ebdc5 in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double>
>(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long)
const::{lambda(unsigned long)#1}>(unsigned long, unsigned long, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(p
argeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long) co
nst::{lambda(unsigned long)#1}, unsigned long, bool) () from /root/hdbscan/build/pybindings/pyhdbscan.cpython-39-x86_64-linux-gnu.so
#4 0x00007fff6d9ebe25 in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double>
>(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long)
const::{lambda(unsigned long)#1}>(unsigned long, unsigned long, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(p
argeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}::operator()(unsigned long) co
nst::{lambda(unsigned long)#1}, unsigned long, bool) () from /root/hdbscan/build/pybindings/pyhdbscan.cpython-39-x86_64-linux-gnu.so
#5 0x00007fff6d9ec396 in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double>
>(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}>(unsigned long, unsigned l
ong, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, p
argeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}, unsigned long, bool) ()
from /root/hdbscan/build/pybindings/pyhdbscan.cpython-39-x86_64-linux-gnu.so
--Type <RET> for more, q to quit, c to continue without paging--
#6 0x00007fff6d9ec467 in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double>
>(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}>(unsigned long, unsigned l
ong, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, p
argeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}, unsigned long, bool) ()
from /root/hdbscan/build/pybindings/pyhdbscan.cpython-39-x86_64-linux-gnu.so
#7 0x00007fff6d9ec467 in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double>
>(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}>(unsigned long, unsigned l
ong, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, p
argeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}, unsigned long, bool) ()
from /root/hdbscan/build/pybindings/pyhdbscan.cpython-39-x86_64-linux-gnu.so
#8 0x00007fff6d9ec467 in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double>
>(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}>(unsigned long, unsigned l
ong, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, p
argeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}, unsigned long, bool) ()
from /root/hdbscan/build/pybindings/pyhdbscan.cpython-39-x86_64-linux-gnu.so
#9 0x00007fff6d9ec467 in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double>
>(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}>(unsigned long, unsigned l
ong, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, p
argeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}, unsigned long, bool) ()
from /root/hdbscan/build/pybindings/pyhdbscan.cpython-39-x86_64-linux-gnu.so
#10 0x00007fff6d9ec467 in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double>
>(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}>(unsigned long, unsigned l
ong, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, p
argeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}, unsigned long, bool) ()
from /root/hdbscan/build/pybindings/pyhdbscan.cpython-39-x86_64-linux-gnu.so
#11 0x00007fff6d9ec467 in void parlay::fork_join_scheduler::parfor_<pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double>
>(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}>(unsigned long, unsigned l
ong, pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, p
argeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long)::{lambda(unsigned long)#1}, unsigned long, bool) ()
--Type <RET> for more, q to quit, c to continue without paging--
#12 0x00007fff6da8d068 in parlay::sequence<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double>, parlay::allocator<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >, std::is_same<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double>, char>::value> pargeo::parBufCollect<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >(pargeo::parBuf<std::tuple<pargeo::_point<2, double, double, pargeo::_empty>*, pargeo::_point<2, double, double, pargeo::_empty>*, double> >**, unsigned long) () from /root/hdbscan/build/pybindings/pyhdbscan.cpython-39-x86_64-linux-gnu.so
#13 0x00007fff6dc2d04e in parlay::sequence<std::tuple<pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >::objT*, pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >::objT*, pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >::objT::floatT>, parlay::allocator<std::tuple<pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >::objT*, pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >::objT*, pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >::objT::floatT> >, std::is_same<std::tuple<pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >::objT*, pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >::objT*, pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >::objT::floatT>, char>::value> pargeo::hdbscanInternal::filterWspdParallel<pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >, pargeo::edgeUnionFind<long> >(double, double, double&, pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >*, pargeo::edgeUnionFind<long>*, parlay::sequence<double, parlay::allocator<double>, false>&, parlay::sequence<double, parlay::allocator<double>, false>&, parlay::sequence<double, parlay::allocator<double>, false>&, pargeo::kdNode<2, pargeo::_point<2, double, double, pargeo::_empty> >::objT*) () from /root/hdbscan/build/pybindings/pyhdbscan.cpython-39-x86_64-linux-gnu.so
#14 0x00007fff6dc2d7b6 in parlay::sequence<pargeo::_weightedEdge<false, unsigned long, double>, parlay::allocator<pargeo::_weightedEdge<false, unsigned long, double> >, false> pargeo::hdbscan<2>(parlay::sequence<pargeo::_point<2, double, double, pargeo::_empty>, parlay::allocator<pargeo::_point<2, double, double, pargeo::_empty> >, std::is_same<pargeo::_point<2, double, double, pargeo::_empty>, char>::value>&, unsigned long) () from /root/hdbscan/build/pybindings/pyhdbscan.cpython-39-x86_64-linux-gnu.so
#15 0x00007fff6d911f89 in py_hdbscan(pybind11::array_t<double, 17>, unsigned long) () from /root/hdbscan/build/pybindings/pyhdbscan.cpython-39-x86_64-linux-gnu.so
#16 0x00007fff6d91645d in pybind11::cpp_function::initialize<pybind11::array_t<double, 16> (*&)(pybind11::array_t<double, 17>, unsigned long), pybind11::array_t<double, 16>, pybind11::array_t<double, 17>, unsigned long, pybind11::name, pybind11::scope, pybind11::sibling, char [21], pybind11::arg, pybind11::arg>(pybind11::array_t<double, 16> (*&)(pybind11::array_t<double, 17>, unsigned long), pybind11::array_t<double, 16> (*)(pybind11::array_t<double, 17>, unsigned long), pybind11::name const&, pybind11::scope const&, pybind11::sibling const&, char const (&) [21], pybind11::arg const&, pybind11::arg const&)::{lambda(pybind11::detail::function_call&)#3}::_FUN(pybind11::detail::function_call&) () from /root/hdbscan/build/pybindings/pyhdbscan.cpython-39-x86_64-linux-gnu.so
#17 0x00007fff6d916da6 in pybind11::cpp_function::dispatcher(_object*, _object*, _object*) () from /root/hdbscan/build/pybindings/pyhdbscan.cpython-39-x86_64-linux-gnu.so
#18 0x00007ffff7d7b572 in cfunction_call (func=0x7fff6ddc1220, args=<optimized out>, kwargs=<optimized out>) at /usr/src/debug/python3.9-3.9.10-2.el9.x86_64/Objects/methodobject.c:543
#19 0x00007ffff7d6d6b4 in _PyObject_MakeTpCall (tstate=0x55555555cf90, callable=0x7fff6ddc1220, args=0x5555555b8180, nargs=2, keywords=0x0) at /usr/src/debug/python3.9-3.9.10-2.el9.x86_64/Objects/call.c:191
#20 0x00007ffff7d6a12e in _PyObject_VectorcallTstate (kwnames=0x0, nargsf=<optimized out>, args=0x5555555b8180, callable=<optimized out>, tstate=0x55555555cf90)
at /usr/src/debug/python3.9-3.9.10-2.el9.x86_64/Include/cpython/abstract.h:116
#21 _PyObject_VectorcallTstate (kwnames=0x0, nargsf=<optimized out>, args=0x5555555b8180, callable=<optimized out>, tstate=0x55555555cf90)
at /usr/src/debug/python3.9-3.9.10-2.el9.x86_64/Include/cpython/abstract.h:103
#22 PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x5555555b8180, callable=<optimized out>) at /usr/src/debug/python3.9-3.9.10-2.el9.x86_64/Include/cpython/abstract.h:127
#23 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetic pointer>, tstate=0x55555555cf90) at /usr/src/debug/python3.9-3.9.10-2.el9.x86_64/Python/ceval.c:5077
#24 _PyEval_EvalFrameDefault (tstate=<optimized out>, f=<optimized out>, throwflag=<optimized out>) at /usr/src/debug/python3.9-3.9.10-2.el9.x86_64/Python/ceval.c:3520
#25 0x00007ffff7d6401d in _PyEval_EvalFrame (throwflag=0, f=0x5555555b8010, tstate=0x55555555cf90) at /usr/src/debug/python3.9-3.9.10-2.el9.x86_64/Include/internal/pycore_ceval.h:40
--Type <RET> for more, q to quit, c to continue without paging--run example.pyQuit
Compilers on Mint:
√ pybindings % gcc --version
gcc (Ubuntu 11.1.0-1ubuntu1~20.04) 11.1.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
√ pybindings % clang --version
Ubuntu clang version 13.0.1-++20220120110924+75e33f71c2da-1~exp1~20220120231001.58
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/local/bin
√ pybindings % python3 --version
Python 3.8.10
Compiler on CentOS:
[root@localhost pybindings]# gcc --version
gcc (GCC) 11.2.1 20220401 (Red Hat 11.2.1-10)
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
[root@localhost pybindings]# python3 --version
Python 3.9.10
If there is anything you want me to try or any tool I can run to collect information about the hardware/OS let me know.
Lines 39 to 45 in 0f21522
./hdbscan -m 5 -o ~/projects/hdbscan_out.csv ~/projects/hdbscan_inp.csv
It logs some info in the terminal, but I cannot find any output file.
Hi, this library seems to have great performance so I wanted to integrate it into my real time C++ application. However, with all the very custom data types that you use, I have been staring at it for over an hour and I have gotten nowhere. It would be really nice if you could provide an interface with some more standard or simpler data types as inputs and outputs. I think a lot more people would then be able to use this project, which you have spent so much time on.
Edit: I see now that that the types you use are not so complicated to use, but still, a little more of a wrapper or at least some more guiding docs would go a long way
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.