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
c66766a8
"plugins/amoeba/serialization/vscode:/vscode.git/clone" did not exist on "3c16ceff2cc1964149da9f0f3a794d365efb0695"
Commit
c66766a8
authored
Sep 03, 2014
by
peastman
Browse files
Fixed errors on Windows
parent
6f7dee30
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
1049 additions
and
1045 deletions
+1049
-1045
openmmapi/include/openmm/internal/vectorize_sse.h
openmmapi/include/openmm/internal/vectorize_sse.h
+305
-305
platforms/cpu/include/CpuCustomManyParticleForce.h
platforms/cpu/include/CpuCustomManyParticleForce.h
+223
-224
platforms/cpu/src/CpuCustomManyParticleForce.cpp
platforms/cpu/src/CpuCustomManyParticleForce.cpp
+521
-516
No files found.
openmmapi/include/openmm/internal/vectorize_sse.h
View file @
c66766a8
...
@@ -250,8 +250,8 @@ static inline float dot4(const fvec4& v1, const fvec4& v2) {
...
@@ -250,8 +250,8 @@ static inline float dot4(const fvec4& v1, const fvec4& v2) {
}
}
static
inline
fvec4
cross
(
const
fvec4
&
v1
,
const
fvec4
&
v2
)
{
static
inline
fvec4
cross
(
const
fvec4
&
v1
,
const
fvec4
&
v2
)
{
fvec4
temp
=
_mm_mul_ps
(
v1
,
_mm_shuffle_ps
(
v2
,
v2
,
_MM_SHUFFLE
(
3
,
0
,
2
,
1
)))
-
fvec4
temp
=
fvec4
(
_mm_mul_ps
(
v1
,
_mm_shuffle_ps
(
v2
,
v2
,
_MM_SHUFFLE
(
3
,
0
,
2
,
1
)))
)
-
_mm_mul_ps
(
v2
,
_mm_shuffle_ps
(
v1
,
v1
,
_MM_SHUFFLE
(
3
,
0
,
2
,
1
)))
;
fvec4
(
_mm_mul_ps
(
v2
,
_mm_shuffle_ps
(
v1
,
v1
,
_MM_SHUFFLE
(
3
,
0
,
2
,
1
)))
);
return
_mm_shuffle_ps
(
temp
,
temp
,
_MM_SHUFFLE
(
3
,
0
,
2
,
1
));
return
_mm_shuffle_ps
(
temp
,
temp
,
_MM_SHUFFLE
(
3
,
0
,
2
,
1
));
}
}
...
...
platforms/cpu/include/CpuCustomManyParticleForce.h
View file @
c66766a8
...
@@ -191,7 +191,6 @@ public:
...
@@ -191,7 +191,6 @@ public:
int
p1
,
p2
,
p3
,
p4
,
variableIndex
;
int
p1
,
p2
,
p3
,
p4
,
variableIndex
;
Lepton
::
CompiledExpression
forceExpression
;
Lepton
::
CompiledExpression
forceExpression
;
int
delta1
,
delta2
,
delta3
;
int
delta1
,
delta2
,
delta3
;
mutable
fvec4
cross1
,
cross2
;
DihedralTermInfo
(
const
std
::
string
&
name
,
const
std
::
vector
<
int
>&
atoms
,
const
Lepton
::
CompiledExpression
&
forceExpression
,
ThreadData
&
data
);
DihedralTermInfo
(
const
std
::
string
&
name
,
const
std
::
vector
<
int
>&
atoms
,
const
Lepton
::
CompiledExpression
&
forceExpression
,
ThreadData
&
data
);
};
};
...
@@ -206,7 +205,7 @@ public:
...
@@ -206,7 +205,7 @@ public:
std
::
vector
<
DistanceTermInfo
>
distanceTerms
;
std
::
vector
<
DistanceTermInfo
>
distanceTerms
;
std
::
vector
<
AngleTermInfo
>
angleTerms
;
std
::
vector
<
AngleTermInfo
>
angleTerms
;
std
::
vector
<
DihedralTermInfo
>
dihedralTerms
;
std
::
vector
<
DihedralTermInfo
>
dihedralTerms
;
AlignedArray
<
fvec4
>
delta
;
AlignedArray
<
fvec4
>
delta
,
cross1
,
cross2
;
std
::
vector
<
float
>
normDelta
;
std
::
vector
<
float
>
normDelta
;
std
::
vector
<
float
>
norm2Delta
;
std
::
vector
<
float
>
norm2Delta
;
AlignedArray
<
fvec4
>
f
;
AlignedArray
<
fvec4
>
f
;
...
...
platforms/cpu/src/CpuCustomManyParticleForce.cpp
View file @
c66766a8
...
@@ -278,6 +278,8 @@ void CpuCustomManyParticleForce::calculateOneIxn(vector<int>& particleSet, RealO
...
@@ -278,6 +278,8 @@ void CpuCustomManyParticleForce::calculateOneIxn(vector<int>& particleSet, RealO
int
numDeltas
=
data
.
deltaPairs
.
size
();
int
numDeltas
=
data
.
deltaPairs
.
size
();
AlignedArray
<
fvec4
>&
delta
=
data
.
delta
;
AlignedArray
<
fvec4
>&
delta
=
data
.
delta
;
AlignedArray
<
fvec4
>&
cross1
=
data
.
cross1
;
AlignedArray
<
fvec4
>&
cross2
=
data
.
cross2
;
vector
<
float
>&
normDelta
=
data
.
normDelta
;
vector
<
float
>&
normDelta
=
data
.
normDelta
;
vector
<
float
>&
norm2Delta
=
data
.
norm2Delta
;
vector
<
float
>&
norm2Delta
=
data
.
norm2Delta
;
for
(
int
i
=
0
;
i
<
numDeltas
;
i
++
)
{
for
(
int
i
=
0
;
i
<
numDeltas
;
i
++
)
{
...
@@ -303,7 +305,7 @@ void CpuCustomManyParticleForce::calculateOneIxn(vector<int>& particleSet, RealO
...
@@ -303,7 +305,7 @@ void CpuCustomManyParticleForce::calculateOneIxn(vector<int>& particleSet, RealO
}
}
for
(
int
i
=
0
;
i
<
(
int
)
data
.
dihedralTerms
.
size
();
i
++
)
{
for
(
int
i
=
0
;
i
<
(
int
)
data
.
dihedralTerms
.
size
();
i
++
)
{
const
DihedralTermInfo
&
term
=
data
.
dihedralTerms
[
i
];
const
DihedralTermInfo
&
term
=
data
.
dihedralTerms
[
i
];
expressionSet
.
setVariable
(
term
.
variableIndex
,
getDihedralAngleBetweenThreeVectors
(
delta
[
term
.
delta1
],
delta
[
term
.
delta2
],
delta
[
term
.
delta3
],
term
.
cross1
,
term
.
cross2
,
delta
[
term
.
delta1
]));
expressionSet
.
setVariable
(
term
.
variableIndex
,
getDihedralAngleBetweenThreeVectors
(
delta
[
term
.
delta1
],
delta
[
term
.
delta2
],
delta
[
term
.
delta3
],
cross1
[
i
],
cross2
[
i
]
,
delta
[
term
.
delta1
]));
}
}
if
(
includeForces
)
{
if
(
includeForces
)
{
...
@@ -356,18 +358,18 @@ void CpuCustomManyParticleForce::calculateOneIxn(vector<int>& particleSet, RealO
...
@@ -356,18 +358,18 @@ void CpuCustomManyParticleForce::calculateOneIxn(vector<int>& particleSet, RealO
for
(
int
i
=
0
;
i
<
(
int
)
data
.
dihedralTerms
.
size
();
i
++
)
{
for
(
int
i
=
0
;
i
<
(
int
)
data
.
dihedralTerms
.
size
();
i
++
)
{
const
DihedralTermInfo
&
term
=
data
.
dihedralTerms
[
i
];
const
DihedralTermInfo
&
term
=
data
.
dihedralTerms
[
i
];
float
dEdTheta
=
(
float
)
term
.
forceExpression
.
evaluate
();
float
dEdTheta
=
(
float
)
term
.
forceExpression
.
evaluate
();
float
normCross1
=
dot3
(
term
.
cross1
,
term
.
cross1
);
float
normCross1
=
dot3
(
cross1
[
i
],
cross1
[
i
]
);
float
normBC
=
normDelta
[
term
.
delta2
];
float
normBC
=
normDelta
[
term
.
delta2
];
float
forceFactors
[
4
];
float
forceFactors
[
4
];
forceFactors
[
0
]
=
(
-
dEdTheta
*
normBC
)
/
normCross1
;
forceFactors
[
0
]
=
(
-
dEdTheta
*
normBC
)
/
normCross1
;
float
normCross2
=
dot3
(
term
.
cross2
,
term
.
cross2
);
float
normCross2
=
dot3
(
cross2
[
i
],
cross2
[
i
]
);
forceFactors
[
3
]
=
(
dEdTheta
*
normBC
)
/
normCross2
;
forceFactors
[
3
]
=
(
dEdTheta
*
normBC
)
/
normCross2
;
forceFactors
[
1
]
=
dot3
(
delta
[
term
.
delta1
],
delta
[
term
.
delta2
]);
forceFactors
[
1
]
=
dot3
(
delta
[
term
.
delta1
],
delta
[
term
.
delta2
]);
forceFactors
[
1
]
/=
norm2Delta
[
term
.
delta2
];
forceFactors
[
1
]
/=
norm2Delta
[
term
.
delta2
];
forceFactors
[
2
]
=
dot3
(
delta
[
term
.
delta3
],
delta
[
term
.
delta2
]);
forceFactors
[
2
]
=
dot3
(
delta
[
term
.
delta3
],
delta
[
term
.
delta2
]);
forceFactors
[
2
]
/=
norm2Delta
[
term
.
delta2
];
forceFactors
[
2
]
/=
norm2Delta
[
term
.
delta2
];
fvec4
force1
=
forceFactors
[
0
]
*
term
.
cross1
;
fvec4
force1
=
forceFactors
[
0
]
*
cross1
[
i
];
fvec4
force4
=
forceFactors
[
3
]
*
term
.
cross2
;
fvec4
force4
=
forceFactors
[
3
]
*
cross2
[
i
];
fvec4
s
=
forceFactors
[
1
]
*
force1
-
forceFactors
[
2
]
*
force4
;
fvec4
s
=
forceFactors
[
1
]
*
force1
-
forceFactors
[
2
]
*
force4
;
f
[
term
.
p1
]
+=
force1
;
f
[
term
.
p1
]
+=
force1
;
f
[
term
.
p2
]
-=
force1
-
s
;
f
[
term
.
p2
]
-=
force1
-
s
;
...
@@ -495,6 +497,9 @@ CpuCustomManyParticleForce::ThreadData::ThreadData(const CustomManyParticleForce
...
@@ -495,6 +497,9 @@ CpuCustomManyParticleForce::ThreadData::ThreadData(const CustomManyParticleForce
delta
.
resize
(
numDeltas
);
delta
.
resize
(
numDeltas
);
normDelta
.
resize
(
numDeltas
);
normDelta
.
resize
(
numDeltas
);
norm2Delta
.
resize
(
numDeltas
);
norm2Delta
.
resize
(
numDeltas
);
cross1
.
resize
(
numDeltas
);
cross2
.
resize
(
numDeltas
);
}
}
void
CpuCustomManyParticleForce
::
ThreadData
::
requestDeltaPair
(
int
p1
,
int
p2
,
int
&
pairIndex
,
float
&
pairSign
,
bool
allowReversed
)
{
void
CpuCustomManyParticleForce
::
ThreadData
::
requestDeltaPair
(
int
p1
,
int
p2
,
int
&
pairIndex
,
float
&
pairSign
,
bool
allowReversed
)
{
...
...
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