1

我正在尝试在集群中安装一个 spack 包,如果我使用

spack install namd

Spack 下载并安装它自己的 MPI 接口。由于它是一个集群,我想利用本地 MPI 接口,该接口由管理员个性化,以便在特定计算机上快速工作。如何告诉 spack 使用已经安装的 MPI 接口(即 openmpi 或 mpich)?

顺便说一句,我对 spack 很陌生。谢谢!

4

1 回答 1

2

好的,我已经通过阅读spack web上的这个页面弄清楚了。我需要创建一个配置文件spack config edit packages并添加类似

packages:
  openmpi:
    buildable: False
    modules:
      openmpi@3.1.3%gcc@8.2.0 arch=linux-x86_64-centos7: /opt/modules/mpi/gcc/8/openmpi/3.1.3
all:                                                                                                                                                                                         
    compiler: [gcc@8.2.0]                                                                                                                                                                      
    providers:                                                                                                                                                                                 
      mpi: [openmpi@3.1.3]

实际上,我需要先加载/opt/modules/compiladores/gcc/8才能使/opt/modules/mpi/gcc/8/openmpi/3.1.3可见,所以我需要类似的东西

packages:
  openmpi:
    buildable: False
    modules:
      openmpi@3.1.3%gcc@8.2.0 arch=linux-x86_64-centos7:
        - /opt/modules/compiladores/gcc/8
        - /opt/modules/mpi/gcc/8/openmpi/3.1.3

但这不起作用,因为它需要多个外部模块并且不能指定多个(参见此处)。

此外,spack 不使用外部模块,它通过应对和解析创建一个内部模块。它将忽略可能很重要的原始外部模块中的模块依赖关系或环境变量。modules.yaml还需要正确配置以设置或添加此环境变量。

于 2019-02-25T20:15:32.407 回答