removed last OpenMP O(nthreads) bottleneck
authorBerk Hess <hess@kth.se>
Sat, 1 Dec 2012 19:11:29 +0000 (20:11 +0100)
committerGerrit Code Review <gerrit@gerrit.gromacs.org>
Thu, 6 Dec 2012 10:19:40 +0000 (11:19 +0100)
commitb7238a611133880d2dd73d54b1aa1bdede449013
treee9deb32858643747b3f71ac31e7265fdb9207463
parent43a5d02e43794e373f868f9e08133c330dc8cfdd
removed last OpenMP O(nthreads) bottleneck

The nbnxn non-bonded force buffer clear would zero the full force
buffer for every OpenMP thread, which lead to O(nthreads) operations.
Now each threads only clears block of the buffer is actually uses.
The buffer flagging procedure has been simplified and the reduction
has been made more efficient. With domain decomposition there is not
much improvement yet, here we should change the assignment of pairs
to threads.

Change-Id: Ib657f8eaa394afdd82086dcc59cbb8c5926f77f0
include/types/nbnxn_pairlist.h
src/mdlib/nbnxn_atomdata.c
src/mdlib/nbnxn_internal.h
src/mdlib/nbnxn_kernels/nbnxn_kernel_common.c
src/mdlib/nbnxn_kernels/nbnxn_kernel_common.h
src/mdlib/nbnxn_kernels/nbnxn_kernel_gpu_ref.c
src/mdlib/nbnxn_kernels/nbnxn_kernel_ref.c
src/mdlib/nbnxn_kernels/nbnxn_kernel_x86_simd128.c
src/mdlib/nbnxn_kernels/nbnxn_kernel_x86_simd256.c
src/mdlib/nbnxn_search.c
src/mdlib/nbnxn_search.h