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
aa4f6c62
Commit
aa4f6c62
authored
Nov 09, 2009
by
Peter Eastman
Browse files
Bug fix
parent
6d1814ac
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
10 additions
and
11 deletions
+10
-11
platforms/opencl/src/OpenCLKernels.cpp
platforms/opencl/src/OpenCLKernels.cpp
+4
-5
platforms/opencl/src/kernels/langevin.cl
platforms/opencl/src/kernels/langevin.cl
+6
-6
No files found.
platforms/opencl/src/OpenCLKernels.cpp
View file @
aa4f6c62
...
@@ -217,9 +217,8 @@ void OpenCLCalcHarmonicBondForceKernel::initialize(const System& system, const H
...
@@ -217,9 +217,8 @@ void OpenCLCalcHarmonicBondForceKernel::initialize(const System& system, const H
int
particle1
,
particle2
;
int
particle1
,
particle2
;
double
length
,
k
;
double
length
,
k
;
force
.
getBondParameters
(
i
,
particle1
,
particle2
,
length
,
k
);
force
.
getBondParameters
(
i
,
particle1
,
particle2
,
length
,
k
);
paramVector
[
i
]
=
(
mm_float2
)
{
length
,
k
};
paramVector
[
i
]
=
(
mm_float2
)
{
(
cl_float
)
length
,
(
cl_float
)
k
};
indicesVector
[
i
]
=
(
mm_int4
)
{
particle1
,
particle2
,
forceBufferCounter
[
particle1
]
++
,
forceBufferCounter
[
particle2
]
++
};
indicesVector
[
i
]
=
(
mm_int4
)
{
particle1
,
particle2
,
forceBufferCounter
[
particle1
]
++
,
forceBufferCounter
[
particle2
]
++
};
}
}
params
->
upload
(
paramVector
);
params
->
upload
(
paramVector
);
indices
->
upload
(
indicesVector
);
indices
->
upload
(
indicesVector
);
...
@@ -295,7 +294,7 @@ void OpenCLCalcHarmonicAngleForceKernel::initialize(const System& system, const
...
@@ -295,7 +294,7 @@ void OpenCLCalcHarmonicAngleForceKernel::initialize(const System& system, const
int
particle1
,
particle2
,
particle3
;
int
particle1
,
particle2
,
particle3
;
double
angle
,
k
;
double
angle
,
k
;
force
.
getAngleParameters
(
i
,
particle1
,
particle2
,
particle3
,
angle
,
k
);
force
.
getAngleParameters
(
i
,
particle1
,
particle2
,
particle3
,
angle
,
k
);
paramVector
[
i
]
=
(
mm_float2
)
{
angle
,
k
};
paramVector
[
i
]
=
(
mm_float2
)
{
(
cl_float
)
angle
,
(
cl_float
)
k
};
indicesVector
[
i
]
=
(
mm_int8
)
{
particle1
,
particle2
,
particle3
,
indicesVector
[
i
]
=
(
mm_int8
)
{
particle1
,
particle2
,
particle3
,
forceBufferCounter
[
particle1
]
++
,
forceBufferCounter
[
particle2
]
++
,
forceBufferCounter
[
particle3
]
++
,
0
,
0
};
forceBufferCounter
[
particle1
]
++
,
forceBufferCounter
[
particle2
]
++
,
forceBufferCounter
[
particle3
]
++
,
0
,
0
};
...
@@ -375,7 +374,7 @@ void OpenCLCalcPeriodicTorsionForceKernel::initialize(const System& system, cons
...
@@ -375,7 +374,7 @@ void OpenCLCalcPeriodicTorsionForceKernel::initialize(const System& system, cons
int
particle1
,
particle2
,
particle3
,
particle4
,
periodicity
;
int
particle1
,
particle2
,
particle3
,
particle4
,
periodicity
;
double
phase
,
k
;
double
phase
,
k
;
force
.
getTorsionParameters
(
i
,
particle1
,
particle2
,
particle3
,
particle4
,
periodicity
,
phase
,
k
);
force
.
getTorsionParameters
(
i
,
particle1
,
particle2
,
particle3
,
particle4
,
periodicity
,
phase
,
k
);
paramVector
[
i
]
=
(
mm_float4
)
{
k
,
phase
,
(
float
)
periodicity
};
paramVector
[
i
]
=
(
mm_float4
)
{
(
cl_float
)
k
,
(
cl_float
)
phase
,
(
cl_
float
)
periodicity
,
0.0
f
};
indicesVector
[
i
]
=
(
mm_int8
)
{
particle1
,
particle2
,
particle3
,
particle4
,
indicesVector
[
i
]
=
(
mm_int8
)
{
particle1
,
particle2
,
particle3
,
particle4
,
forceBufferCounter
[
particle1
]
++
,
forceBufferCounter
[
particle2
]
++
,
forceBufferCounter
[
particle3
]
++
,
forceBufferCounter
[
particle4
]
++
};
forceBufferCounter
[
particle1
]
++
,
forceBufferCounter
[
particle2
]
++
,
forceBufferCounter
[
particle3
]
++
,
forceBufferCounter
[
particle4
]
++
};
...
@@ -455,7 +454,7 @@ void OpenCLCalcRBTorsionForceKernel::initialize(const System& system, const RBTo
...
@@ -455,7 +454,7 @@ void OpenCLCalcRBTorsionForceKernel::initialize(const System& system, const RBTo
int
particle1
,
particle2
,
particle3
,
particle4
;
int
particle1
,
particle2
,
particle3
,
particle4
;
double
c0
,
c1
,
c2
,
c3
,
c4
,
c5
;
double
c0
,
c1
,
c2
,
c3
,
c4
,
c5
;
force
.
getTorsionParameters
(
i
,
particle1
,
particle2
,
particle3
,
particle4
,
c0
,
c1
,
c2
,
c3
,
c4
,
c5
);
force
.
getTorsionParameters
(
i
,
particle1
,
particle2
,
particle3
,
particle4
,
c0
,
c1
,
c2
,
c3
,
c4
,
c5
);
paramVector
[
i
]
=
(
mm_float8
)
{
c0
,
c1
,
c2
,
c3
,
c4
,
c5
};
paramVector
[
i
]
=
(
mm_float8
)
{
(
cl_float
)
c0
,
(
cl_float
)
c1
,
(
cl_float
)
c2
,
(
cl_float
)
c3
,
(
cl_float
)
c4
,
(
cl_float
)
c5
,
0.0
f
,
0.0
f
};
indicesVector
[
i
]
=
(
mm_int8
)
{
particle1
,
particle2
,
particle3
,
particle4
,
indicesVector
[
i
]
=
(
mm_int8
)
{
particle1
,
particle2
,
particle3
,
particle4
,
forceBufferCounter
[
particle1
]
++
,
forceBufferCounter
[
particle2
]
++
,
forceBufferCounter
[
particle3
]
++
,
forceBufferCounter
[
particle4
]
++
};
forceBufferCounter
[
particle1
]
++
,
forceBufferCounter
[
particle2
]
++
,
forceBufferCounter
[
particle3
]
++
,
forceBufferCounter
[
particle4
]
++
};
...
...
platforms/opencl/src/kernels/langevin.cl
View file @
aa4f6c62
...
@@ -10,10 +10,10 @@ __kernel void integrateLangevinPart1(__global float4* velm, __global float4* for
...
@@ -10,10 +10,10 @@ __kernel void integrateLangevinPart1(__global float4* velm, __global float4* for
//
Load
the
parameters
into
local
memory
for
faster
access.
//
Load
the
parameters
into
local
memory
for
faster
access.
int
index
=
get_global_id
(
0
)
;
if
(
get_local_id
(
0
)
<
MaxParams
)
if
(
index
<
MaxParams
)
params[get_local_id
(
0
)
]
=
paramBuffer[get_local_id
(
0
)
]
;
params[index]
=
paramBuffer[index]
;
barrier
(
CLK_LOCAL_MEM_FENCE
)
;
barrier
(
CLK_LOCAL_MEM_FENCE
)
;
int
index
=
get_global_id
(
0
)
;
randomIndex
+=
index
;
randomIndex
+=
index
;
while
(
index
<
NUM_ATOMS
)
{
while
(
index
<
NUM_ATOMS
)
{
float4
velocity
=
velm[index]
;
float4
velocity
=
velm[index]
;
...
@@ -38,10 +38,10 @@ __kernel void integrateLangevinPart2(__global float4* velm, __global float4* pos
...
@@ -38,10 +38,10 @@ __kernel void integrateLangevinPart2(__global float4* velm, __global float4* pos
//
Load
the
parameters
into
local
memory
for
faster
access.
//
Load
the
parameters
into
local
memory
for
faster
access.
int
index
=
get_global_id
(
0
)
;
if
(
get_local_id
(
0
)
<
MaxParams
)
if
(
index
<
MaxParams
)
params[get_local_id
(
0
)
]
=
paramBuffer[get_local_id
(
0
)
]
;
params[index]
=
paramBuffer[index]
;
barrier
(
CLK_LOCAL_MEM_FENCE
)
;
barrier
(
CLK_LOCAL_MEM_FENCE
)
;
int
index
=
get_global_id
(
0
)
;
randomIndex
+=
index
;
randomIndex
+=
index
;
while
(
index
<
NUM_ATOMS
)
{
while
(
index
<
NUM_ATOMS
)
{
float4
delta
=
posDelta[index]
;
float4
delta
=
posDelta[index]
;
...
...
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