-
Notifications
You must be signed in to change notification settings - Fork 13
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
Should use __precompile__(false)
(at least for extensions)
#53
Comments
This will be fixed with #52 . |
@michel2323 @PhilipFackler is this resolved? |
The solution merged with #52 is too restrictive. I'm using a previous revision to avoid it. So, I would say no. |
@PhilipFackler In what sense too restrictive? |
@michel2323 see #56 |
@PhilipFackler can you elaborate why this is an error or how it's trigerred? I'm trying to understand why it doesn't show on our GPU CI tests e.g. here |
It doesn't get triggered because I resolved it by specifying types in #52 . However, that leads to @PhilipFackler only being able to pass numbers or arrays, not sructs #56 . The two issues are intertwined. When using structs, we cannot dispatch for the backend via the struct type, as it's not clear whether it is a CUDA or whatever based type. Edit: https://github.com/JuliaORNL/JACC.jl/actions/runs/8238659570/job/22530105977#step:4:298 Old error. |
I did more digging and overriding functions due to variadic arguments of any type |
I'm turning pre-compilation off (for now). Changing APIs will need a much larger discussion as we discussed offline. |
Every package that uses JACC.jl will also not be able to precompile. So, if you implement a PDE solver using JACC.jl, that solver won't be precompiled, substantially slowing down a user's code startup. So even if JACC is light, it will break precompilation for every large package that uses JACC. |
@michel2323 point taken. We should open a new issue trying to understand the trade-offs of code start-up. Since we are targeting HPC use cases, we should understand how this cost is amortized and the JIT implications. Precompilation and optional packages as |
FYI, I tested the current tag version v0.3 without For added context, the GrayScott.jl pre-compilation takes roughly 18s on my local machine and similar numbers on our AMD GPU CI system. For an hours-long runs this is an amortized cost, but we'll keep en eye if this becomes a real problem. Hope this helps. |
Especially if you add MPI to the mix, which I guess is important for ORNL, having no precompilation support will be daunting. On those machines, you get filesystem access races. During that process message you mention. |
Yes, those are really good points., The JIT component does not go away completely with pre-compilation, we published some numbers on the paper running on Frontier. Also, accessing local files is not completely by-passed (e.g. LocalPreferences and local packages). I think something like |
PackageCompiler won't work if precompilation doesn't work or is manually disabled. |
Yes, I meant exploring the precompile + PackageCompiler.jl path. For the time being keeping |
When using the cuda backend I get the following message:
It's an error when I don't add
__precompile__(false)
to my own module definition.The text was updated successfully, but these errors were encountered: