Skip to content
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

Merged
merged 2 commits into from
Jun 14, 2018

Conversation

C0nsultant
Copy link
Member

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.

@@ -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
Copy link
Member Author

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.

Copy link
Member

@ax3l ax3l Jun 13, 2018

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!

Copy link
Member

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

@ax3l ax3l mentioned this pull request Jun 13, 2018
11 tasks
{
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
Copy link
Member

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?

Copy link
Member Author

@C0nsultant C0nsultant Jun 14, 2018

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).

@ax3l
Copy link
Member

ax3l commented Jun 13, 2018

really nice, thank you!

@@ -25,7 +25,6 @@
#if openPMD_HAVE_ADIOS1
# include "openPMD/IO/AbstractIOHandlerImpl.hpp"
# include <adios.h>
Copy link
Member

@ax3l ax3l Jun 13, 2018

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.

Copy link
Member

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.
@C0nsultant C0nsultant force-pushed the topic/no_mpi_in_adios_interface branch from d2cda3a to 439226b Compare June 14, 2018 04:08
@ax3l ax3l merged commit ec257b3 into openPMD:dev Jun 14, 2018
@C0nsultant C0nsultant deleted the topic/no_mpi_in_adios_interface branch June 14, 2018 07:34
This was referenced Jun 14, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants