Boost logo

Boost Users :

Subject: Re: [Boost-users] Hybrid parallelism, no more + mpi+serialization, many questions
From: James C. Sutherland (James.Sutherland_at_[hidden])
Date: 2010-11-16 14:41:08


On Tue, Nov 16, 2010 at 10:22 AM, Hicham Mouline <hicham_at_[hidden]> wrote:

> hello,
>
> Subsequent to a previous thread asking whether to merge MPI and Openmp to
> parallelize a large problem, I've been advised to go through MPI only as it
> would be simpler and that MPI implementations on the same box use shared
> memory which doesn't have a huge cost (still some compared to a uniprocess
> multithread where objects are actually shared naturally.... writing this,
> actually a question comes up:
> 1. in the "shared memory" of many mpi processes on the same box, is an
> object (say a list of numbers) actually shared between the 2 processes
> address spaces? I guess not unless one explicitly make it so with the
> "shared memory API" (unix specific?)
>

In MPI, each process has access only to the memory that it directly
controls, and data must be explicitly transferred between processes, even if
that memory is physically shared. If you break that model, you are playing
with fire.

>
>
> So, I currently have a serial application with a GUI that runs some
> calculations.
> My next step is to use OpenMPI with the help of the Boost.MPI wrapper
> library in C++ to parallelize those calculations.
> There is a set of static data objects created once at startup or loaded
> from files.
>
> 2. what are the pros/cons of loading the static data objects individually
> from each separate mpi process vs broadcasting the static data via MPI
> itself after only the master reads/sets up the static data?
>

It is easier to load them from disk on each process (you don't have to deal
with serialization and passing the structure). Typically you will not see a
performance problem if this is only a one-time startup cost and if you are
not loading massive data files from a file system with weak IO capabilities
onto very many MPI processes.

>
> 3. Is it possible to choose the binary archive instead of the text archive
> when serializing my user-defined types?
> Where do I deal with the endianness issue given that I may have
> Intel/Sparc/PowerPC CPUs?
>

Not sure how boost::serialization handles that one... There are probably
compiler flags that you can set to change endian-ness if needed though.

>
> regards,
>
> _______________________________________________
> Boost-users mailing list
> Boost-users_at_[hidden]
> http://lists.boost.org/mailman/listinfo.cgi/boost-users
>



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net