Skip to content

Warning

This is as a Lab Notebook which describes how to solve a specific problem at a specific time. Please keep this in mind as you read and use the content. Please pay close attention to the date, version information and other details.

Architecture-specific compilation (Illegal instruction error)

If you compile software on a development node, our architecture-optimised compilers will be linked. This means that if you run your software on a compute node with a different architecture, you may encounter illegal instruction errors. This can also be caused by submitting from a development node of a different architecture to where it was compiled. This is most likely to cause errors if you use intel18 nodes, because they have the AVX-512 instruction set unlike our other nodes which use AVX2.

Note

This could also apply to some of our compiled software, especially if they note the AVX version in their module name e.g. Gaussian.

Examples

You compiled your software on dev-amd20. You submit your job and it runs on dev-intel18. You could receive an illegal instruction error.

You compiled your software on dev-intel18. You submit your job from dev-intel16 and it runs on dev-intel18. You could receive an illegal instruction error.

Possible solution

Compile, submit and constrain your software on all of the same architectures. e.g. compile on dev-intel18, submit on dev-intel18, constrain your submission to intel18 nodes. To learn how to constrain your jobs, see this page.