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
"wrappers/vscode:/vscode.git/clone" did not exist on "3f47b9619ea30c826c0ec4e6d4036b6178ccb98f"
Commit
aa4f6c62
authored
Nov 09, 2009
by
Peter Eastman
Browse files
Bug fix
parent
6d1814ac
Changes
2
Hide 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