Skip to content

salmon-tddft: spack パッケージが MPI 依存を宣言しておらず、OS の mpif90 を拾う #3

Open

Description

@yoshifuminakamura

repos/spack_repo/benchpark/packages/salmon_tddft/package.py は、CMake に
コンパイラをコマンド名で渡している。

-DCMAKE_Fortran_COMPILER:STRING=mpif90
-DCMAKE_C_COMPILER:STRING=mpicc

同パッケージは depends_on("mpi") を宣言していない。cmake_args は
USE_MPI を設定し、ビルドは MPI ラッパを呼ぶため依存関係は実在するが、
宣言がないため spack は MPI を用意せず、名前は PATH 上のもので解決される。

OS 側が独自の MPI ラッパを提供する環境(例: Ubuntu 24.04 上の
/usr/bin/mpif90、gfortran のラッパ)では、concretize された nvhpc 由来の
フラグが gfortran に渡り、CMake のコンパイラテストが失敗する。

/usr/bin/mpif90 -O3 -acc=strict -gpu=cc90,... -cuda
gfortran: error: unrecognized command-line option '-acc=strict'

対応案: depends_on("mpi") を宣言し、spec["mpi"].mpifc および
spec["mpi"].mpicc を渡す。いずれも絶対パスであり、PATH の影響を受けない。

Activity

  1. shigetoshisota commented on Oct 20, 2026

    @shigetoshisota
    Collaborator

    SALMONのSpackレシピを修正しました。

    • depends_on("mpi", type=("build", "link"))を追加しました。
    • NVHPC/GCCでは、CMakeに渡すMPIラッパをspec["mpi"].mpifc、spec["mpi"].mpiccに変更しました。
    • Fujitsu環境ではSDKのmpifrt/mpifccを使用します。

    NVHPC/GCC環境で、PATH上の別のMPIラッパを拾う問題を回避しています。
    GH200/DGX SparkのNVHPC 26.9のSAOMONのバージョンv2.2.2/v2.3.0について、SpackビルドからRambleの実行・解析まで成功しました。同じSALMON設定によるGenoa、FX700、富岳でのビルド・実行も確認済みです。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions