【问题标题】:Simple Distributed Graph BGL Example简单的分布式图 BGL 示例
【发布时间】:2015-10-21 16:54:05
【问题描述】:

我正在使用分布式 Boost 图形库,但没有成功。我的目标很简单:分发由 BGL 生成器 from the examples 生成的图。但是,我有关于bsp_process_group 的编译错误:

错误列表是HUGE,但基本上说我的typedef是错误的。

/usr/local/include/boost/graph/distributed/detail/mpi_process_group.ipp:137:8: No type named 'list' in namespace 'std'
/usr/local/include/boost/graph/distributed/detail/mpi_process_group.ipp:137:12: Expected member name or ';' after declaration specifiers
/Users/sensei/Documents/Projects/scratch/pbgl/pbgl/main.cpp:17:68: No template named 'bsp_process_group' in namespace 'boost::parallel'; did you mean 'boost::process_group'?
/Users/sensei/Documents/Projects/scratch/pbgl/pbgl/main.cpp:17:85: No member named 'bsp_process_group' in namespace 'boost::parallel'; did you mean 'bsp_process_group_tag'?
/Users/sensei/Documents/Projects/scratch/pbgl/pbgl/main.cpp:17:116: Expected a type
/usr/local/include/boost/graph/graph_traits.hpp:57:26: Type 'int' cannot be used prior to '::' because it has no members
/usr/local/include/boost/graph/graph_traits.hpp:58:26: Type 'int' cannot be used prior to '::' because it has no members
/usr/local/include/boost/graph/graph_traits.hpp:65:26: Type 'int' cannot be used prior to '::' because it has no members
/usr/local/include/boost/graph/graph_traits.hpp:66:26: Type 'int' cannot be used prior to '::' because it has no members
/usr/local/include/boost/graph/graph_traits.hpp:67:26: Type 'int' cannot be used prior to '::' because it has no members
/usr/local/include/boost/graph/erdos_renyi_generator.hpp:48:67: Argument may not have 'void' type
/usr/local/include/boost/graph/erdos_renyi_generator.hpp:57:67: Argument may not have 'void' type
/usr/local/include/boost/graph/erdos_renyi_generator.hpp:87:24: Field has incomplete type 'vertices_size_type' (aka 'void')
/usr/local/include/boost/graph/erdos_renyi_generator.hpp:88:21: Field has incomplete type 'edges_size_type' (aka 'void')
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/utility:253:9: Field has incomplete type 'void'
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/utility:254:9: Field has incomplete type 'void'
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/utility:262:19: Cannot form a reference to 'void'

这是我非常简单且错误的代码:

#include <iostream>
#include <string>
#include <vector>

#include <boost/mpi.hpp>
#include <boost/graph/use_mpi.hpp>
#include <boost/graph/distributed/mpi_process_group.hpp>
#include <boost/graph/distributed/adjacency_list.hpp>
#include <boost/graph/erdos_renyi_generator.hpp>
#include <boost/random/linear_congruential.hpp>

int main(int argc, const char * argv[])
{
    boost::mpi::environment  env;
    boost::mpi::communicator comm;

    typedef boost::adjacency_list<boost::vecS, boost::distributedS<boost::parallel::bsp_process_group, boost::vecS>, boost::directedS> graph;
    typedef boost::erdos_renyi_iterator<boost::minstd_rand, graph> generator;

    boost::minstd_rand gen;

    graph g(generator(gen, 100, 0.05), generator(), 100);

    if (comm.rank() == 0)
    {
        // print all nodes for rank 0 here
    }
    return 0;
}

你能发现错误吗?此外,有没有地方可以找到一些源代码来阅读?我发现的分布式 BGL 文档非常稀缺……

谢谢!

【问题讨论】:

    标签: c++ boost mpi boost-graph


    【解决方案1】:

    我认为文档已经过时了; boost::parallel::bsp_process_group 似乎不再存在。使用 boost::graph::distributed::mpi_process_group 代替(加上添加 #include &lt;map&gt;)允许此代码在我的机器上编译(Ubuntu 15.04 使用 Boost 1.59)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多