Boost skeleton-content 问题

来源:互联网 发布:深入浅出node.js完整版 编辑:程序博客网 时间:2024/06/07 17:01

看起来boost 中skeleton-content 并没有那么好用,看下列:root试图传递一个complex 的vector给其他process:

#include "stdafx.h"#include <boost/mpi.hpp>#include <boost/mpi/skeleton_and_content.hpp>#include <boost/serialization/complex.hpp>#include <boost/serialization/vector.hpp>#include <iostream>namespace mpi = boost::mpi;using namespace std;int main(int argc, char* argv[]){    mpi::environment env(argc, argv);    mpi::communicator world;    int NN=world.size();    int myid=world.rank();    if (myid == 0)     {        int N = 10;        vector <complex<double> > l(N);        for (int p=1; p!=NN; p++)        {            world.send(p, 1, mpi::skeleton(l));        }        mpi::content c = mpi::get_content(l);        for (int n = 0; n!=l.size() ; n++)         {            l[n]=complex<double>(1.0,1.0);            cout << l[n] << " "<<std::endl;        }        for (int p=1; p!=NN; p++)        {            world.send(p, 1, c);        }    }     else     {        vector <complex<double> > l;        mpi::content c;        world.recv(0, 1, mpi::skeleton(l));        c = mpi::get_content(l);        world.recv(0, 1, c);        for (int n=0; n!=l.size(); n++)        {            cout << l[n] << " "<<std::endl;        }        cout << endl;    }}

这里写图片描述

可见,结果并没有正确传递,子进程没有收到相应数据。

0 0
原创粉丝点击