Commit 83284ce6 authored by Peter Eastman's avatar Peter Eastman
Browse files

Added volatile keyword to fix crashes on some GPUs

parent 3e7616fc
...@@ -178,7 +178,7 @@ extern "C" __global__ void computeN2Energy(unsigned long long* __restrict__ forc ...@@ -178,7 +178,7 @@ extern "C" __global__ void computeN2Energy(unsigned long long* __restrict__ forc
int skipBase = 0; int skipBase = 0;
int currentSkipIndex = tbx; int currentSkipIndex = tbx;
__shared__ int atomIndices[THREAD_BLOCK_SIZE]; __shared__ int atomIndices[THREAD_BLOCK_SIZE];
__shared__ int skipTiles[THREAD_BLOCK_SIZE]; __shared__ volatile int skipTiles[THREAD_BLOCK_SIZE];
skipTiles[threadIdx.x] = -1; skipTiles[threadIdx.x] = -1;
while (pos < end) { while (pos < end) {
......
...@@ -156,7 +156,7 @@ extern "C" __global__ void computeN2Value(const real4* __restrict__ posq, const ...@@ -156,7 +156,7 @@ extern "C" __global__ void computeN2Value(const real4* __restrict__ posq, const
int skipBase = 0; int skipBase = 0;
int currentSkipIndex = tbx; int currentSkipIndex = tbx;
__shared__ int atomIndices[THREAD_BLOCK_SIZE]; __shared__ int atomIndices[THREAD_BLOCK_SIZE];
__shared__ int skipTiles[THREAD_BLOCK_SIZE]; __shared__ volatile int skipTiles[THREAD_BLOCK_SIZE];
skipTiles[threadIdx.x] = -1; skipTiles[threadIdx.x] = -1;
while (pos < end) { while (pos < end) {
......
...@@ -216,7 +216,7 @@ extern "C" __global__ void computeBornSum(unsigned long long* __restrict__ globa ...@@ -216,7 +216,7 @@ extern "C" __global__ void computeBornSum(unsigned long long* __restrict__ globa
int skipBase = 0; int skipBase = 0;
int currentSkipIndex = tbx; int currentSkipIndex = tbx;
__shared__ int atomIndices[FORCE_WORK_GROUP_SIZE]; __shared__ int atomIndices[FORCE_WORK_GROUP_SIZE];
__shared__ int skipTiles[FORCE_WORK_GROUP_SIZE]; __shared__ volatile int skipTiles[FORCE_WORK_GROUP_SIZE];
skipTiles[threadIdx.x] = -1; skipTiles[threadIdx.x] = -1;
while (pos < end) { while (pos < end) {
...@@ -568,7 +568,7 @@ extern "C" __global__ void computeGBSAForce1(unsigned long long* __restrict__ fo ...@@ -568,7 +568,7 @@ extern "C" __global__ void computeGBSAForce1(unsigned long long* __restrict__ fo
int skipBase = 0; int skipBase = 0;
int currentSkipIndex = tbx; int currentSkipIndex = tbx;
__shared__ int atomIndices[FORCE_WORK_GROUP_SIZE]; __shared__ int atomIndices[FORCE_WORK_GROUP_SIZE];
__shared__ int skipTiles[FORCE_WORK_GROUP_SIZE]; __shared__ volatile int skipTiles[FORCE_WORK_GROUP_SIZE];
skipTiles[threadIdx.x] = -1; skipTiles[threadIdx.x] = -1;
while (pos < end) { while (pos < end) {
......
...@@ -194,7 +194,7 @@ extern "C" __global__ void computeNonbonded( ...@@ -194,7 +194,7 @@ extern "C" __global__ void computeNonbonded(
int skipBase = 0; int skipBase = 0;
int currentSkipIndex = tbx; int currentSkipIndex = tbx;
__shared__ int atomIndices[THREAD_BLOCK_SIZE]; __shared__ int atomIndices[THREAD_BLOCK_SIZE];
__shared__ int skipTiles[THREAD_BLOCK_SIZE]; __shared__ volatile int skipTiles[THREAD_BLOCK_SIZE];
skipTiles[threadIdx.x] = -1; skipTiles[threadIdx.x] = -1;
while (pos < end) { while (pos < end) {
......
...@@ -188,7 +188,7 @@ __kernel void computeN2Energy( ...@@ -188,7 +188,7 @@ __kernel void computeN2Energy(
int skipBase = 0; int skipBase = 0;
int currentSkipIndex = tbx; int currentSkipIndex = tbx;
__local int atomIndices[FORCE_WORK_GROUP_SIZE]; __local int atomIndices[FORCE_WORK_GROUP_SIZE];
__local int skipTiles[FORCE_WORK_GROUP_SIZE]; __local volatile int skipTiles[FORCE_WORK_GROUP_SIZE];
skipTiles[get_local_id(0)] = -1; skipTiles[get_local_id(0)] = -1;
while (pos < end) { while (pos < end) {
......
...@@ -164,7 +164,7 @@ __kernel void computeN2Value(__global const real4* restrict posq, __local real4* ...@@ -164,7 +164,7 @@ __kernel void computeN2Value(__global const real4* restrict posq, __local real4*
int skipBase = 0; int skipBase = 0;
int currentSkipIndex = tbx; int currentSkipIndex = tbx;
__local int atomIndices[FORCE_WORK_GROUP_SIZE]; __local int atomIndices[FORCE_WORK_GROUP_SIZE];
__local int skipTiles[FORCE_WORK_GROUP_SIZE]; __local volatile int skipTiles[FORCE_WORK_GROUP_SIZE];
skipTiles[get_local_id(0)] = -1; skipTiles[get_local_id(0)] = -1;
while (pos < end) { while (pos < end) {
......
...@@ -176,7 +176,7 @@ __kernel void computeBornSum( ...@@ -176,7 +176,7 @@ __kernel void computeBornSum(
int skipBase = 0; int skipBase = 0;
int currentSkipIndex = tbx; int currentSkipIndex = tbx;
__local int atomIndices[FORCE_WORK_GROUP_SIZE]; __local int atomIndices[FORCE_WORK_GROUP_SIZE];
__local int skipTiles[FORCE_WORK_GROUP_SIZE]; __local volatile int skipTiles[FORCE_WORK_GROUP_SIZE];
skipTiles[get_local_id(0)] = -1; skipTiles[get_local_id(0)] = -1;
while (pos < end) { while (pos < end) {
...@@ -550,7 +550,7 @@ __kernel void computeGBSAForce1( ...@@ -550,7 +550,7 @@ __kernel void computeGBSAForce1(
int skipBase = 0; int skipBase = 0;
int currentSkipIndex = tbx; int currentSkipIndex = tbx;
__local int atomIndices[FORCE_WORK_GROUP_SIZE]; __local int atomIndices[FORCE_WORK_GROUP_SIZE];
__local int skipTiles[FORCE_WORK_GROUP_SIZE]; __local volatile int skipTiles[FORCE_WORK_GROUP_SIZE];
skipTiles[get_local_id(0)] = -1; skipTiles[get_local_id(0)] = -1;
while (pos < end) { while (pos < end) {
......
...@@ -202,7 +202,7 @@ __kernel void computeNonbonded( ...@@ -202,7 +202,7 @@ __kernel void computeNonbonded(
int skipBase = 0; int skipBase = 0;
int currentSkipIndex = tbx; int currentSkipIndex = tbx;
__local int atomIndices[FORCE_WORK_GROUP_SIZE]; __local int atomIndices[FORCE_WORK_GROUP_SIZE];
__local int skipTiles[FORCE_WORK_GROUP_SIZE]; __local volatile int skipTiles[FORCE_WORK_GROUP_SIZE];
skipTiles[get_local_id(0)] = -1; skipTiles[get_local_id(0)] = -1;
while (pos < end) { while (pos < end) {
......
...@@ -760,7 +760,7 @@ extern "C" __global__ void computeEDiffForce( ...@@ -760,7 +760,7 @@ extern "C" __global__ void computeEDiffForce(
int end = startTileIndex+(warp+1)*numTiles/totalWarps; int end = startTileIndex+(warp+1)*numTiles/totalWarps;
int skipBase = 0; int skipBase = 0;
int currentSkipIndex = tbx; int currentSkipIndex = tbx;
__shared__ int skipTiles[EDIFF_THREAD_BLOCK_SIZE]; __shared__ volatile int skipTiles[EDIFF_THREAD_BLOCK_SIZE];
skipTiles[threadIdx.x] = -1; skipTiles[threadIdx.x] = -1;
while (pos < end) { while (pos < end) {
......
...@@ -220,7 +220,7 @@ extern "C" __global__ void computeElectrostatics( ...@@ -220,7 +220,7 @@ extern "C" __global__ void computeElectrostatics(
int skipBase = 0; int skipBase = 0;
int currentSkipIndex = tbx; int currentSkipIndex = tbx;
__shared__ int atomIndices[THREAD_BLOCK_SIZE]; __shared__ int atomIndices[THREAD_BLOCK_SIZE];
__shared__ int skipTiles[THREAD_BLOCK_SIZE]; __shared__ volatile int skipTiles[THREAD_BLOCK_SIZE];
skipTiles[threadIdx.x] = -1; skipTiles[threadIdx.x] = -1;
while (pos < end) { while (pos < end) {
......
...@@ -559,7 +559,7 @@ extern "C" __global__ void computeFixedField( ...@@ -559,7 +559,7 @@ extern "C" __global__ void computeFixedField(
int skipBase = 0; int skipBase = 0;
int currentSkipIndex = tbx; int currentSkipIndex = tbx;
__shared__ int atomIndices[THREAD_BLOCK_SIZE]; __shared__ int atomIndices[THREAD_BLOCK_SIZE];
__shared__ int skipTiles[THREAD_BLOCK_SIZE]; __shared__ volatile int skipTiles[THREAD_BLOCK_SIZE];
skipTiles[threadIdx.x] = -1; skipTiles[threadIdx.x] = -1;
while (pos < end) { while (pos < end) {
......
...@@ -329,7 +329,7 @@ extern "C" __global__ void computeInducedField( ...@@ -329,7 +329,7 @@ extern "C" __global__ void computeInducedField(
int skipBase = 0; int skipBase = 0;
int currentSkipIndex = tbx; int currentSkipIndex = tbx;
__shared__ int atomIndices[THREAD_BLOCK_SIZE]; __shared__ int atomIndices[THREAD_BLOCK_SIZE];
__shared__ int skipTiles[THREAD_BLOCK_SIZE]; __shared__ volatile int skipTiles[THREAD_BLOCK_SIZE];
skipTiles[threadIdx.x] = -1; skipTiles[threadIdx.x] = -1;
while (pos < end) { while (pos < end) {
......
...@@ -302,7 +302,7 @@ extern "C" __global__ void computeElectrostatics( ...@@ -302,7 +302,7 @@ extern "C" __global__ void computeElectrostatics(
int skipBase = 0; int skipBase = 0;
int currentSkipIndex = tbx; int currentSkipIndex = tbx;
__shared__ int atomIndices[THREAD_BLOCK_SIZE]; __shared__ int atomIndices[THREAD_BLOCK_SIZE];
__shared__ int skipTiles[THREAD_BLOCK_SIZE]; __shared__ volatile int skipTiles[THREAD_BLOCK_SIZE];
skipTiles[threadIdx.x] = -1; skipTiles[threadIdx.x] = -1;
while (pos < end) { while (pos < end) {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment