I am trying to build OMPI git master on ppc64 (PPC970MP) and
test/class/opal_fifo fails during make check most of the time.

[adrian@bimini class]$ ./opal_fifo
Single thread test. Time: 0 s 99714 us 99 nsec/poppush
Atomics thread finished. Time: 0 s 347577 us 347 nsec/poppush
Atomics thread finished. Time: 11 s 490743 us 11490 nsec/poppush
Atomics thread finished. Time: 11 s 567542 us 11567 nsec/poppush
Atomics thread finished. Time: 11 s 655924 us 11655 nsec/poppush
Atomics thread finished. Time: 11 s 786925 us 11786 nsec/poppush
Atomics thread finished. Time: 11 s 931230 us 11931 nsec/poppush
Atomics thread finished. Time: 12 s 11617 us 12011 nsec/poppush
Atomics thread finished. Time: 12 s 63224 us 12063 nsec/poppush
Atomics thread finished. Time: 12 s 65844 us 12065 nsec/poppush
 Failure :  fifo push/pop multi-threaded with atomics
All threads finished. Thread count: 8 Time: 12 s 66103 us 1508 nsec/poppush
Exhaustive atomics thread finished. Popped 11982 items. Time: 3 s 700703 us 
308855 nsec/poppush
Exhaustive atomics thread finished. Popped 12171 items. Time: 3 s 759974 us 
308928 nsec/poppush
Exhaustive atomics thread finished. Popped 11593 items. Time: 3 s 787227 us 
326682 nsec/poppush
Exhaustive atomics thread finished. Popped 11079 items. Time: 3 s 786468 us 
341769 nsec/poppush
Exhaustive atomics thread finished. Popped 16467 items. Time: 4 s 7891 us 
243389 nsec/poppush
Exhaustive atomics thread finished. Popped 11097 items. Time: 4 s 68897 us 
366666 nsec/poppush
Exhaustive atomics thread finished. Popped 25583 items. Time: 4 s 89074 us 
159835 nsec/poppush
Exhaustive atomics thread finished. Popped 22092 items. Time: 4 s 82373 us 
184789 nsec/poppush
 Failure :  fifo push/pop multi-threaded with atomics when there are 
insufficient items
All threads finished. Thread count: 8 Time: 4 s 93369 us 511 nsec/poppush
 Failure :  fifo pop all items
SUPPORT: OMPI Test failed: opal_fifo_t (3 of 8 failed)

I had a look at the memory barriers in opal/include/opal/sys/powerpc/atomic.h
and from what little I remember about PPC64 those look correct:

#define MB()  __asm__ __volatile__ ("sync" : : : "memory")
#define RMB() __asm__ __volatile__ ("lwsync" : : : "memory")
#define WMB() __asm__ __volatile__ ("eieio" : : : "memory")

The system is running Fedora 21 with gcc 4.9.2 and if this platform
is still relevant I can provide SSH access to the machine
for further debugging.

                Adrian

Reply via email to