-
-
Notifications
You must be signed in to change notification settings - Fork 16
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
WIP · ppc64le support #16
Conversation
Hi! This is the friendly automated conda-forge-linting service. I just wanted to let you know that I linted all conda-recipes in your PR ( |
@conda-forge-admin, please rerender |
…nda-forge-pinning 2019.12.02
All needed dependencies are now available! However, builds for PowerPC and ARM are failing for different reasons (although apparently related to the same thing?).
Is there anything special about intrinsics in PowerPC/ARM when it comes to OpenMM, @peastman? Why does the compiler does not include -- |
PowerPCI got
Is there any other workaround for this issue? Notice that OpenCL is built too, but we cannot test it because ARMThese don't work yet. For some reason, the compiler tries to use the x86 intrinsics, although I can see mentions to Neon instructions in the CMake configurations in OpenMM. Is there any extra flag I need to define to disable these, @peastman? |
We have different versions of the vectorization code for x86, PPC, and ARM. It's supposed to automatically pick the correct one based on the architecture you're compiling for, but it looks like something is going wrong with that. Here's the section of the CMake script that does it: We then include the correct header based on which of those symbols was defined: https://github.com/openmm/openmm/blob/master/openmmapi/include/openmm/internal/vectorize.h |
I see the problem on ARM. It's this line: https://github.com/openmm/openmm/blob/master/libraries/vecmath/src/vecmath.cpp#L1. It ought to be I'm a little confused about the PPC error. cl.hpp contains these lines: #if defined(linux) || defined(__APPLE__) || defined(__MACOSX)
#include <alloca.h>
#include <emmintrin.h>
#include <xmmintrin.h>
#endif // linux That seems to assume Linux will always be x86. But we've successfully compiled on Linux PPC before. So what is different this time, and why did those lines not cause problems before? |
Re PPC, maybe we were using a different compiler (older GCC, clang, etc) where the intrinsics can be used without the error? It's actually a warning turned error because we are not defining |
I re-added Regarding ARM, patching There's also this other error:
Is that Android specific? |
For the PPC intrinsics error, possibly we just need to upgrade to the latest version of cl.hpp. I see it no longer imports the Intel intrinsics. https://github.com/KhronosGroup/OpenCL-CLHPP/blob/master/include/CL/cl.hpp
Yes, you're right. It's being used in this code: static bool isVec4Supported() {
uint64_t features = android_getCpuFeatures();
return (features & ANDROID_CPU_ARM_FEATURE_NEON) != 0;
} As you can tell, Android is the only platform where we've ever compiled for ARM before. We need to figure out how to replace that with something that isn't Android specific. |
@conda-forge-admin, please rerender |
…nda-forge-pinning 2020.01.10
Disabling ARM for now. I'll open a PR for that one once the errors mentioned above have been fixed. |
The |
Closing this one. Work will continue on #23 |
Checklist
0
(if the version changed)conda-smithy
(Use the phrase@conda-forge-admin, please rerender
in a comment in this PR for automated rerendering)This will resolve #8
Blocking issues
ocl-icd-system
is not yet ready forppc64le
andaarch64
. PR here.doxygen 1.8.14
is not available forppc64le
andaarch64
. There is1.8.16
, but we need1.8.14
for OpenMM. Submitted a PR here.lxml
cannot be found inaarch64
.ppc64le
is indeed available forppc64le
, but only throughdefaults
. Submitted PR toconda-forge
here.Once dependencies are solved, keep an eye on issues like this one: