-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
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
Switch back to LLVM's IR linker #48106
Conversation
Thanks for looking into this!
Ah yes, I actually switched that over to the LLVM linker in #36576, but didn't realize #44440 switched it back. |
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.
Fixes the CUDA.jl issue, thanks!
Windows CI is broken everywhere, so unrelated to this PR. |
79bccd8
to
903a7ce
Compare
Rebased and updated the test. @vtjnash Given the restrictions with llvmcall, can you give your thoughts on how best to implement thread-local arrays for our GPU back-ends? Basically, we want to be able to: function kernel(input::AbstractArray{T})
buf1 = SharedArray{T}(undef, 1)
buf2 = SharedArray{T}(undef, 1)
...
return
end i.e., we'd prefer to use functions not macros, but also the llvmcall needs to be produced by a generated function where we know about types and sizes (currently we forward the |
CI failures are unrelated. |
(cherry picked from commit 35d1840) Co-authored-by: Tim Besard <tim.besard@gmail.com>
#44440 used
jl_merge_module
to merge ThreadSafeModules, but that function does not account for linkage type when merging and will not rename globals. Thus, we switch back tollvm::Linker
which will take that into account. We may want to consider moving all of our uses ofjl_merge_module
tollvm::Linker
.Fixes #48093 with a new test.