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
f5ea8297
Commit
f5ea8297
authored
Mar 25, 2010
by
Peter Eastman
Browse files
Optimization (clear the force and Born sum buffers in a single kernel)
parent
2cb112f0
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
65 additions
and
93 deletions
+65
-93
platforms/cuda/src/CudaKernels.cpp
platforms/cuda/src/CudaKernels.cpp
+10
-3
platforms/cuda/src/kernels/cudaKernels.h
platforms/cuda/src/kernels/cudaKernels.h
+1
-1
platforms/cuda/src/kernels/kCalculateCDLJObcGbsaForces1.cu
platforms/cuda/src/kernels/kCalculateCDLJObcGbsaForces1.cu
+0
-4
platforms/cuda/src/kernels/kCalculateGBVIBornSum.cu
platforms/cuda/src/kernels/kCalculateGBVIBornSum.cu
+0
-17
platforms/cuda/src/kernels/kCalculateObcGbsaBornSum.cu
platforms/cuda/src/kernels/kCalculateObcGbsaBornSum.cu
+0
-21
platforms/cuda/src/kernels/kForces.cu
platforms/cuda/src/kernels/kForces.cu
+54
-47
No files found.
platforms/cuda/src/CudaKernels.cpp
View file @
f5ea8297
...
...
@@ -47,6 +47,9 @@ void CudaCalcForcesAndEnergyKernel::beginForceComputation(ContextImpl& context)
if
(
data
.
nonbondedMethod
!=
NO_CUTOFF
&&
data
.
computeForceCount
%
100
==
0
)
gpuReorderAtoms
(
gpu
);
data
.
computeForceCount
++
;
if
(
gpu
->
bIncludeGBSA
||
gpu
->
bIncludeGBVI
)
kClearBornSumAndForces
(
gpu
);
else
kClearForces
(
gpu
);
}
...
...
@@ -77,6 +80,8 @@ void CudaCalcForcesAndEnergyKernel::beginEnergyComputation(ContextImpl& context)
gpuReorderAtoms
(
gpu
);
data
.
stepCount
++
;
kClearEnergy
(
gpu
);
if
(
gpu
->
bIncludeGBSA
||
gpu
->
bIncludeGBVI
)
kClearBornSumAndForces
(
gpu
);
}
double
CudaCalcForcesAndEnergyKernel
::
finishEnergyComputation
(
ContextImpl
&
context
)
{
...
...
@@ -790,7 +795,9 @@ void OPENMMCUDA_EXPORT OpenMM::cudaOpenMMInitializeIntegration(const System& sys
gpuBuildExclusionList
(
gpu
);
gpuBuildOutputBuffers
(
gpu
);
gpuSetConstants
(
gpu
);
kClearBornForces
(
gpu
);
if
(
gpu
->
bIncludeGBSA
||
gpu
->
bIncludeGBVI
)
kClearBornSumAndForces
(
gpu
);
else
kClearForces
(
gpu
);
cudaThreadSynchronize
();
}
...
...
platforms/cuda/src/kernels/cudaKernels.h
View file @
f5ea8297
...
...
@@ -29,7 +29,7 @@
// Initialization
extern
void
kClearForces
(
gpuContext
gpu
);
extern
void
kClearEnergy
(
gpuContext
gpu
);
extern
void
kClearBornForces
(
gpuContext
gpu
);
extern
void
kClearBorn
SumAnd
Forces
(
gpuContext
gpu
);
extern
void
kClearObcGbsaBornSum
(
gpuContext
gpu
);
extern
void
kCalculateObcGbsaBornSum
(
gpuContext
gpu
);
extern
void
kReduceObcGbsaBornSum
(
gpuContext
gpu
);
...
...
platforms/cuda/src/kernels/kCalculateCDLJObcGbsaForces1.cu
View file @
f5ea8297
...
...
@@ -134,10 +134,6 @@ extern void kCalculatePME(gpuContext gpu);
void
kCalculateCDLJObcGbsaForces1
(
gpuContext
gpu
)
{
// printf("kCalculateCDLJObcGbsaForces1\n");
// check if Born radii need to be calculated
kClearBornForces
(
gpu
);
switch
(
gpu
->
sim
.
nonbondedMethod
)
{
case
NO_CUTOFF
:
...
...
platforms/cuda/src/kernels/kCalculateGBVIBornSum.cu
View file @
f5ea8297
...
...
@@ -102,21 +102,6 @@ void GetCalculateGBVIBornSumSim(gpuContext gpu)
#define METHOD_NAME(a, b) a##PeriodicByWarp##b
#include "kCalculateGBVIBornSum.h"
__global__
void
kClearGBVIBornSum_kernel
()
{
unsigned
int
pos
=
blockIdx
.
x
*
blockDim
.
x
+
threadIdx
.
x
;
while
(
pos
<
cSim
.
stride
*
cSim
.
nonbondOutputBuffers
)
{
((
float
*
)
cSim
.
pBornSum
)[
pos
]
=
0.0
f
;
pos
+=
gridDim
.
x
*
blockDim
.
x
;
}
}
void
kClearGBVIBornSum
(
gpuContext
gpu
)
{
kClearGBVIBornSum_kernel
<<<
gpu
->
sim
.
blocks
,
384
>>>
();
}
__global__
void
kReduceGBVIBornSum_kernel
()
{
unsigned
int
pos
=
(
blockIdx
.
x
*
blockDim
.
x
+
threadIdx
.
x
);
...
...
@@ -177,8 +162,6 @@ void kReduceGBVIBornSum(gpuContext gpu)
void
kCalculateGBVIBornSum
(
gpuContext
gpu
)
{
//printf("kCalculateGBVIBornSum\n");
kClearGBVIBornSum
(
gpu
);
LAUNCHERROR
(
"kClearBornSum"
);
//size_t numWithInteractions;
switch
(
gpu
->
sim
.
nonbondedMethod
)
{
...
...
platforms/cuda/src/kernels/kCalculateObcGbsaBornSum.cu
View file @
f5ea8297
...
...
@@ -97,19 +97,6 @@ void GetCalculateObcGbsaBornSumSim(gpuContext gpu)
#define METHOD_NAME(a, b) a##PeriodicByWarp##b
#include "kCalculateObcGbsaBornSum.h"
__global__
__launch_bounds__
(
384
,
1
)
void
kClearObcGbsaBornSum_kernel
()
{
unsigned
int
pos
=
blockIdx
.
x
*
blockDim
.
x
+
threadIdx
.
x
;
while
(
pos
<
cSim
.
stride
*
cSim
.
nonbondOutputBuffers
)
{
((
float
*
)
cSim
.
pBornSum
)[
pos
]
=
0.0
f
;
pos
+=
gridDim
.
x
*
blockDim
.
x
;
}
}
__global__
__launch_bounds__
(
384
,
1
)
void
kReduceObcGbsaBornSum_kernel
()
...
...
@@ -154,17 +141,9 @@ void kReduceObcGbsaBornSum(gpuContext gpu)
LAUNCHERROR
(
"kReduceObcGbsaBornSum"
);
}
extern
void
kClearObcGbsaBornSum
(
gpuContext
gpu
)
{
// printf("kClearObcGbsaBornSum\n");
kClearObcGbsaBornSum_kernel
<<<
gpu
->
sim
.
blocks
,
384
>>>
();
}
void
kCalculateObcGbsaBornSum
(
gpuContext
gpu
)
{
// printf("kCalculateObcgbsaBornSum\n");
kClearObcGbsaBornSum
(
gpu
);
LAUNCHERROR
(
"kClearBornSum"
);
switch
(
gpu
->
sim
.
nonbondedMethod
)
{
case
NO_CUTOFF
:
...
...
platforms/cuda/src/kernels/kForces.cu
View file @
f5ea8297
...
...
@@ -74,21 +74,28 @@ void kClearForces(gpuContext gpu)
__global__
__launch_bounds__
(
384
,
1
)
void
kClearBornForces_kernel
()
void
kClearBorn
SumAnd
Forces_kernel
()
{
unsigned
int
pos
=
blockIdx
.
x
*
blockDim
.
x
+
threadIdx
.
x
;
while
(
pos
<
cSim
.
stride
*
cSim
.
nonbondOutputBuffers
)
{
((
float
*
)
cSim
.
pBornForce
)[
pos
]
=
0.0
f
;
cSim
.
pBornSum
[
pos
]
=
0.0
f
;
cSim
.
pBornForce
[
pos
]
=
0.0
f
;
cSim
.
pForce4
[
pos
]
=
make_float4
(
0.0
f
,
0.0
f
,
0.0
f
,
0.0
f
);
pos
+=
gridDim
.
x
*
blockDim
.
x
;
}
while
(
pos
<
cSim
.
stride
*
cSim
.
outputBuffers
)
{
cSim
.
pForce4
[
pos
]
=
make_float4
(
0.0
f
,
0.0
f
,
0.0
f
,
0.0
f
);
pos
+=
gridDim
.
x
*
blockDim
.
x
;
}
}
void
kClearBornForces
(
gpuContext
gpu
)
void
kClearBorn
SumAnd
Forces
(
gpuContext
gpu
)
{
// printf("kClearBornForces\n");
kClearBornForces_kernel
<<<
gpu
->
sim
.
blocks
,
384
>>>
();
LAUNCHERROR
(
"kClearBornForces"
);
// printf("kClearBorn
SumAnd
Forces\n");
kClearBorn
SumAnd
Forces_kernel
<<<
gpu
->
sim
.
blocks
,
384
>>>
();
LAUNCHERROR
(
"kClearBorn
SumAnd
Forces"
);
}
__global__
...
...
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