Re: [OSGeo-Discuss] Concurrency problems, please help

2020-09-24 Thread Pierre Abbat
I got it working. I made each thread insert points only into blocks whose 
number matches the thread's number mod the number of threads. Locking the 
cubes was not enough.

Pierre

-- 
Don't buy a French car in Holland. It may be a citroen.



___
Discuss mailing list
Discuss@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/discuss

Re: [OSGeo-Discuss] Concurrency problems, please help

2020-09-23 Thread Pierre Abbat
On Wednesday, September 23, 2020 3:31:28 AM EDT Martin Dobias wrote:
> Hi Pierre
> 
> While I don't have concrete advice for your implementation, I would
> like to suggest having a look at Entwine [1] and/or PotreeConverter
> [2] projects and maybe reuse their code. Both of them have only a
> single task - to build an octree from potentially massive amounts of
> point cloud data.

Could you tell me where the octree-building code is?

Pierre

-- 
The Black Garden on the Mountain is not on the Black Mountain.



___
Discuss mailing list
Discuss@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/discuss

Re: [OSGeo-Discuss] Concurrency problems, please help

2020-09-23 Thread Martin Dobias
Hi Pierre

While I don't have concrete advice for your implementation, I would
like to suggest having a look at Entwine [1] and/or PotreeConverter
[2] projects and maybe reuse their code. Both of them have only a
single task - to build an octree from potentially massive amounts of
point cloud data.

I will start working on point cloud visualization in QGIS in the
coming months and I plan to use code from one of the projects to build
octrees for efficient visualization (more details here [3]).

Regards
Martin

[1] https://github.com/connormanning/entwine
[2] https://github.com/potree/PotreeConverter
[3] https://github.com/qgis/QGIS-Enhancement-Proposals/issues/194

On Wed, Sep 23, 2020 at 3:11 AM Pierre Abbat  wrote:
>
> https://github.com/phma/wolkenbase
> I just published the repo. I've been racking my brains on this problem for
> months. Wolkenbase reads a point cloud and makes an octree, in order to
> classify points. The basic algorithm of building the octree is sound, but
> slow, so I'm trying to multithread it.
>
> Wolkenbase has to handle point clouds that are too big to fit in RAM, so it
> allocates block buffers until RAM gets low, then swaps blocks out to files. So
> that it can continue putting points in the octree while writing blocks to
> files, it uses more files than there are threads.
>
> I'm testing it with a small point cloud of 250024 points, so that it doesn't
> have to write to disk while it constructs the octree, but still it loses
> points. I've found and fixed bugs in the splitting routine. I currently have 
> it
> checking after each point it inserts to make sure that it's in there. I've
> found, and I think I fixed, a bug where one thread checked a point while
> another thread was splitting the block where the point was inserted, so it
> didn't find it. Now it fails to find a point, but the point is not in the 
> block
> being split. It may fail to find 24 points while it's building the octree, but
> when it's finished they're all there, or it's missing one or three of them.
>
> I have a huge point cloud (19 files, 3.5 GB total) which I've tried Wolkenbase
> on, but it complains that the point is already in the octree. This turned out
> to be points scattered through the cloud that have been "deleted" by
> overwriting with all zeros. (0,0,0) is offset to somewhere within the cube, 
> and
> is equal to (0,0,0), so I can't rely on the point count in the dump file.
>
> I cut it down to one thread; it works perfectly. With two threads, it works
> fine, but with three, it loses points. Usually two threads are sufficient to
> allow a concurrency bug to happen.
>
> Can someone look at the program and suggest how to make it work?
>
> Pierre
> --
> li ze te'a ci vu'u ci bi'e te'a mu du
> li ci su'i ze te'a mu bi'e vu'u ci
>
>
>
> ___
> Discuss mailing list
> Discuss@lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/discuss
___
Discuss mailing list
Discuss@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/discuss

[OSGeo-Discuss] Concurrency problems, please help

2020-09-22 Thread Pierre Abbat
https://github.com/phma/wolkenbase
I just published the repo. I've been racking my brains on this problem for 
months. Wolkenbase reads a point cloud and makes an octree, in order to 
classify points. The basic algorithm of building the octree is sound, but 
slow, so I'm trying to multithread it.

Wolkenbase has to handle point clouds that are too big to fit in RAM, so it 
allocates block buffers until RAM gets low, then swaps blocks out to files. So 
that it can continue putting points in the octree while writing blocks to 
files, it uses more files than there are threads.

I'm testing it with a small point cloud of 250024 points, so that it doesn't 
have to write to disk while it constructs the octree, but still it loses 
points. I've found and fixed bugs in the splitting routine. I currently have it 
checking after each point it inserts to make sure that it's in there. I've 
found, and I think I fixed, a bug where one thread checked a point while 
another thread was splitting the block where the point was inserted, so it 
didn't find it. Now it fails to find a point, but the point is not in the block 
being split. It may fail to find 24 points while it's building the octree, but 
when it's finished they're all there, or it's missing one or three of them.

I have a huge point cloud (19 files, 3.5 GB total) which I've tried Wolkenbase 
on, but it complains that the point is already in the octree. This turned out 
to be points scattered through the cloud that have been "deleted" by 
overwriting with all zeros. (0,0,0) is offset to somewhere within the cube, and 
is equal to (0,0,0), so I can't rely on the point count in the dump file.

I cut it down to one thread; it works perfectly. With two threads, it works 
fine, but with three, it loses points. Usually two threads are sufficient to 
allow a concurrency bug to happen.

Can someone look at the program and suggest how to make it work?

Pierre
-- 
li ze te'a ci vu'u ci bi'e te'a mu du
li ci su'i ze te'a mu bi'e vu'u ci



___
Discuss mailing list
Discuss@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/discuss