Skip to main content
. Author manuscript; available in PMC: 2017 Apr 15.
Published in final edited form as: J Comput Chem. 2016 Jan 20;37(10):927–939. doi: 10.1002/jcc.24280

Table 1.

Layout of the 4 lookup table kernels.

kernel no. blocks no. threads per block description
System extrema 1 64 Calculate the maximum and minimum dimensions of the system, define the size and shape of the lookup table. When periodic boundaries are used, these calculations only need to be performed once and this kernel is ignored.
Reset lookup table dimX * dimY * dimZ 1 Each block attends one voxel, and the single thread in each block sets the number of atoms per voxel to 0.
Fill lookup table number of atoms 256 Each block attends one atom, and each thread attends one voxel near that atom. If the atom resides in this voxel (see eq. 21), then this atom's index is recorded.
Sort lookup table dimX * dimY * dimZ 25 Each block sorts one voxel of space. Each thread sorts one atom in the 1D lookup list at the block's voxel. Atoms are sorted by distance to the voxel's center ratom, voxel using a parallel bubble-sort. Although O(N2) comparisons take place during the sort, the parallel architecture allows it to run in O(N) time. Since the sorted array finds quadrature points inside atoms faster than unsorted arrays, it speeds up the Born radius calculation by about 40 % over using an unsorted lookup table.