-
Notifications
You must be signed in to change notification settings - Fork 17
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
Add test for how to directly load new MKL ILP64 #54
Conversation
d72a707
to
aa4c678
Compare
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.
This should have an entry in the changelog in the README? Does this make libblastrampoline require MKL 2022 or it still works with previous versions?
# Load the ILP64 interface library. Remember, you must load the `core` | ||
# and a `threading` library first, with `RTLD_LAZY` for this to work! |
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.
Oh wow, you need to find the right incantation to make this work: #52 (comment)
@ViralBShah okay, so there are a few things going on here:
The result of this is that we can't rely on a heuristic to tell the difference between
All that being said, I do have Linux and macOS working so far (and we can load LP64 and ILP64 versions of MKL simultaneously, which is nice). |
I have emailed Intel. |
A |
@staticfloat If what @imciner2 says is true, should we be able to go ahead on windows? |
I followed the advice of the Intel people, and it looks like it works on all platforms! They suggested using So with this change, (which we should ship in Julia v1.8, and which is backwards-incompatible thanks to the # Load ILP64 forwards
lbt_forward(libmkl_rt; clear=true, suffix_hint="64")
# Load LP64 forward
lbt_forward(libmkl_rt; suffix_hint="") |
If a single library contains multiple interfaces (e.g. MKL v2022+) we want to track them separately, since we can now add both of them, making use of `suffix_hint` when calling `lbt_forward()`.
If a dual-interface library is being loaded, any heuristic will always choose the first interface it finds, so we add `suffix_hint` to allow biasing the interface detection toward a known-good suffix. This allows for loading dual-interface MKL (If using v2022+) by first loading one interface, then the other without clearing in between.
66da63c
to
210bfc8
Compare
MKL added a new library in v2022 that allows us to directly link against
a library that provides ILP64-namespaced symbols.