使用外部 MPI 接口安装 spack 包

Insalling spack package with external MPI interface

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

spack install namd

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

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

好的,我已经通过从 spack web 上阅读这个 page 弄明白了。我需要使用 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

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

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