Working with multiple MPI implementations

Hello,

I'm just starting out with Parallel HDF5 and I've built HDF to use MPICH2 from ANL and it seems to be running successfully on my RedHat Linux 8 processor workstation. This is just one of many software/hardware configurations I will need to support.

My ultimate goal is to use Parallel HDF5 in a product that already provides support for different MPI implementations. We provide the ability to choose which MPI implementation when the product is launched.

Because I needed to specify which MPI implementation before building Parallel HDF5, I'm worried that I may need to rebuild Parallel HDF5 for each MPI implementation we support. Is this true? If not, what steps will be required to switch from one MPI implementation to another?

Would my source code need to be aware of which MPI implementation Parallel HDF5 is using?

Thanks in advance for any responses and if you care to share any advice on using Parallel HDF5, I would be glad to receive it. Thanks,

~John

···

_________________________________________________________________
Hotmail: Powerful Free email with security by Microsoft.
http://clk.atdmt.com/GBL/go/201469230/direct/01/

Hi John,

···

On Feb 18, 2010, at 4:28 PM, John Powell wrote:

Hello,

I'm just starting out with Parallel HDF5 and I've built HDF to use MPICH2 from ANL and it seems to be running successfully on my RedHat Linux 8 processor workstation. This is just one of many software/hardware configurations I will need to support.

My ultimate goal is to use Parallel HDF5 in a product that already provides support for different MPI implementations. We provide the ability to choose which MPI implementation when the product is launched.

Because I needed to specify which MPI implementation before building Parallel HDF5, I'm worried that I may need to rebuild Parallel HDF5 for each MPI implementation we support. Is this true? If not, what steps will be required to switch from one MPI implementation to another?

Would my source code need to be aware of which MPI implementation Parallel HDF5 is using?

Thanks in advance for any responses and if you care to share any advice on using Parallel HDF5, I would be glad to receive it. Thanks,

  Unfortunately, I think you are correct in your analysis - you will probably need a different version of HDF5 for each version of MPI. Currently the MPI standard does not specify a binary compatibility requirement, so each MPI implementation may be different enough that the HDF5 library wouldn't work with it.

  Quincey

Hi Quincey,

Thanks for the reply.
It's not the answer I was hoping for, but I can live with it.

If I can build PHDF5 as dynamic libraries, I should be able to point to the specific version I need at runtime, that way I can (hopefully) be isolated from the differences in MPI versions. Does this sound reasonable?

Has anyone else tried this? If so, did you find that you had to pass different hints to different PHDF5/MPI libraries when reading or writing?
Any other code differences required between different MPI implementations or did PHDF5's MPI-IO driver isolate you from these differences?

Do some MPI implementations perform better than others with PHDF5? If so, under what circumstances?

Sorry for all the questions, but while I'm still evaluating the possibility of this approach, I'm trying to understand what kind of craters I might fall into to better estimate the effort and understand the risks. This is where your collective experience is so valuable to me.

Thanks so much,

~John

···

From: koziol@hdfgroup.org
Date: Thu, 18 Feb 2010 17:17:59 -0600
To: hdf-forum@hdfgroup.org
Subject: Re: [Hdf-forum] Working with multiple MPI implementations

Hi John,
On Feb 18, 2010, at 4:28 PM, John Powell wrote:Hello,

I'm just starting out with Parallel HDF5 and I've built HDF to use MPICH2 from ANL and it seems to be running successfully on my RedHat Linux 8 processor workstation. This is just one of many software/hardware configurations I will need to support.

My ultimate goal is to use Parallel HDF5 in a product that already provides support for different MPI implementations. We provide the ability to choose which MPI implementation when the product is launched.

Because I needed to specify which MPI implementation before building Parallel HDF5, I'm worried that I may need to rebuild Parallel HDF5 for each MPI implementation we support. Is this true? If not, what steps will be required to switch from one MPI implementation to another?

Would my source code need to be aware of which MPI implementation Parallel HDF5 is using?

Thanks in advance for any responses and if you care to share any advice on using Parallel HDF5, I would be glad to receive it. Thanks,

  Unfortunately, I think you are correct in your analysis - you will probably need a different version of HDF5 for each version of MPI. Currently the MPI standard does not specify a binary compatibility requirement, so each MPI implementation may be different enough that the HDF5 library wouldn't work with it.
  Quincey
                 
_________________________________________________________________
Hotmail: Free, trusted and rich email service.
http://clk.atdmt.com/GBL/go/201469228/direct/01/

Hi John,

Hi Quincey,

Thanks for the reply.
It's not the answer I was hoping for, but I can live with it.

If I can build PHDF5 as dynamic libraries, I should be able to point to the specific version I need at runtime, that way I can (hopefully) be isolated from the differences in MPI versions. Does this sound reasonable?

  Seems like it should work, yes.

Has anyone else tried this?

  I haven't heard of anyone else trying this, no. :-/

  If so, did you find that you had to pass different hints to different PHDF5/MPI libraries when reading or writing?

  Usually, it's not a requirement to pass hints to the MPI library. (We don't send any special ones normally)

Any other code differences required between different MPI implementations or did PHDF5's MPI-IO driver isolate you from these differences?

  The MPI-IO VFD should insulate us from differences between MPI libraries. You should still compile & run the HDF5 tests with each MPI implementation, though. (which is done with the "make check" command, after configuring HDF5)

Do some MPI implementations perform better than others with PHDF5? If so, under what circumstances?

  There's always differences, yes. However, they are dependent on many different variables and I can't iterate them all, really.

Sorry for all the questions, but while I'm still evaluating the possibility of this approach, I'm trying to understand what kind of craters I might fall into to better estimate the effort and understand the risks. This is where your collective experience is so valuable to me.

  Glad to help, but perhaps others could pipe up with experience here also. :slight_smile:

    Quincey

···

On Feb 19, 2010, at 9:06 AM, John Powell wrote:

Thanks so much,

~John

From: koziol@hdfgroup.org
Date: Thu, 18 Feb 2010 17:17:59 -0600
To: hdf-forum@hdfgroup.org
Subject: Re: [Hdf-forum] Working with multiple MPI implementations

Hi John,

On Feb 18, 2010, at 4:28 PM, John Powell wrote:

Hello,

I'm just starting out with Parallel HDF5 and I've built HDF to use MPICH2 from ANL and it seems to be running successfully on my RedHat Linux 8 processor workstation. This is just one of many software/hardware configurations I will need to support.

My ultimate goal is to use Parallel HDF5 in a product that already provides support for different MPI implementations. We provide the ability to choose which MPI implementation when the product is launched.

Because I needed to specify which MPI implementation before building Parallel HDF5, I'm worried that I may need to rebuild Parallel HDF5 for each MPI implementation we support. Is this true? If not, what steps will be required to switch from one MPI implementation to another?

Would my source code need to be aware of which MPI implementation Parallel HDF5 is using?

Thanks in advance for any responses and if you care to share any advice on using Parallel HDF5, I would be glad to receive it. Thanks,

  Unfortunately, I think you are correct in your analysis - you will probably need a different version of HDF5 for each version of MPI. Currently the MPI standard does not specify a binary compatibility requirement, so each MPI implementation may be different enough that the HDF5 library wouldn't work with it.

  Quincey

Hotmail: Free, trusted and rich email service. Get it now. _______________________________________________
Hdf-forum is for HDF software users discussion.
Hdf-forum@hdfgroup.org
http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org

On linux, every MPI implementation is based on ROMIO, so they all take
basically the same hints anyway.

==rob

···

On Fri, Feb 19, 2010 at 11:00:10AM -0600, Quincey Koziol wrote:

> Has anyone else tried this?

  I haven't heard of anyone else trying this, no. :-/

> If so, did you find that you had to pass different hints to
> different PHDF5/MPI libraries when reading or writing?

  Usually, it's not a requirement to pass hints to the MPI
  library. (We don't send any special ones normally)

--
Rob Latham
Mathematics and Computer Science Division
Argonne National Lab, IL USA