-
Notifications
You must be signed in to change notification settings - Fork 900
Generate bigcount interfaces for Fortran and C #12226
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
Conversation
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.
I haven't finished reading / understanding / reviewing both generate_bindings.py scripts yet, but since I'm so late for this and the clock is ticking on @jtronge's availability, I'm going to submit what I have so far.
Should #12033 be closed (if this PR wholly replaces it)? |
/azp run |
8484636
to
90d6570
Compare
6476640
to
569efa1
Compare
60ea322
to
ab496c4
Compare
bot:ompi:retest |
for count args. This helps with the big count effort. Related to open-mpi#12226 Related to open-mpi#13152 Signed-off-by: Howard Pritchard <[email protected]>
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.
Replied to a few comments and resolved all the open conversations that I think are now actually resolved. I think my last concern is the question about: are we planning to ship the bigcount APIs without actually supporting big counts?
Okay. We should put this discussion of what to do with the datatype support in one of our upcoming tuesday meetings. Meanwhile, I think this PR is good to go - modulo commit squashing. Its clear from the initial commit message that this was one of several pieces of work that need to be done before we can claim complete (or reasonably complete) support for big count. Also getting this in to main now will help flush out any problems it may cause well before we branch for the next major release. If there's some fundamental issue with providing bigcount support in the datatype engine we can modify the binding generating infrastructure to not generate the bigcount variants. Note we've already merged other PRs for bigcount support that had this same problem with the datatype engine - see for example comments in #12621 . |
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.
Ok, let's squash and merge.
@jsquyres for some reason github lost your approval. could you please reapprove? |
I tried to build this branch on my mac and get this error:
Not sure what is going on, might be a python version issue.
|
The path |
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.
@devreal I was just doing a VPATH build myself to confirm, but your reply beat me to it. Yeah, I'm guessing there's something not quite right in our Makefile.am substitution to create lists of input files. I.e., instead of making the files be ../BLAH
, they'll need to be listed relative to the srcdir.
There's now a small conflict in a Makefile.am that needs to be resolved, too.
out of path build should work. i checked that a week or so ago and IWFM |
of course that may have been prior to these numerous makefile refactors |
fixing your issue @devreal having problems with the rebase though so i'll push fix for your problem first. thanks for giving this PR a try. |
@devreal try now |
This adds scripts for generating the C API bindings from template files, while also generating bigcount interfaces for those that require them. The binding script also include initial support for the mpi_f08 Fortran bindings, but doesn't yet make any changes to fortran/use-mpi-f08 Python >=3.6 is required for running these scripts, which is only necessary when the binding files have not already been generated. Users of the distribution tarball should not need to generate these files and thus should not require Python. Note that there are additional changes needed to Open MPI for bigcount support. One is that the datatype system needs to be embiggened. This PR includes workarounds for this lack of support that will need to be changed once the datatype system is embiggened. These areas of code are marked with TODO:BIGCOUNT. Co-authored-by: mphinney1100 <[email protected]> Co-authored-by: Howard Pritchard <[email protected]> Signed-off-by: Jake Tronge <[email protected]>
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.
Thanks, I'm able to build it and the RMA API looks correct.
works with and without VPATH with both gcc and nv compilers. 👍 |
This updates fortran/use-mpi-f08 to generate most of the Fortran bindings from a script and template files. It also adds support for Fortran TS 29113 when possible, allowing for better Fortran array handling that matches the standard. The C files were imported from PR open-mpi#10302 and converted to templates to be fed into the binding script. Co-authored-by: Gilles Gouaillardet <[email protected]> Co-authored-by: Howard Pritchard <[email protected]> Signed-off-by: Jake Tronge <[email protected]>
Signed-off-by: Jake Tronge <[email protected]>
squashing a bit |
This adds scripts for generating the C and Fortran mpi_f08 API bindings from template files, while also generating bigcount interfaces for those that require them. On the Fortran side it also adds support for TS 29113 when possible, allowing for better Fortran array handling that matches the standard (some files were imported from PR #10302).
Python >=3.6 is required for running these scripts, which is only necessary when the binding files have not already been generated. Users of the distribution tarball should not need to generate these files and thus should not require Python.
We used https://github.com/cea-hpc/pcvs-benchmarks and the MPI4PY test suite to help ensure all big count interfaces (C and Fortran) are being generated.
PR #12033 is a previous version of this focused specifically on ABI support.
Note that there are additional changes needed to Open MPI for bigcount support. One is that the datatype system needs to be embiggened. This PR includes workarounds for this lack of support that will need to be changed once the datatype system is embiggened. These areas of code are marked with TODO:BIGCOUNT.