-
Notifications
You must be signed in to change notification settings - Fork 173
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
linalg: introduce 64-bit integer size BLAS/LAPACK implementation (ilp64
)
#888
base: master
Are you sure you want to change the base?
Conversation
Not sure whether I got this point correctly. If we link against the ilp64 version the stdlib built-in blas version is provided or automatically converted from ilp to ilp64? Either choice might bring surprises to the user in the former case performance depends on the choice of integer kind and in the other case conversation might require additional memory. |
The idea is that 64-bit support should be there regardless whether that comes from an external implementation: in addition of, not replacing, the 32-bit version. My preference as a user, is that I would like to write codes that always work with stdlib, and not worry that some build options turned this or that off, breaking my builds. Then, I believe it is not possible to have both 32/64 external libraries, due to name conflict (e.g. two external subroutines with different interfaces but both named Also, a good idea would be to provide a support routine the user can query to check if an external implementation is being used. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM @perazz! would it be possible to add a comment in the README regarding the use of the macro in order to parametrize the build process?
@jalvesz and all: the build script allows choosing what versions to include which is great. For the pre-processed fpm versions, What do you think about creating a new |
PS: I believe the actual deployment with commit to the fpm branches is only triggered after the PR is merged |
I'm introducing 64-bit integer support throughout the BLAS/LAPACK implementation to address #881 and introduce support for the 64-bit MKL library.
With this update:
integer
sizesKey facts
ilp64
integer kindilp
,ilp64
, or bothilp64
libraries (such as MKL) viaSTDLIB_EXTERNAL_BLAS_I64
andSTDLIB_EXTERNAL_LAPACK_I64
The code shows large differences because all interfaces are now templated. These are the key lines:
stdlib/include/common.fypp
Lines 77 to 81 in 4b5a6e6
ilp
andilp64
are now the two supported integer kindsstdlib_I64_*
, while 32-bit versions are stillstdlib_*
If we support this implementation, next I will start templating the high-level APIs.
cc: @jvdp1 @jalvesz @loiseaujc