
Я пытаюсь использовать openmpi из octave для запуска других экземпляров octave на удаленных машинах. Когда я запускаю скрипт, который должен запускать различные процессы, он жалуется на устаревшие библиотеки:
Running octave in parallel on /opt/data/octave/test using 24 processors
[pleasant-increase:13959] Warning: could not find environment variable "LD_PRELOAD"
[octave-controller:15259] mca: base: component_find: unable to open /usr/lib/openmpi/lib/openmpi/mca_paffinity_hwloc: perhaps a missing symbol, or compiled for a different ver$
[octave-controller:15259] mca: base: component_find: unable to open /usr/lib/openmpi/lib/openmpi/mca_carto_auto_detect: perhaps a missing symbol, or compiled for a different v$
[octave-controller:15259] mca: base: component_find: unable to open /usr/lib/openmpi/lib/openmpi/mca_carto_file: perhaps a missing symbol, or compiled for a different version $
[octave-controller:15259] mca: base: component_find: unable to open /usr/lib/openmpi/lib/openmpi/mca_shmem_mmap: perhaps a missing symbol, or compiled for a different version $
[octave-controller:15259] mca: base: component_find: unable to open /usr/lib/openmpi/lib/openmpi/mca_shmem_posix: perhaps a missing symbol, or compiled for a different version$
[octave-controller:15259] mca: base: component_find: unable to open /usr/lib/openmpi/lib/openmpi/mca_shmem_sysv: perhaps a missing symbol, or compiled for a different version $
--------------------------------------------------------------------------
It looks like opal_init failed for some reason; your parallel process is
likely to abort. There are many reasons that a parallel process can
fail during opal_init; some of which are due to configuration or
environment problems. This failure appears to be an internal failure;
here's some additional information (which may only be relevant to an
Open MPI developer):
opal_shmem_base_select failed
--> Returned value -1 instead of OPAL_SUCCESS
--------------------------------------------------------------------------
[octave-controller:15259] [[INVALID],INVALID] ORTE_ERROR_LOG: Error in file runtime/orte_init.c at line 79
--------------------------------------------------------------------------
It looks like MPI_INIT failed for some reason; your parallel process is
likely to abort. There are many reasons that a parallel process can
fail during MPI_INIT; some of which are due to configuration or environment
problems. This failure appears to be an internal failure; here's some
additional information (which may only be relevant to an Open MPI
developer):
ompi_mpi_init: orte_init failed
--> Returned "Error" (-1) instead of "Success" (0)
--------------------------------------------------------------------------
*** An error occurred in MPI_Init
*** on a NULL communicator
*** MPI_ERRORS_ARE_FATAL: your MPI job will now abort
Это продолжается для различных процессов, некоторые библиотеки отличаются, но всегда имеют
opal_shmem_base_select failed
...
ompi_mpi_init: orte_init failed
Я видел комментарии, в которых говорилось, что нужно изменить флаги компиляции в openmpi и перекомпилировать.
Проблема в том, что я использую локальный репозиторий juju для подготовки машин и не могу понять, куда поместить библиотеки, чтобы они загружались при подготовке, а не ту версию, которую juju использует в данный момент. Я знаю, что пакеты где-то хранятся. Я не уверен, находятся ли они на машине состояний juju, на сервере juju или juju действует как собственный канал apt-get pass-through.
любые идеи приветствуются.
Добавлено 2015.04.28 1723PST-в ответ на Robie Basak---------------------------------------------------
Спасибо за щедрость, Хорхе Кастро.
Мой кластер не подключен к сети. Контроллер MaaS подключен, на данный момент, но будет отключен в будущем. Когда я настраивал juju, я использовал локальный репозиторий, как в
juju sync-tools -e maas --local-dir="~/.juju/sync-tools"
juju bootstrap -e mass --debug --upload-tools=true --metadata-source="~/.juju/sync-tools" --to jujuBS.maas
juju deploy --repository=".juju/charms" local:juju-gui --to 0
juju expose juju-gui
Я использовал тот же механизм для октав и октав-контроллеров charms. Когда я смотрю на unit....log файлы в /var/log/juju, на одном из узлов, я вижу много apt, которые загружаются. Они где-то хранятся, так как узел не имеет доступа к сети.
Некоторые из них загружаются в результате загрузки charm, поэтому, похоже, либо MaaS, либо juju знают о требованиях apt для charms. Я добавил несколько пакетов octave в charm и install, так что octave установил их, и внезапно появились требуемые apts, которых не хватает. Эти apts, очевидно, требуются пакетом octave (open-mpi был одним из них, как оказалось). Я скачал его, добавил в charm и установил. Теперь пакет MPI загружается в octave, но выдает статус, который вы видите выше.
решение1
Короткий ответ: вы контролируете ситуацию; вы можете делать все, что захотите, в install
хуке Charm. По умолчанию используется основной архив Ubuntu с MAAS squid-deb-proxy, действующим как кэш прокси; отдельного зеркала или активного репозитория нет.
Контроллер MaaS на данный момент подключен, но в будущем будет отключен.
Я думаю, вы используете squid-deb-proxy, предоставляемый MAAS, который кэширует пакеты, но ничего больше. По умолчанию это означает, что среда, которую видит ваш хук charm install, настроена на использование squid-deb-proxy, предоставляемого MAAS, для загрузки пакетов, но sources.list
по-прежнему указывает на основной архив Ubuntu. Таким образом, ваши пакеты поступают из архива Ubuntu через MAAS в качестве кэша пакетов.
Чтобы организовать использование пользовательского пакета вместо этого, вы хотите изменить свой install
хук charms, чтобы использовать его, сначала перенастроив apt. Например, вы можете настроить PPA с вашим измененным пакетом, а затем организовать install
его использование вашим хуком.
Вы можете увидеть общий пример этого в реализации source
опции конфигурации Charm вхук с измененной конфигурацией mariadb charm. В случае с индивидуальным талисманом, который не обязательно должен быть универсальным, вы можете просто добавить строку вроде:
sudo add-apt-repository -y ppa:username/octave
прежде чем устанавливать пакет в свой install
хук, или подходящий эквивалент, если ваш чар написан на другом языке.
Если вы хотите отключить машину MAAS от доступа в Интернет, вам нужно будет реализовать собственный локальный репозиторий apt, а затем либо настроить squid-deb-proxy на машине MAAS для его использования archive.ubuntu.com
(при условии, что вы его зеркалировали), либо иным образом настроить ваши установочные хуки для настройки apt на его использование.