I'm curious if there are other ideas out there for how to deal with this:
From
https://bugzilla.redhat.com/show_bug.cgi?id=1965692:
I recently acquired a cheap wintel toy tablet/laptop (a Kano PC), which
has a
Celeron N4000 processor. I tried running HPL benchmarks on it to
figure out how
fast the thing is. However, xhpl_openmpi crashed with an illegal
instruction. I
then installed the MPICH version of HPL, and xhpl_mpich runs fine. The
issue is
thus in OpenMPI.
Looking at the build logs of openmpi-4.1.0-5.fc34.x86_64, I see that it has
been compiled with the -mcx16 flag detected by configure. According to
the GCC
man page
This option enables GCC to generate "CMPXCHG16B" instructions in
64-bit code to implement compare-and-exchange operations on 16-byte
aligned 128-bit objects. This is useful for atomic updates of data
structures exceeding one machine word in size. The compiler uses
this instruction to implement __sync Builtins. However, for
__atomic Builtins operating on 128-bit integers, a library call is
always used.
However, because the instruction is not available on all x86_64
processors, the
use of the flag should be disabled in OpenMPI.
----
I filed
https://github.com/open-mpi/ompi/issues/9022 and we seem to have
the ability to disable this now. Does this seem like the right
solution? It does seem a shame to have to cripple the compile though.
There was mention of setting -march - is that appropriate?
Thanks,
Orion
--
Orion Poplawski
he/him/his - surely the least important thing about me
Manager of NWRA Technical Systems 720-772-5637
NWRA, Boulder/CoRA Office FAX: 303-415-9702
3380 Mitchell Lane orion(a)nwra.com
Boulder, CO 80301
https://www.nwra.com/