Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
tsoc
openmm
Commits
6d20ff07
Unverified
Commit
6d20ff07
authored
Sep 03, 2020
by
peastman
Committed by
GitHub
Sep 03, 2020
Browse files
Fixed range overflow on older AMD GPUs (#2829)
parent
c879fdbe
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
8 additions
and
8 deletions
+8
-8
platforms/opencl/src/kernels/findInteractingBlocks.cl
platforms/opencl/src/kernels/findInteractingBlocks.cl
+8
-8
No files found.
platforms/opencl/src/kernels/findInteractingBlocks.cl
View file @
6d20ff07
...
@@ -280,12 +280,12 @@ __kernel void findBlocksWithInteractions(real4 periodicBoxSize, real4 invPeriodi
...
@@ -280,12 +280,12 @@ __kernel void findBlocksWithInteractions(real4 periodicBoxSize, real4 invPeriodi
#define BUFFER_SIZE BUFFER_GROUPS*GROUP_SIZE
#define BUFFER_SIZE BUFFER_GROUPS*GROUP_SIZE
#define WARP_SIZE 32
#define WARP_SIZE 32
#define INVALID
0xFFFF
#define INVALID
-1
/**
/**
* Perform a parallel prefix sum over an array. The input values are all assumed to be 0 or 1.
* Perform a parallel prefix sum over an array. The input values are all assumed to be 0 or 1.
*/
*/
void prefixSum(__local
shor
t* sum, __local
ushor
t2* temp) {
void prefixSum(__local
in
t* sum, __local
in
t2* temp) {
for (int i = get_local_id(0); i < BUFFER_SIZE; i += get_local_size(0))
for (int i = get_local_id(0); i < BUFFER_SIZE; i += get_local_size(0))
temp[i].x = sum[i];
temp[i].x = sum[i];
barrier(CLK_LOCAL_MEM_FENCE);
barrier(CLK_LOCAL_MEM_FENCE);
...
@@ -313,7 +313,7 @@ void prefixSum(__local short* sum, __local ushort2* temp) {
...
@@ -313,7 +313,7 @@ void prefixSum(__local short* sum, __local ushort2* temp) {
* This is called by findBlocksWithInteractions(). It compacts the list of blocks, identifies interactions
* This is called by findBlocksWithInteractions(). It compacts the list of blocks, identifies interactions
* in them, and writes the result to global memory.
* in them, and writes the result to global memory.
*/
*/
void storeInteractionData(int x, __local
unsigned shor
t* buffer, __local
shor
t* sum, __local
ushor
t2* temp, __local int* atoms, __local int* numAtoms,
void storeInteractionData(int x, __local
in
t* buffer, __local
in
t* sum, __local
in
t2* temp, __local int* atoms, __local int* numAtoms,
__local int* baseIndex, __global unsigned int* interactionCount, __global int* interactingTiles, __global unsigned int* interactingAtoms, real4 periodicBoxSize,
__local int* baseIndex, __global unsigned int* interactionCount, __global int* interactingTiles, __global unsigned int* interactingAtoms, real4 periodicBoxSize,
real4 invPeriodicBoxSize, real4 periodicBoxVecX, real4 periodicBoxVecY, real4 periodicBoxVecZ, __global const real4* posq, __local real4* posBuffer,
real4 invPeriodicBoxSize, real4 periodicBoxVecX, real4 periodicBoxVecY, real4 periodicBoxVecZ, __global const real4* posq, __local real4* posBuffer,
real4 blockCenterX, real4 blockSizeX, unsigned int maxTiles, bool finish) {
real4 blockCenterX, real4 blockSizeX, unsigned int maxTiles, bool finish) {
...
@@ -455,9 +455,9 @@ __kernel void findBlocksWithInteractions(real4 periodicBoxSize, real4 invPeriodi
...
@@ -455,9 +455,9 @@ __kernel void findBlocksWithInteractions(real4 periodicBoxSize, real4 invPeriodi
__global const real4* restrict sortedBlockCenter, __global const real4* restrict sortedBlockBoundingBox,
__global const real4* restrict sortedBlockCenter, __global const real4* restrict sortedBlockBoundingBox,
__global const unsigned int* restrict exclusionIndices, __global const unsigned int* restrict exclusionRowIndices, __global real4* restrict oldPositions,
__global const unsigned int* restrict exclusionIndices, __global const unsigned int* restrict exclusionRowIndices, __global real4* restrict oldPositions,
__global const int* restrict rebuildNeighborList) {
__global const int* restrict rebuildNeighborList) {
__local
unsigned shor
t buffer[BUFFER_SIZE];
__local
in
t buffer[BUFFER_SIZE];
__local
shor
t sum[BUFFER_SIZE];
__local
in
t sum[BUFFER_SIZE];
__local
ushor
t2 temp[BUFFER_SIZE];
__local
in
t2 temp[BUFFER_SIZE];
__local int atoms[BUFFER_SIZE+TILE_SIZE];
__local int atoms[BUFFER_SIZE+TILE_SIZE];
__local real4 posBuffer[TILE_SIZE];
__local real4 posBuffer[TILE_SIZE];
__local int exclusionsForX[MAX_EXCLUSIONS];
__local int exclusionsForX[MAX_EXCLUSIONS];
...
@@ -509,7 +509,7 @@ __kernel void findBlocksWithInteractions(real4 periodicBoxSize, real4 invPeriodi
...
@@ -509,7 +509,7 @@ __kernel void findBlocksWithInteractions(real4 periodicBoxSize, real4 invPeriodi
real2 sortedKey2 = (j < NUM_BLOCKS ? sortedBlocks[j] : (real2) 0);
real2 sortedKey2 = (j < NUM_BLOCKS ? sortedBlocks[j] : (real2) 0);
real4 blockCenterY = (j < NUM_BLOCKS ? sortedBlockCenter[j] : (real4) 0);
real4 blockCenterY = (j < NUM_BLOCKS ? sortedBlockCenter[j] : (real4) 0);
real4 blockSizeY = (j < NUM_BLOCKS ? sortedBlockBoundingBox[j] : (real4) 0);
real4 blockSizeY = (j < NUM_BLOCKS ? sortedBlockBoundingBox[j] : (real4) 0);
unsigned short y = (unsigned shor
t) sortedKey2.y;
int y = (in
t) sortedKey2.y;
real4 delta = blockCenterX-blockCenterY;
real4 delta = blockCenterX-blockCenterY;
#ifdef USE_PERIODIC
#ifdef USE_PERIODIC
APPLY_PERIODIC_TO_DELTA(delta)
APPLY_PERIODIC_TO_DELTA(delta)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment