Skip to content

Commit 909a621

Browse files
committed
Dynamic thread count via getWorkers(), fix hardcoded P=36*8
1 parent 847e798 commit 909a621

2 files changed

Lines changed: 8 additions & 7 deletions

File tree

include/dbscan/kdNode.h

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,10 @@ class kdNode {
4747
}}
4848

4949
inline void boundingBoxParallel() {
50-
// intT P = getWorkers()*8;
51-
static const intT P = 36 * 8;
50+
intT P = getWorkers() * 8;
5251
intT blockSize = (n+P-1)/P;
53-
pointT localMin[P];
54-
pointT localMax[P];
52+
auto localMin = newA(pointT, P);
53+
auto localMax = newA(pointT, P);
5554
for (intT i=0; i<P; ++i) {
5655
localMin[i] = pointT(items[0]->coordinate());
5756
localMax[i] = pointT(items[0]->coordinate());}
@@ -68,6 +67,8 @@ class kdNode {
6867
for(intT p=0; p<P; ++p) {
6968
pMin.minCoords(localMin[p].x);
7069
pMax.maxCoords(localMax[p].x);}
70+
free(localMin);
71+
free(localMax);
7172
}
7273

7374
inline intT splitItemSerial(floatT xM) {

include/dbscan/shared.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -126,10 +126,9 @@ point<dim> pMinSerial(point<dim>* items, intT n) {
126126
template<int dim>
127127
point<dim> pMinParallel(point<dim>* items, intT n) {
128128
point<dim> pMin = point<dim>(items[0].x);
129-
// intT P = getWorkers()*8;
130-
static const intT P = 36 * 8;
129+
intT P = getWorkers() * 8;
131130
intT blockSize = (n+P-1)/P;
132-
point<dim> localMin[P];
131+
auto localMin = newA(point<dim>, P);
133132
for (intT i=0; i<P; ++i) {
134133
localMin[i] = point<dim>(items[0].x);}
135134
parallel_for(0, P, [&](intT p) {
@@ -141,5 +140,6 @@ point<dim> pMinParallel(point<dim>* items, intT n) {
141140
pMin = point<dim>(items[0].x);
142141
for(intT p=0; p<P; ++p) {
143142
pMin.minCoords(localMin[p].x);}
143+
free(localMin);
144144
return pMin;
145145
}

0 commit comments

Comments
 (0)