You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
For MKL, the i8 toolchainoption selects the ilp64 variants of the libraries [1, 2]
We can easily make OpenBLAS also build a library with 8 byte integers with e.g. buildopts = ['', 'INTERFACE64=1'] in the easyconfigs, and a small change in the easyblock to pass this option to testopts and installopts, and eventually rename and check libraries.
(FlexiBLAS also supports this, with INTEGER8=ON, and in that case adds the 64 suffix to the command and library names)
There is also the option of adding a suffix to the symbol names (e.g., SYMBOLSUFFIX=64_ in OpenBLAS), but in that case the behaviour would be different to MKL and the application would need to be aware of that (e.g. [3, 4])
I think this will also be useful in order to build Julia from source, at least with the same defaults as upstream
But we do need to choose a convention for the library names and eventually symbol suffixes and stick to it
There is a major problem to be solved though, Scalapack (PBLAS in particular) from netlib has no I8 support whatsoever, at least last time i checked..
I've been meaning to do stuff there, but never got enough time to even start...
@akesandgren well, I was thinking more of shared memory situations, and even then "opt-in" (and even using the different symbols besides the different library names) - when using Scalapack one can in principle simply increase the number of MPI processes to decrease the number of elements that each one needs to address
but sure, if the MKL 'i8' behaviour could be completely replicated, it would be cleaner
running to this issue when trying to compile the latest GAMESS with the foss toolchain; GAMESS rejects OpenBLAS if it doesn't have 8-byte integer support
For MKL, the
i8
toolchainoption selects theilp64
variants of the libraries [1, 2]We can easily make OpenBLAS also build a library with 8 byte integers with e.g.
buildopts = ['', 'INTERFACE64=1']
in the easyconfigs, and a small change in the easyblock to pass this option totestopts
andinstallopts
, and eventually rename and check libraries.(FlexiBLAS also supports this, with
INTEGER8=ON
, and in that case adds the64
suffix to the command and library names)There is also the option of adding a suffix to the symbol names (e.g.,
SYMBOLSUFFIX=64_
in OpenBLAS), but in that case the behaviour would be different to MKL and the application would need to be aware of that (e.g. [3, 4])I think this will also be useful in order to build Julia from source, at least with the same defaults as upstream
But we do need to choose a convention for the library names and eventually symbol suffixes and stick to it
thoughts?
[1] https://github.com/easybuilders/easybuild-framework/blob/712f9d293235d19f34d0aeb109a0837ae03129dd/easybuild/toolchains/linalg/intelmkl.py#L136
[2] https://github.com/easybuilders/easybuild-framework/blob/b64c4969b28bd11c29bfabed82ee1a1a4b22d327/easybuild/toolchains/fft/intelfftw.py#L58)
[3] https://numpy.org/devdocs/user/building.html#bit-blas-and-lapack
[4] https://scipy.github.io/devdocs/building/#reference-for-build-options
The text was updated successfully, but these errors were encountered: