ornladios / ADIOS2-Examples

Application examples for the ADIOS2 I/O library https://github.com/ornladios/ADIOS2. This is Work in Progress.
Apache License 2.0
20 stars 16 forks source link

Korteweg-de Vries example #26

Closed NAThompson closed 4 years ago

NAThompson commented 4 years ago

Shows how to use ADIOS2 in the most basic scenario possible: No MPI, 1D.

NAThompson commented 4 years ago

@williamfgc : Do you know how to detect the ADIOS2_HAVE_MPI macro in Meson?

williamfgc commented 4 years ago

@NAThompson Meson can use a cmake module to detect targets, but I am not sure if adios2 defines a target like adios2::mpi. In any case, I'd rather keep this repo MPI-linked all along, even if you're not using the communicator.

NAThompson commented 4 years ago

@williamfgc : I just added a diff which builds on top of Brad King's diffs in this PR, and should resolve all the issues you identified.

All the vandalism that I did to the CMakeLists.txt has gone away; the only issue is that this diff won't compile until @bradking's diffs are merged into ADIOS2.

williamfgc commented 4 years ago

@NAThompson let's keep it simple until there is an adios2 official release (v2.6?). For now let's make it work with version 2.5.0 linking with MPI. We can later upgrade if necessary to adapt to future distributions.

NAThompson commented 4 years ago

@williamfgc : For a simple example, adding MPI and then not using it will make it confusing, especially for a person who has never used the library before. @bradking's changes are so critical that I think they should define a release, though @pnorbert will need to comment on that.

How is this repo kept in sync with the ornladios/ADIOS2 library? Is there a vision that this should always build on top of ADIOS2 master? Or should there be git tags for this which match the ADIOS2 git tags?

williamfgc commented 4 years ago

For a simple example, adding MPI and then not using it will make it confusing, especially for a person who has never used the library before

That was actually a requested feature. That way we don't have to worry about shipping two libraries and showcase that serial cases can run with MPI-enabled adios2 libraries (which are the vast majority of distributed adios2 libraries). The same issue would happen in any repo using adios2 upstream, it's not particular to this one.

@bradking's changes are so critical that I think they should define a release, though @pnorbert will need to comment on that. Is there a vision that this should always build on top of ADIOS2 master? Or should there be git tags for this which match the ADIOS2 git tags?

Let's wait for the release to happen, then we can bump this repo's version. We don't want to spend time back and forth on something that doesn't exist, yet.

How is this repo kept in sync with the ornladios/ADIOS2 library?

No different from most libraries with external dependencies, we point at release versions (so far, v2.5.0). This repo is used for tutorials. There is a fair amount of work to keep things stable with each version (including conda releases, CI updates, tests), sync with master would mean a lot more work (especially if a bug or API changes are introduced).

williamfgc commented 4 years ago

@NAThompson let's keep this working with adios2 v2.5.0 for now.

chuckatkins commented 4 years ago

I'm with @williamfgc on this. We can bump to the new target interface in the next release. Until then, let's keep it backwards compatible so it will work with both release and master.

NAThompson commented 4 years ago

Ok, cool. I just got it built on top of the v2.5.0 ADIOS2 tag, and just opened a new PR so the diffs are not so incomprehensible.