并行的地方

时间:2014-04-14 21:06:10

标签: c++ parallel-processing hpx

并行主义的新手,并用C ++学习HPX的绳索。我正在查看一个特定的hello-word示例,它将在每个位置的每个OS线程上打印hello world,某些输出看起来像:

hello world from OS-thread 1 on locality 0
hello world from OS-thread 1 on locality 1
hello world from OS-thread 0 on locality 0
hello world from OS-thread 0 on locality 1

我的问题是,当程序输出 on locality x 时,当地意味着什么?我理解OS-thread但是我不太确定程序是什么意味着哪个地方。

HPX main内部的一些代码示例这不是我的问题所必需的,但它确实包括多次调用以查找与主题相关的地点。

int hpx_main()
{
    {
        // Get a list of all available localities.
        std::vector<hpx::naming::id_type> localities =
            hpx::find_all_localities();

        // Reserve storage space for futures, one for each locality.
        std::vector<hpx::lcos::future<void> > futures;
        futures.reserve(localities.size());

        BOOST_FOREACH(hpx::naming::id_type const& node, localities)
        {
            // Asynchronously start a new task. The task is encapsulated in a
            // future, which we can query to determine if the task has
            // completed.
            typedef hello_world_foreman_action action_type;
            futures.push_back(hpx::async<action_type>(node));
        }

        // The non-callback version of hpx::lcos::wait takes a single parameter,
        // a future of vectors to wait on. hpx::lcos::wait only returns when
        // all of the futures have finished.
        hpx::lcos::wait(futures);
    }

    // Initiate shutdown of the runtime system.
    return hpx::finalize();
}

1 个答案:

答案 0 :(得分:4)

根据我从他们的文档中理解的内容 - 您可以将Locality视为执行应用程序的进程数 假设2个服务器执行你的程序,第一个执行地点0,第二个地点执行你的程序 这样你就可以知道哪个进程执行相同的代码,就是说服务器(locality 0),哪个是客户端(locality 1)。

此外,每个进程都可以运行多个线程,这可以作为os_threads的数量显示。

按照这个例子:  http://stellar.cct.lsu.edu/files/hpx_0.8.1/docs/hpx/tutorial/examples/hello_world.html

以及这些命令行选项:http://stellar.cct.lsu.edu/files/hpx_0.8.1/docs/hpx/tutorial/getting_started/commandline.html

这是如何使用多个地区的说明: http://stellar.cct.lsu.edu/files/hpx_0.8.1/docs/hpx/tutorial/getting_started/unix_pbs.html

我认为理解它的最好方法是使用--hpx:node和--hpx:threads的值。

此外 - 我认为openmpi文档对于理解术语有点好......

虽然不确定我有所帮助,但我希望我做到了。