在 juju 中使用 openmpi 运行 octave 时出现问题

在 juju 中使用 openmpi 运行 octave 时出现问题

我正在尝试使用 Octave 中的 OpenMPI 启动远程机器上的其他 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 直通通道。

任何想法都值得赞赏。

添加于 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

我对 octave 和 octave-controller charms 使用了相同的机制。当我查看 /var/log/juju 中的 unit....log 文件时,在其中一个节点上,我看到许多 apt 正在加载。这些 apt 存储在某个地方,因为该节点无法访问网络。

其中一些是作为 charm 加载的结果而加载的,因此看起来 MaaS 或 juju 知道 charms 的 apt 要求。我将一些 octave 包添加到 charm 和安装中,以便 octave 安装它们,突然间缺少了所需的 apt。这些 apt 显然是 octave 包所必需的(事实证明 open-mpi 就是其中之一)。我下载了它,将其添加到 charm 并安装。现在 MPI 包在 octave 中加载,但给出的状态与您在上面看到的状态相同。

答案1

简短回答:您可以控制;您可以在 charm 的install钩子中做您想做的事情。默认使用主 Ubuntu 存档,MAAS 的 squid-deb-proxy 充当代理缓存;没有单独的镜像或存储库处于活动状态。

目前,MaaS 控制器已连接,但将来将会断开连接。

我认为您使用的是 MAAS 提供的 squid-deb-proxy,它仅缓存软件包,仅此而已。默认情况下,这意味着您的 charm install 钩子看到的环境已配置为使用 MAAS 提供的 squid-deb-proxy 下载软件包,但sources.list仍指向主 Ubuntu 存档。因此,您的软件包是通过 MAAS 作为软件包缓存从 Ubuntu 存档中获取的。

要安排使用自定义软件包,您需要install先通过重新配置 apt 来修改 charms 钩子以使用它。例如,您可以使用修改后的软件包设置 PPA,然后安排钩子install使用它。

source您可以在charm 配置选项的实现中看到一个通用示例mariadb charm 的配置更改钩子。如果您不需要通用的自定义魅力,您只需添加一行即可:

 sudo add-apt-repository -y ppa:username/octave

在你安装钩子中的包之前install,或者如果你的魅力是用不同的语言编写的,则需要一个合适的等效物。

如果您想断开 MAAS 机器与互联网访问的连接,那么您将需要实现您自己的本地 apt 存储库,然后在 MAAS 机器上安排 squid-deb-proxy 来使用它archive.ubuntu.com(假设您已经镜像它),或者以其他方式安排您的安装挂钩来配置 apt 来使用它。

相关内容