BerkeleyLab / caffeine

A parallel runtime library for Fortran compilers
https://berkeleylab.github.io/caffeine/
Other
37 stars 7 forks source link

Restructure modules #68

Closed ktras closed 6 months ago

ktras commented 6 months ago

Closes #64.

ktras commented 6 months ago

I just moved the definition of handle_data to the bottom of the prif module. prif_coarray_handle and prif_team_type type definitions cannot be moved to the same location because there are arguments of those types above.

bonachea commented 6 months ago

I just moved the definition of handle_data to the bottom of the prif module. prif_coarray_handle and prif_team_type type definitions cannot be moved to the same location because there are arguments of those types above.

I thought we tried this in our prototyping meeting and decided that at least one compiler rejected the declaration of prif_coarray_handle when the handle_data pointer field was an incomplete type? What compilers have you successfully tested against?

Of course what ultimately matters most is what flang-new will accept, which I'm guessing is currently "none of this". On a related note, I think this PR needs to update the table in the top-level README where we track major modern Fortran features the Caffeine implementation requires. We at least need to add "Submodule support [1]" (which I believe was added in F08?), and probably remove the [1] from contiguous attribute, which is now "baked into" the PRIF API. There may be other updates needed.

ktras commented 6 months ago

I thought we tried this in our prototyping meeting and decided that at least one compiler rejected the declaration of prif_coarray_handle when the handle_data pointer field was an incomplete type? What compilers have you successfully tested against?

When compiling the whole software stack, the only compiler we are currently developing with is gfortran.

Based on this comment, I tried compiling just the prif module (with the handle_data type definition at the bottom of the module) with the following compilers and with the following results:

Compiler Result
gfortran compiles
ifx compiles
cray ftn compiles
nvfortran compiles
nagfor doesn't compile for different reason (doesn't have c_ptrdiff_t support).
ktras commented 6 months ago

@bonachea Thank you for the further feedback. I have answered your compiler question above and then updated the PR in reference to your requested changes around collective_helpers_m and replied to that comment above. I believe I have addressed all of your review comments to this point. Please let me know about any further feedback, thanks!

bonachea commented 6 months ago

Wooops, I just noticed that doc-generator.md also needs updates as a result of this reorg, assuming we are still maintaining the FORD docs.