I use MRtrix on a cluster running CentOS 6.6. Some of the nodes in the cluster are older, but they run the same system and have the same libraries. When I run tckgen on these older nodes I get the following error:
The admin of our cluster cannot find what exactly is making tckgen fail. Using the -debug option does not help, tckgen does not even start. When run without any argument it produces the same core dumped issue instead of the usual help. At the same time, tckgen runs fine on the newer nodes of the cluster.
Any idea what might be the problem?
Dorian
UPDATE: the failure is on all MRtrix commands I have tried so far. There must be something in common that causes this.
The problem is that by default, we ask the compiler to generate code using all available CPU optimisations available on the system it’s being built on. This means if you take the code and run it on a different CPU where some of these instructions might not be available, you’ll get this error.
See this page for more details and what to do about it.
This depends on exactly what you’re trying to achieve. If you just want to get the code to work, then the simplest thing to do is (requires a recent version of the code):
ARCH="" ./configure
This will just let the compiler use whatever defaults it normally would. You can also force a specific architecture like this:
ARCH="x86-64" ./configure
However, If you want to compile the code to be as fast as possible on this set of hardware, it might take quite a bit of effort to figure out the right flags. This isn’t something I’ve ever needed to do, but your best bet is to look through the gcc documentation for the -march flag, and see whether there is a generic one that will fit both of yours. If there is, just pass that through with the ARCH environment variable, e.g.: