Местности в параллелизме

Новичок в параллелизме и изучение канонов для HPX с C ++. Я смотрю на конкретный пример привет слова, который будет печатать hello world в каждом OS-потоке в каждой местности некоторые результаты будут выглядеть так:

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

У меня вопрос, когда вывод программы на местности х, что именно означает местность? Я понимаю OS-поток, но я не совсем уверен, что программа подразумевает под какой локализацией.

Пример кода внутри 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();
}

2

Решение

Из того, что я понимаю из их документации — вы можете рассматривать Locality как число процессов, выполняющих приложение.
скажем, 2 сервера выполняют вашу программу, первый будет выполнять локальность 0, а второй — 1.
Таким образом, вы можете узнать, какой процесс, который выполняет тот же код, скажем, сервер (местность 0), а какой клиент (местность 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 немного лучше для понимания терминов …

Хотя я не уверен, что помог, но надеюсь, что помог.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]