为std :: complex <long double =“”>数组提高mpi reduce

时间:2016-04-13 10:16:49

标签: c++ boost

有没有人有关于使用boost进行std::complex<long double>数组的reduce的想法?

我收到错误‘struct std::complex<long double>’ has no member named ‘serialize’  代码如下:

#include <boost/mpi.hpp>
#include<complex>
namespace mpi = boost::mpi;

int main() {
mpi::environment env;
mpi::communicator world;
const int N = 4;

std::complex<long double>  a[N]={};


 if (world.rank() == 0) {
    std::complex<long double>  sum[N] = {};
    mpi::reduce(world, a,sum, std::plus<>(), 0);

    for(int i=0;i<N;i++) std::cout<<a[i]<<std::endl; 
} 

}

我使用mpic++ main.cpp -o main -lboost_mpi -lboost_serialization -lboost_system

编译了它

1 个答案:

答案 0 :(得分:0)

库中的常见设计可以选择使用外部类型,如SC ++ L,可能没有的现代标准类型,或其他来源的类型,除非明确包含标题,否则不提供功能。

Boost为Fusion和Serialization执行此操作,以避免为您在翻译单元中可能不需要的内容拉动重的SC ++ L标头,或者甚至可能不存在。

很可能存在您可能需要查找和包含的boost/serialization/complex.hpp标题。