Boost logo

Boost-MPI :

Subject: Re: [Boost-mpi] Suboptimal sending of std::vectors
From: Gonzalo Brito Gadeschi (g.brito_at_[hidden])
Date: 2014-01-20 09:37:48


You should call vector.reserve(n) before you call recv and benchmark again
because otherwise you are timing a memory allocation in the vector
benchmarks that isn't there in the array benchmarks.

Bests,
Gonzalo

On Mon, Jan 20, 2014 at 3:24 PM, Simon Etter <ettersi_at_[hidden]>wrote:

> Hi!
>
> When benchmarking the performance of sending a std::vector<double> with
> Boost.MPI, I noticed that you can gain several factors of speedup if you
> replace
>
> std::vector<double> data(n);
> comm.send(0,0,data);
>
> by e.g.
>
> std::vector<double> data(n);
> comm.send(0,0, boost::mpi::skeleton(data));
> comm.send(0,0, boost::mpi::get_content(data));
>
> The code to benchmark, the measured data as well as a plot thereof are
> attached. Further parameters were:
>
> MPI implementation: Open MPI 1.6.5
> C++ compiler: gcc 4.8.2
> Compiler flags: -O3 -std=c++11
> mpirun parameter: --bind-to-core
> CPU model: AMD Opteron(tm) Processor 6174
>
> Why is it/what am I doing wrong that the default sending of
> std::vector<double> performs so badly?
>
> Best regards,
> Simon Etter
>
> _______________________________________________
> Boost-mpi mailing list
> Boost-mpi_at_[hidden]
> http://lists.boost.org/mailman/listinfo.cgi/boost-mpi
>
>

-- 
Dipl.-Ing. Gonzalo Brito Gadeschi
Institute of Aerodynamics and Chair of Fluid Mechanics
RWTH Aachen University
Wuellnerstraße 5a
D-52062 Aachen
Germany
Phone: ++49-(0)241-80-94821
Fax: ++49-(0)241-80-92257
E-mail:  g.brito_at_[hidden]
Internet: www.aia.rwth-aachen.de


Boost-Commit list run by troyer at boostpro.com