Skip to content
Snippets Groups Projects
Commit 17c17ac4 authored by Axel Kohlmeyer's avatar Axel Kohlmeyer
Browse files

update multi-threaded neighbor list build for neighbor list refactor

parent 39ededd4
No related branches found
No related tags found
No related merge requests found
...@@ -45,12 +45,10 @@ void NPairHalfRespaBinNewtoffOmp::build(NeighList *list) ...@@ -45,12 +45,10 @@ void NPairHalfRespaBinNewtoffOmp::build(NeighList *list)
NPAIR_OMP_INIT; NPAIR_OMP_INIT;
NeighList *listinner = list->listinner;
NeighList *listmiddle = list->listmiddle;
const int respamiddle = list->respamiddle; const int respamiddle = list->respamiddle;
#if defined(_OPENMP) #if defined(_OPENMP)
#pragma omp parallel default(none) shared(list,listinner,listmiddle) #pragma omp parallel default(none) shared(list)
#endif #endif
NPAIR_OMP_SETUP(nlocal); NPAIR_OMP_SETUP(nlocal);
...@@ -77,26 +75,26 @@ void NPairHalfRespaBinNewtoffOmp::build(NeighList *list) ...@@ -77,26 +75,26 @@ void NPairHalfRespaBinNewtoffOmp::build(NeighList *list)
int *numneigh = list->numneigh; int *numneigh = list->numneigh;
int **firstneigh = list->firstneigh; int **firstneigh = list->firstneigh;
int *ilist_inner = listinner->ilist; int *ilist_inner = list->ilist_inner;
int *numneigh_inner = listinner->numneigh; int *numneigh_inner = list->numneigh_inner;
int **firstneigh_inner = listinner->firstneigh; int **firstneigh_inner = list->firstneigh_inner;
int *ilist_middle,*numneigh_middle,**firstneigh_middle; int *ilist_middle,*numneigh_middle,**firstneigh_middle;
if (respamiddle) { if (respamiddle) {
ilist_middle = listmiddle->ilist; ilist_middle = list->ilist_middle;
numneigh_middle = listmiddle->numneigh; numneigh_middle = list->numneigh_middle;
firstneigh_middle = listmiddle->firstneigh; firstneigh_middle = list->firstneigh_middle;
} }
// each thread has its own page allocator // each thread has its own page allocator
MyPage<int> &ipage = list->ipage[tid]; MyPage<int> &ipage = list->ipage[tid];
MyPage<int> &ipage_inner = listinner->ipage[tid]; MyPage<int> &ipage_inner = list->ipage_inner[tid];
ipage.reset(); ipage.reset();
ipage_inner.reset(); ipage_inner.reset();
MyPage<int> *ipage_middle; MyPage<int> *ipage_middle;
if (respamiddle) { if (respamiddle) {
ipage_middle = listmiddle->ipage + tid; ipage_middle = list->ipage_middle + tid;
ipage_middle->reset(); ipage_middle->reset();
} }
...@@ -199,6 +197,6 @@ void NPairHalfRespaBinNewtoffOmp::build(NeighList *list) ...@@ -199,6 +197,6 @@ void NPairHalfRespaBinNewtoffOmp::build(NeighList *list)
} }
NPAIR_OMP_CLOSE; NPAIR_OMP_CLOSE;
list->inum = nlocal; list->inum = nlocal;
listinner->inum = nlocal; list->inum_inner = nlocal;
if (respamiddle) listmiddle->inum = nlocal; if (respamiddle) list->inum_middle = nlocal;
} }
...@@ -44,12 +44,10 @@ void NPairHalfRespaBinNewtonOmp::build(NeighList *list) ...@@ -44,12 +44,10 @@ void NPairHalfRespaBinNewtonOmp::build(NeighList *list)
NPAIR_OMP_INIT; NPAIR_OMP_INIT;
NeighList *listinner = list->listinner;
NeighList *listmiddle = list->listmiddle;
const int respamiddle = list->respamiddle; const int respamiddle = list->respamiddle;
#if defined(_OPENMP) #if defined(_OPENMP)
#pragma omp parallel default(none) shared(list,listinner,listmiddle) #pragma omp parallel default(none) shared(list)
#endif #endif
NPAIR_OMP_SETUP(nlocal); NPAIR_OMP_SETUP(nlocal);
...@@ -76,26 +74,26 @@ void NPairHalfRespaBinNewtonOmp::build(NeighList *list) ...@@ -76,26 +74,26 @@ void NPairHalfRespaBinNewtonOmp::build(NeighList *list)
int *numneigh = list->numneigh; int *numneigh = list->numneigh;
int **firstneigh = list->firstneigh; int **firstneigh = list->firstneigh;
int *ilist_inner = listinner->ilist; int *ilist_inner = list->ilist_inner;
int *numneigh_inner = listinner->numneigh; int *numneigh_inner = list->numneigh_inner;
int **firstneigh_inner = listinner->firstneigh; int **firstneigh_inner = list->firstneigh_inner;
int *ilist_middle,*numneigh_middle,**firstneigh_middle; int *ilist_middle,*numneigh_middle,**firstneigh_middle;
if (respamiddle) { if (respamiddle) {
ilist_middle = listmiddle->ilist; ilist_middle = list->ilist_middle;
numneigh_middle = listmiddle->numneigh; numneigh_middle = list->numneigh_middle;
firstneigh_middle = listmiddle->firstneigh; firstneigh_middle = list->firstneigh_middle;
} }
// each thread has its own page allocator // each thread has its own page allocator
MyPage<int> &ipage = list->ipage[tid]; MyPage<int> &ipage = list->ipage[tid];
MyPage<int> &ipage_inner = listinner->ipage[tid]; MyPage<int> &ipage_inner = list->ipage_inner[tid];
ipage.reset(); ipage.reset();
ipage_inner.reset(); ipage_inner.reset();
MyPage<int> *ipage_middle; MyPage<int> *ipage_middle;
if (respamiddle) { if (respamiddle) {
ipage_middle = listmiddle->ipage + tid; ipage_middle = list->ipage_middle + tid;
ipage_middle->reset(); ipage_middle->reset();
} }
...@@ -245,6 +243,6 @@ void NPairHalfRespaBinNewtonOmp::build(NeighList *list) ...@@ -245,6 +243,6 @@ void NPairHalfRespaBinNewtonOmp::build(NeighList *list)
} }
NPAIR_OMP_CLOSE; NPAIR_OMP_CLOSE;
list->inum = nlocal; list->inum = nlocal;
listinner->inum = nlocal; list->inum_inner = nlocal;
if (respamiddle) listmiddle->inum = nlocal; if (respamiddle) list->inum_middle = nlocal;
} }
...@@ -44,12 +44,10 @@ void NPairHalfRespaBinNewtonTriOmp::build(NeighList *list) ...@@ -44,12 +44,10 @@ void NPairHalfRespaBinNewtonTriOmp::build(NeighList *list)
NPAIR_OMP_INIT; NPAIR_OMP_INIT;
NeighList *listinner = list->listinner;
NeighList *listmiddle = list->listmiddle;
const int respamiddle = list->respamiddle; const int respamiddle = list->respamiddle;
#if defined(_OPENMP) #if defined(_OPENMP)
#pragma omp parallel default(none) shared(list,listinner,listmiddle) #pragma omp parallel default(none) shared(list)
#endif #endif
NPAIR_OMP_SETUP(nlocal); NPAIR_OMP_SETUP(nlocal);
...@@ -76,26 +74,26 @@ void NPairHalfRespaBinNewtonTriOmp::build(NeighList *list) ...@@ -76,26 +74,26 @@ void NPairHalfRespaBinNewtonTriOmp::build(NeighList *list)
int *numneigh = list->numneigh; int *numneigh = list->numneigh;
int **firstneigh = list->firstneigh; int **firstneigh = list->firstneigh;
int *ilist_inner = listinner->ilist; int *ilist_inner = list->ilist_inner;
int *numneigh_inner = listinner->numneigh; int *numneigh_inner = list->numneigh_inner;
int **firstneigh_inner = listinner->firstneigh; int **firstneigh_inner = list->firstneigh_inner;
int *ilist_middle,*numneigh_middle,**firstneigh_middle; int *ilist_middle,*numneigh_middle,**firstneigh_middle;
if (respamiddle) { if (respamiddle) {
ilist_middle = listmiddle->ilist; ilist_middle = list->ilist_middle;
numneigh_middle = listmiddle->numneigh; numneigh_middle = list->numneigh_middle;
firstneigh_middle = listmiddle->firstneigh; firstneigh_middle = list->firstneigh_middle;
} }
// each thread has its own page allocator // each thread has its own page allocator
MyPage<int> &ipage = list->ipage[tid]; MyPage<int> &ipage = list->ipage[tid];
MyPage<int> &ipage_inner = listinner->ipage[tid]; MyPage<int> &ipage_inner = list->ipage_inner[tid];
ipage.reset(); ipage.reset();
ipage_inner.reset(); ipage_inner.reset();
MyPage<int> *ipage_middle; MyPage<int> *ipage_middle;
if (respamiddle) { if (respamiddle) {
ipage_middle = listmiddle->ipage + tid; ipage_middle = list->ipage_middle + tid;
ipage_middle->reset(); ipage_middle->reset();
} }
...@@ -206,6 +204,6 @@ void NPairHalfRespaBinNewtonTriOmp::build(NeighList *list) ...@@ -206,6 +204,6 @@ void NPairHalfRespaBinNewtonTriOmp::build(NeighList *list)
} }
NPAIR_OMP_CLOSE; NPAIR_OMP_CLOSE;
list->inum = nlocal; list->inum = nlocal;
listinner->inum = nlocal; list->inum_inner = nlocal;
if (respamiddle) listmiddle->inum = nlocal; if (respamiddle) list->inum_middle = nlocal;
} }
...@@ -46,12 +46,10 @@ void NPairHalfRespaNsqNewtoffOmp::build(NeighList *list) ...@@ -46,12 +46,10 @@ void NPairHalfRespaNsqNewtoffOmp::build(NeighList *list)
NPAIR_OMP_INIT; NPAIR_OMP_INIT;
NeighList *listinner = list->listinner;
NeighList *listmiddle = list->listmiddle;
const int respamiddle = list->respamiddle; const int respamiddle = list->respamiddle;
#if defined(_OPENMP) #if defined(_OPENMP)
#pragma omp parallel default(none) shared(list,listinner,listmiddle) #pragma omp parallel default(none) shared(list)
#endif #endif
NPAIR_OMP_SETUP(nlocal); NPAIR_OMP_SETUP(nlocal);
...@@ -80,26 +78,26 @@ void NPairHalfRespaNsqNewtoffOmp::build(NeighList *list) ...@@ -80,26 +78,26 @@ void NPairHalfRespaNsqNewtoffOmp::build(NeighList *list)
int *numneigh = list->numneigh; int *numneigh = list->numneigh;
int **firstneigh = list->firstneigh; int **firstneigh = list->firstneigh;
int *ilist_inner = listinner->ilist; int *ilist_inner = list->ilist_inner;
int *numneigh_inner = listinner->numneigh; int *numneigh_inner = list->numneigh_inner;
int **firstneigh_inner = listinner->firstneigh; int **firstneigh_inner = list->firstneigh_inner;
int *ilist_middle,*numneigh_middle,**firstneigh_middle; int *ilist_middle,*numneigh_middle,**firstneigh_middle;
if (respamiddle) { if (respamiddle) {
ilist_middle = listmiddle->ilist; ilist_middle = list->ilist_middle;
numneigh_middle = listmiddle->numneigh; numneigh_middle = list->numneigh_middle;
firstneigh_middle = listmiddle->firstneigh; firstneigh_middle = list->firstneigh_middle;
} }
// each thread has its own page allocator // each thread has its own page allocator
MyPage<int> &ipage = list->ipage[tid]; MyPage<int> &ipage = list->ipage[tid];
MyPage<int> &ipage_inner = listinner->ipage[tid]; MyPage<int> &ipage_inner = list->ipage_inner[tid];
ipage.reset(); ipage.reset();
ipage_inner.reset(); ipage_inner.reset();
MyPage<int> *ipage_middle; MyPage<int> *ipage_middle;
if (respamiddle) { if (respamiddle) {
ipage_middle = listmiddle->ipage + tid; ipage_middle = list->ipage_middle + tid;
ipage_middle->reset(); ipage_middle->reset();
} }
...@@ -193,6 +191,6 @@ void NPairHalfRespaNsqNewtoffOmp::build(NeighList *list) ...@@ -193,6 +191,6 @@ void NPairHalfRespaNsqNewtoffOmp::build(NeighList *list)
} }
NPAIR_OMP_CLOSE; NPAIR_OMP_CLOSE;
list->inum = nlocal; list->inum = nlocal;
listinner->inum = nlocal; list->inum_inner = nlocal;
if (respamiddle) listmiddle->inum = nlocal; if (respamiddle) list->inum_middle = nlocal;
} }
...@@ -47,12 +47,10 @@ void NPairHalfRespaNsqNewtonOmp::build(NeighList *list) ...@@ -47,12 +47,10 @@ void NPairHalfRespaNsqNewtonOmp::build(NeighList *list)
NPAIR_OMP_INIT; NPAIR_OMP_INIT;
NeighList *listinner = list->listinner;
NeighList *listmiddle = list->listmiddle;
const int respamiddle = list->respamiddle; const int respamiddle = list->respamiddle;
#if defined(_OPENMP) #if defined(_OPENMP)
#pragma omp parallel default(none) shared(list,listinner,listmiddle) #pragma omp parallel default(none) shared(list)
#endif #endif
NPAIR_OMP_SETUP(nlocal); NPAIR_OMP_SETUP(nlocal);
...@@ -81,26 +79,26 @@ void NPairHalfRespaNsqNewtonOmp::build(NeighList *list) ...@@ -81,26 +79,26 @@ void NPairHalfRespaNsqNewtonOmp::build(NeighList *list)
int *numneigh = list->numneigh; int *numneigh = list->numneigh;
int **firstneigh = list->firstneigh; int **firstneigh = list->firstneigh;
int *ilist_inner = listinner->ilist; int *ilist_inner = list->ilist_inner;
int *numneigh_inner = listinner->numneigh; int *numneigh_inner = list->numneigh_inner;
int **firstneigh_inner = listinner->firstneigh; int **firstneigh_inner = list->firstneigh_inner;
int *ilist_middle,*numneigh_middle,**firstneigh_middle; int *ilist_middle,*numneigh_middle,**firstneigh_middle;
if (respamiddle) { if (respamiddle) {
ilist_middle = listmiddle->ilist; ilist_middle = list->ilist_middle;
numneigh_middle = listmiddle->numneigh; numneigh_middle = list->numneigh_middle;
firstneigh_middle = listmiddle->firstneigh; firstneigh_middle = list->firstneigh_middle;
} }
// each thread has its own page allocator // each thread has its own page allocator
MyPage<int> &ipage = list->ipage[tid]; MyPage<int> &ipage = list->ipage[tid];
MyPage<int> &ipage_inner = listinner->ipage[tid]; MyPage<int> &ipage_inner = list->ipage_inner[tid];
ipage.reset(); ipage.reset();
ipage_inner.reset(); ipage_inner.reset();
MyPage<int> *ipage_middle; MyPage<int> *ipage_middle;
if (respamiddle) { if (respamiddle) {
ipage_middle = listmiddle->ipage + tid; ipage_middle = list->ipage_middle + tid;
ipage_middle->reset(); ipage_middle->reset();
} }
...@@ -212,6 +210,6 @@ void NPairHalfRespaNsqNewtonOmp::build(NeighList *list) ...@@ -212,6 +210,6 @@ void NPairHalfRespaNsqNewtonOmp::build(NeighList *list)
} }
NPAIR_OMP_CLOSE; NPAIR_OMP_CLOSE;
list->inum = nlocal; list->inum = nlocal;
listinner->inum = nlocal; list->inum_inner = nlocal;
if (respamiddle) listmiddle->inum = nlocal; if (respamiddle) list->inum_middle = nlocal;
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment