-
Notifications
You must be signed in to change notification settings - Fork 51
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
Remove MPI from serial ADIOS interface #258
Conversation
@@ -1121,7 +1121,7 @@ TEST_CASE( "no_serial_hdf5", "[serial][hdf5]" ) | |||
REQUIRE(true); | |||
} | |||
#endif | |||
#if openPMD_HAVE_ADIOS1 | |||
#if openPMD_HAVE_ADIOS1 && !openPMD_HAVE_MPI |
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.
You can revert this change when #254 is ready.
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.
uff, I rebased on your branch and applied the mentioned changes.
I won't get a running solution with our new approach unless I do explicit symbol hiding/exposing in the two transalation units for adios, since otherwise symbols like adios_open
and common_adios_open
will be mismatched at link and runtime.
Can do, but this will exclude pgic++ at least since not all compilers know symbol hiding. harsh world...
Or so some symbol renaming with --prefix-symbols
via objcpy
... gosh!
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.
We could maybe go for dlopen()
for one ADIOS part xD
{ | ||
char const* env = std::getenv(key.c_str()); | ||
if( env != nullptr ) | ||
/* create all files where ADIOS file creation has been deferred, but this has never been triggered |
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.
the comment is not very clear: what is "this" what has never been triggered and what is "this" that happens in the line below?
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.
True, the sentence really is a bit vague.
First "this" means actual file creation. The operation (file creation) has been deferred, but because no IO op that triggers execution of the deferred operation (file creation) has been scheduled across the whole Series, we have to do it manually.
Seconds "this" stands for the situation described above (i.e. the scenario in which no appropiate IO op has been scheduled).
really nice, thank you! |
@@ -25,7 +25,6 @@ | |||
#if openPMD_HAVE_ADIOS1 | |||
# include "openPMD/IO/AbstractIOHandlerImpl.hpp" | |||
# include <adios.h> |
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.
hm, adios.h
also includes adios_mpi.h
... argh.. but this calls the dummy... of have to check my setters more.
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 think you need adios.h
and mpi.h
in ParallelADIOS1...hpp
only.
In the serial header, use adios_read.h
and in the serial impl. mpidummy.h
as you do.
To be able to compile both serial and parallel ADIOS1 backends, remove all traces of MPI from the serial interface. MPI_COMM_NULL is used in the implementation, but not exposed.
The adios.h header is not required for the interfaces. This might make separate compilation and multiple linking easier.
d2cda3a
to
439226b
Compare
To be able to compile both serial and parallel ADIOS1 backends, remove
all traces of MPI from the serial interface. MPI_COMM_NULL is used in
the implementation, but not exposed.
Suggested in #252 (comment), blocker for #254.