-
Notifications
You must be signed in to change notification settings - Fork 407
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
Porting to POWER and remove assumption of X86 default #103
Comments
Yeah I noticed that. This is experimental code to prototype synchronization mechanism for C++14 or 17 or something and not used in any real part of Kokkos. Should either be fixed or simply disabled for non-x86 builds. |
I'd rather have the low-level primitives abstracted out (possibly with a default slow mechanism) and then using assembly on X86. Better in my view to have the functionality across platforms (even if slow) than have only some features on some platforms. |
What I meant is that this functionality is never used except in that unit test. So for now we can simply disable it for Power and ARM, and then later fix the code with correct stuff when we actually want to use it. I believe this was more of a side project. But Carter can comment more. |
Much bigger undertaking than synchronic. Need a systematic analysis/porting effort. |
Btw: the fact that the unit tests caught this while all the miniApps and LAMMPS actually work and report back correct results (at least most of the times) confirms that our design intend of making the unit tests very susceptible to race conditions actually worked 👍 |
OK, I will fix. |
Obvious question, anyone know of a POWER machine that I could jump onto to confirm the fix? |
white.sandia.gov |
White. Its a testbed you can request from webcars. On 10/07/2015 01:21 PM, James Foucar wrote:
|
Ty, I should have known that... |
I found these in the preprocessor list:
Any preference on which one to check? |
Sorry, I finally searched the right thing in google.
|
OK, fix pushed to develop. |
Carter pointed-out that this issue goes beyond just disabling this unit test. What he'd like to see is all non-synchronic unit tests passing on POWER before this can be closed. With that in mind, should we assign someone else to own to task? |
We are looking at this. It's going to need some work on POWER atomics which I've been prototyping before we can make progress. S Si Hammond From: James Foucar notifications@github.com Carter pointed-out that this issue goes beyond just disabling this unit test. What he'd like to see is all non-synchronic unit tests passing on POWER before this can be closed. With that in mind, should we assign someone else to own to task? Reply to this email directly or view it on GitHubhttps://github.com//issues/103#issuecomment-146344600. |
The OpenMP backend did now pass the unit tests. |
I am still seeing failures in the TeamReduces on POWER8 Pthreads but think I have a fix for that, testing now. |
Yeah I didn't touch the Threads backend yet. I actually would be surprised if its just the TeamReduce which is failing, or did someone else add stuff to Pthreads? In the OpenMP backend I had to fix the fan_in, fan_out on the team level. |
As a minimum the TeamReduction in develop is failing about 1in 4 or so tests. The others are still probably error prone but we don't see because of so few threads. I can see lots more memory_fence() calls have been added to the code which is probably helping but, I'm trying to work out how to switch these into store_fence and load_fence where possible. There is a branch to optimize the fences and a separate branch to fix dispatch issues on weakly ordered memory systems (P8, ARM ..). |
Additional Power8 + CUDA porting issue: trilinos/Trilinos#258 |
Building unit tests for Kokkos on POWER yields error (see below). Seems default in Kokkos is to use X86 assembler which shouldn't be allowed?
g++ -I./ -I../../core/src -I../../containers/src -I../../algorithms/src --std=c++11 -I/home/projects/power8/gtest/20151006/src -I../../core/unit_test -I/home/projects/power8/gtest/20151006/include -I/home/projects/power8/gtest/20151006/src/src -O3 -c TestSynchronic.cpp
/tmp/ccJLQMjA.s: Assembler messages:
/tmp/ccJLQMjA.s:4451: Error: unrecognized opcode:
rep' /tmp/ccJLQMjA.s:5024: Error: unrecognized opcode:
rep'/tmp/ccJLQMjA.s:5097: Error: unrecognized opcode:
rep' /tmp/ccJLQMjA.s:5106: Error: unrecognized opcode:
rep'/tmp/ccJLQMjA.s:5144: Error: unrecognized opcode:
rep' /tmp/ccJLQMjA.s:5697: Error: unrecognized opcode:
rep'The text was updated successfully, but these errors were encountered: