Я пытался настроить рабочую станцию с двумя процессорами (Dell Precision 7820) для запуска локальных параллельных заданий с использованием openmpi 2.1.1-8 (как предустановлено в Ubuntu 18.04), однако он не запускается со следующей ошибкой:
mpirun: pci-common.c:125: hwloc_pci_compare_busids: Assertion `0' failed.
Изучая исходный код pci-common. c перед строкой assert (0) можно найти комментарий, в котором говорится, что ничто обычно не должно достигать этой точки, и прервет все отладочные и не отладочные сборки , Попытка сгенерировать карту топологии системы с помощью lstopo (программа в hwlo c) также завершается схожей ошибкой.
Мне удалось локально скомпилировать более новую версию hwlo c (по сравнению с 2.0.4) к предварительно установленному 1.11.9-1) и обнаружил, что я смог получить lstopo только для генерации карты топологии, когда скомпилировал hwlo c с использованием libpciaccess-dev поверх стандартного libpciaccess0, который поставляется с предустановленным. Сводный результат выполнения hwlo c с различными библиотеками pciaccess отображает следующие результаты
Probe / display I/O devices: PCI(linux) LinuxIO GL
Probe / display I/O devices: PCI(pciaccess+linux) LinuxIO GL
: первый компилируется с помощью libpciaccess0, а второй - с помощью libpciaccess-dev. Опять же, последний является единственным, способным генерировать карту топологии системы, и у меня сложилось впечатление, что openmpi нужна эта информация для правильного распределения заданий в системе. В настоящее время я не уверен, как применить эти изменения версии к текущему пакету openmpi или нужно ли что-то компилировать полностью из исходного кода. Существует ли потенциально более простой способ решения этой проблемы?