-
-
Notifications
You must be signed in to change notification settings - Fork 123
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
Providing MPI through BinaryBuilder #328
Comments
If I presume the default should be to use the system MPI if found, and fall back to our bundled one if |
You could try using MPICH instead of OpenMPI: this is closer to a "standard implementation", so might be easier to build. Note that Spack is considering changing their default due to frequent issues with OpenMPI: spack/spack#13259 Also MPI.jl currently assumes that you use MS MPI on Windows: we should change it so that other MPI implementations will work as well. |
Is MPICH well maintained nowadays? I can certainly package it. Would be great to get thoughts from some others here on this topic as well. |
To answer my own question, yes it is. https://github.com/pmodels/mpich |
MPICH_jll is now registered as well. It doesn't build on Windows either. It seems like MS MPI is the only real option on Windows. |
Before we can do this we need to make sure that the overlay system properly works and we can actually use vendor provided MPI libraries. |
What are thoughts on making Julia 1.3 the minimum Julia version going forward? |
I think having a binary fallback would be nice. In the case of the
binary fallback, how would the user execute a MPI program? In other
words, how would they put `mpirun`/`mpiexec` into their path?
|
If you only want to call them from Julia, there are a wrapper functions to call executables provided by JLL packages |
There should be a Julia-specific way to run the correct |
I was imagining that we use the system provided |
I feel that recent experience suggests we should avoid symlinks since those things don't work on Windows. Not that any server side runs windows, but it would be nice for the tooling and testing to work on all platforms. However, your larger point about having a mechanism to pick one of the many MPI implementations is what we need to achieve. |
I think @eschnett meant that there needs to be a way for users to call mpirun from outside Julia |
Don't we already have a way to do that in the current setup? I imagine we need a good way to switch between that and the bundled one. |
We currently assume the MPI library provides one. Another thing we need are the generated constants for the library in question. |
@giordano what are these wrapper functions? |
For each |
Ah, ok: so it seems that the |
Here is my vague plan: I'm not sure if this is feasible, so let me know:
The main question is how to handle the logic in
|
MPICH should build for windows, but the issue seems to be our cross-compiling at the moment. |
Update: We have MPICH working via BinaryProvider (#339), but not on Windows, and unfortunately the Overrides.toml doesn't work at the moment (JuliaPackaging/BinaryBuilder.jl#625). |
We should probably have some extra check to try to detect if we're on a cluster, and warn users who are using the BB-provided MPI. The easiest is to probably check environment variables, e.g. |
Another way to do it might be to check if we detect an |
I assume that the environment variables are not set on the head node but only get set when you have submitted the job. I suspect one could also check if a |
That's fine: if someone is running MPI jobs on the head node, they've got bigger problems |
But isn't it too late to warn them when they are already running the job? Perhaps all we need is an INFO line that says which MPI is being used. |
What's the next step here? Can we provide MPICH_jll as a dependency for this package? I would be ok with manual environment variable setting for using the system MPI. |
|
One other issue is library names. As seen in #356 mpi libraries have different names for their so and the override system only allows us to specify alternative directory roots. So we need a more elaborate compatibility system. Two other things:
|
Related: #367 and JuliaPackaging/Yggdrasil#550 |
I'm trying to get OpenMPI build through BB. For now, I have successful builds, but until we can try it out, we won't know what the issues are. Just posting here for folks who might be interested.
JuliaPackaging/Yggdrasil#308
The text was updated successfully, but these errors were encountered: