Hi, I am trying to build the newest version of ELPA (Eigenvalue SoLvers for Petaflop-Applications, https://elpa.mpcdf.mpg.de/). It looks like ELPA builds a number of “kernels” that are chosen at runtime depending on the capabilities of the CPU, for example SSE, AVX, AVX2 or AVX512.
Unfortunately, with the foss toolchain the compiler refuses to build these kernels if the CPU does not support them (the Intel toolchain happily builds them). This means that I have to configure ELPA with --disable-avx2 or --disable-avx if the CPU does not support these instructions, and --enable-avx512 if the CPU does support that. Is there some way to do this easily in an easyconfig? Maybe a compiler flag that allows using “AVX2 gcc intrinsics” in the code, without otherwise turning on AVX2 instructions (as that would cause the rest of the code to fail if AVX2 is not supported). Or do I have to write some complicated stuff into an easyblock? And if I do the latter, do you know how to portably detect the capabilities of the CPU? It seems somewhat silly that the ELPA configure script tests if these instructions are supported and fails if one does not manually disable the unsupported versions instead of just doing the right thing. But that is beyond my control. Best regards Jakob -- Jakob Schiøtz, professor, Ph.D. Department of Physics Technical University of Denmark DK-2800 Kongens Lyngby, Denmark http://www.fysik.dtu.dk/~schiotz/