Как указать идентификаторы физических процессоров в файлах рангов openmpi 1.6.4+?

В последней (v1.8.3) документации OpenMPI указывается, что в файлах рейтингов теперь должны использоваться логические идентификаторы процессора, сообщаемые hwloc, а не физические идентификаторы, см. последнее предложение в разделе Rankfiles документа mpirun документация здесь:

Начиная с Open MPI v1.7, расположение всех слотов сокетов/ядер указывается как логические индексы (в серии Open MPI v1.6 использовались физические индексы). Вы можете использовать такие инструменты, как «lstopo» HWLOC, чтобы найти логические индексы сокетов и ядер.

Я заметил несколько вопросов на этом сайте (особенно этот вопрос и ответ на этот вопрос), которые указывают, что можно указать физический идентификаторы процессора в ранжированном файле openMPI, добавив к идентификатору префикс p. Например:

rank 0=localhost slot=p0
rank 1=localhost slot=p8
rank 2=localhost slot=p1
rank 3=localhost slot=p9

Чтобы запросить идентификатор физического процессора 0 для ранга 0, идентификатор физического процессора 8 для ранга 1 и т. д.

Я пытался найти этот синтаксис в документах OpenMPI безрезультатно. Я также пытался найти кого-нибудь, кто на самом деле попытался построить файл ранжирования таким образом в OpenMPI 1.6.4, который, как он сообщил, также не работает.

С какими версиями OpenMPI работает этот синтаксис? Это где-нибудь задокументировано? Каков формальный синтаксис?


person Squirrel    schedule 13.11.2014    source источник
comment
Используйте lstopo -l для получения логических идентификаторов. Затем поместите в Rankfile slot=logicalID.   -  person Hristo Iliev    schedule 13.11.2014
comment
Спасибо. Я понимаю, что вы можете получить логические идентификаторы таким образом, и это может быть хорошо, если вы создаете свои рейтинговые файлы вручную. Однако, если вы автоматически создаете файл рейтинга как часть настройки выполнения задания, вам нужно будет сделать вызов для удаленного вызова lstopo для каждого хоста, указанного в файле рейтинга. Это просто неприемлемо для нашего варианта использования. Вот почему мне любопытны версии openmpi, которые поддерживают нотацию p для указания физических идентификаторов, и конкретный синтаксис этой нотации.   -  person Squirrel    schedule 13.11.2014
comment
Может исходник быть с вами или, в данном конкретном случае, против вас.   -  person Hristo Iliev    schedule 14.11.2014
comment
Ха, хорошо, спасибо :) Я посмотрю на это.   -  person Squirrel    schedule 14.11.2014


Ответы (1)


Спасибо Христо Илиеву за то, что указал мне направление соответствующего кода. Кажется, функция hwloc_base_slot_list_parse появилась в коде open-mpi из версии 1.8.

Просматривая код, я пришел к функции orte_rmaps_rankfile_parse, которая кажется вернуться к версии 1.3. Заглянув в историю этой функции, мы обнаруживаем, что следующий фрагмент кода появляется из ветки версии 1.5 в разделе разбора списка слотов:

/* we no longer support physical mappings */
if ('P' == value[0] || 'p' == value[0]) {
    orte_show_help("help-rmaps_rank_file.txt", "not-supported", true, rankfile);
    rc = ORTE_ERR_SILENT;
    ORTE_ERROR_LOG(rc);
    goto unlock;
}

Итак, из этого я делаю вывод, что ответ на мой вопрос заключается в том, что нотация p поддерживается в версиях OpenMPI ниже 1.5

Изменить: я также нашел это сообщение в списке рассылки Open MPI Users, которое, похоже, подтверждает мои выводы.

person Squirrel    schedule 14.11.2014