Compilation on old machines

mdubois

New member
Dear forum,

I'm trying to install diamond on our heterogeneous cluster where some nodes are rather old (AMD barcelona architecture which doesn't support SSE4.1) which gcc 7.3.0.

Following the doc, I added -DCMAKE_BUILD_MARCH=nocona when invoking cmake but the program still crashes with Illegal instruction error.

I have noticed that the SSE4.1 and AVX parts are compiled with -march=nocona as expected but later options (-msse4.1, -mavx, etc.) override this. The generic part is compiled with -march=nocona.

Any idea ?
 

Benjamin Buchfink

Administrator
Staff member
I suppose it's possible that using nocona still issues some instructions not supported by the barcelona architecture, but don't ask me what those may be.
 

mdubois

New member
Thanks for your answer.

In fact, it doesn't work (the error shows later when doing the blastp). The offending instruction is VMOVDQU which seems to belong to AVX. I have tried gcc 6.4.0 and it still fails with MOVSS (which also seems to belong to AVX). So I guess that the CPU feature detection code doesn't work.

Do you know a compiler version that still works with nocona ?
 

Benjamin Buchfink

Administrator
Staff member
You can use Diamond with -v which will show a CPU features detected line, to see if the detection fails. The oldest compiler that will compile Diamond is GCC 4.8.5.
 
Top