2014-11-13 5 views
0

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

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

Я заметил несколько вопросов, на этом сайте (в частности this question и ответ на this question), которые указывают, что можно указать физические идентификаторы центрального процессора в rankfile 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 работает с этим синтаксисом? Документировано ли это где угодно? Каков формальный синтаксис?

+0

Используйте 'lstopo -l' для получения логических идентификаторов. Затем поместите в rankfile 'slot = logicalID'. –

+0

Спасибо. Я понимаю, что вы можете получить логические идентификаторы таким образом, и это может быть хорошо, если вы создаете свои ранговые файлы вручную. Тем не менее, если вы автоматически генерируете файл ранга как часть настройки выполнения задания, вам нужно сделать вызов для удаленного вызова 'lstopo' для каждого узла, на который ссылается файл ранга. Это просто неприемлемо для нашего случая использования. Вот почему мне интересно о версиях openmpi, которые поддерживают нотацию 'p' для указания физических идентификаторов и конкретного синтаксиса этих обозначений. – Squirrel

+0

Май [источник] (https://svn.open-mpi.org/trac/ompi/browser/trunk/opal/mca/hwloc/base/hwloc_base_util.c#L1189) будет с вами или в этом конкретном случай, против вас. –

ответ

1

Благодаря Hristo Iliev для указания меня в направлении соответствующего кода. Кажется, что функция 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

Edit: Я также нашел this message в списке рассылки Open MPI Users, который, кажется, чтобы поддержать мои выводы.