結論(2026-08-23)
- MSYS2+MS-MPI版:実計算で内部データが破損するため使用不可
- MSYS2+OpenMP版:正常動作するが、WSL2+MPI版より数十倍遅い
- 実運用およびWinmostar連携には、WSL2+Ubuntu+MPI版を使用する
目的:
OS:
qe-windows/
├─ bin/
│ ├─ pw.exe
│ ├─ ph.exe
│ ├─ pp.exe
│ ├─ projwfc.exe
│ ├─ libgfortran-*.dll
│ ├─ libgcc_s_*.dll
│ └─ libwinpthread-1.dll
├─ pseudo/
└─ install/
└─ MS-MPI Runtime installer
msys2+mingw+ms-mpi
powershell
[System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture
> X64
MSYS2 (UCRT64): https://www.msys2.org/からDL
スタートメニュー => MSYS2 UCRT64 を実行
$ pacman -Syu
there is nothing to do が出るまで繰り返す
$ pacman -S --needed \
base-devel \
git \
nano \
patch \
diffutils \
autoconf \
automake \
libtool
$ pacman -S --needed \
mingw-w64-ucrt-x86_64-gcc \
mingw-w64-ucrt-x86_64-gcc-fortran \
mingw-w64-ucrt-x86_64-cmake \
mingw-w64-ucrt-x86_64-ninja \
mingw-w64-ucrt-x86_64-openblas \
mingw-w64-ucrt-x86_64-fftw \
mingw-w64-ucrt-x86_64-msmpi
UCRT64環境の確認
$ echo "$MSYSTEM"
$ which gcc
$ which gfortran
$ which mpif90
$ which mpifort
$ gcc --version
$ gfortran --version
$ mpifort --version
$ mpifort -show
QE7.6コンパイル
msys2のディレクトリ: インストールディレクトリ/home/ユーザ名
tar -xf qe-7.6-ReleasePack.tar.gz
mv q-e-qe-7.6/ qe-7.6
cd qe-7.6
sys/times.h対策
cd ~/qe-7.6
nano external/devxlib/src/timer.c
#ifndef _WIN32
#include <sys/times.h>
#endif
に修正
/dev/null対策:
grep -n "/dev/null" Modules/environment.f90
sed -i "s|'/dev/null'|'NUL'|g" Modules/environment.f90
再確認
grep -n "NUL" Modules/environment.f90
rm -rf build-ucrt-omp
cmake.exe -S . -B build-ucrt-omp -GNinja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER=gcc.exe \
-DCMAKE_CXX_COMPILER=g++.exe \
-DCMAKE_Fortran_COMPILER=gfortran.exe \
-DCMAKE_C_FLAGS="-Wno-incompatible-pointer-types" \
-DCMAKE_EXE_LINKER_FLAGS="-Wl,--stack,536870912" \
-DBUILD_SHARED_LIBS=OFF \
-DQE_ENABLE_MPI=OFF \
-DQE_ENABLE_OPENMP=ON \
-DQE_ENABLE_SCALAPACK=OFF \
-DQE_ENABLE_HDF5=OFF \
-DQE_ENABLE_LIBXC=OFF \
-DQE_ENABLE_ENVIRON=OFF \
-DQE_ENABLE_TEST=OFF \
-DQE_FFTW_VENDOR=FFTW3 \
-DBLA_VENDOR=OpenBLAS
cmake.exe --build build-ucrt-omp --parallel 4
export PATH="/home/tkami/qe-7.6/build-ucrt-omp/bin:$PATH"
export OMP_NUM_THREADS=4
export OMP_STACKSIZE=128M
pw.x -in CaO.inp
cmake.exe -S . -B build-msmpi \
-DCMAKE_EXE_LINKER_FLAGS="-Wl,--stack,536870912"
sys/times.h対策
cd ~/qe-7.6
nano external/devxlib/src/timer.c
#ifndef _WIN32
#include <sys/times.h>
#endif
に修正
/dev/null対策:
grep -n "/dev/null" Modules/environment.f90
sed -i "s|'/dev/null'|'NUL'|g" Modules/environment.f90
再確認
grep -n "NUL" Modules/environment.f90
cmake.exe --build build-msmpi --parallel 4
実行
$ ./build-msmpi/bin/pw.x.exe
MPI実行
export OMP_NUM_THREADS=2
mpiexec.exe -n 4 ~/qe-7.6/build-msmpi/bin/pw.x.exe -in scf.in
Winmostar設定
Windows PATH:
D:\msys64\ucrt64\bin
C:\Program Files\Microsoft MPI\Bin
環境変数
OMP_NUM_THREADS=1
ツール
→ 環境設定
→ プログラムパス
→ Quantum ESPRESSO
D:\msys64\home\tkami\qe-7.6\build-msmpi\bin\pw.exe
計算
→ Solid
→ mpiexec (QE)
| 項目 | 設定 |
| ------------------------ | ------------------------------------------------ |
| mpiexec (QE) | `Select` |
| mpiexec.exe | `C:\Program Files\Microsoft MPI\Bin\mpiexec.exe` |
| Options for mpiexec (QE) | `-np %WM_NUM_PROC%` |
| 使用するQEのバージョン | `7.6`または選択可能な最新7.x |
ツール
→ 環境設定
→ 計算
→ Solid
→ QE擬ポテンシャルフォルダ
D:\QE\pseudo
Quantum ESPRESSOキーワード設定
Use MPI: 有効
MPIプロセス数: 4
| 項目 | 設定例 |
|---|
|
Test
Connectionをクリックします。
初回接続でStore key in cache? (y/n)と聞かれたら 'y'。
成功すると、
Connection test succeeded.
と表示されます。
WinmostarからWSL2のtemporary directoryへ転送された *.sh に実行権限がつかないことについて
回避策: /usr/bin/nohup が呼ばれる前に、wrapper を呼ばせる
sudo vi /usr/local/bin/nohup
#!/bin/bash
printf '%s user=%s cwd=%s args=%s\n' \
"$(date -Is)" "$(id -un)" "$PWD" "$*" \
>> "$HOME/winmostar-nohup.log"
chmod u+x -- ./*.sh 2>/dev/null || true
if [[ $# -gt 0 && "$1" == *.sh ]]; then
SCRIPT="$1"
shift
exec /usr/bin/nohup /bin/bash "$SCRIPT" "$@"
fi
exec /usr/bin/nohup "$@"
sudo chmod 755 /usr/local/bin/nohup
/usr/bin/nohup より先に、/usr/local/bin/nohup
が呼ばれることを確認:
command -v nohup