メインコンテンツに移動

OpenMPI

あなたのMacBookAirで並列計算をする可能性は無いでしょう.しかし,MacOSXは計算クラスターと同じ系統のソフトウェアですから,あなたのMacBookAirにも並列計算システムをインストールしておけば,プログラム開発を手元で行うことができるようになります.

パッケージの利用方法

ここのopenmpiなんちゃらをインストール.使い方だと?あれ?どうするんだったっけ。多分Boostと類似した方法だろうな

再配布パッケージの作成方法

豚の時

豚で作っとかないと, AppleM1でXCodeできねえよ.だりーからロゼッタでな.

#-------------------------------
# [1] X86_64ターミナル
#-------------------------------
cd openmpi-4.0.0
make distclean
./configure --prefix=/usr/local CC=clang CXX=clang++ LDFLAGS=-Wl,-headerpad_max_install_names -disable-mpi-fortran
make all
mkdir x86_64
find . -name \*dylib -not -type l |while read file; do cp $file x86_64 ; done

これで, x86_64の内部に

lipo -info x86_64/*
Non-fat file: x86_64/libmca_common_monitoring.50.dylib is architecture: x86_64
Non-fat file: x86_64/libmca_common_ompio.41.dylib is architecture: x86_64
Non-fat file: x86_64/libmca_common_sm.40.dylib is architecture: x86_64
Non-fat file: x86_64/libmpi.40.dylib is architecture: x86_64
Non-fat file: x86_64/libompitrace.40.dylib is architecture: x86_64
Non-fat file: x86_64/libopen-pal.40.dylib is architecture: x86_64
Non-fat file: x86_64/libopen-rte.40.dylib is architecture: x86_64

ができた.

#------------------------------
# [2] ARM64ターミナル
#-------------------------------
cd openmpi-4.0.0
make distclean
./configure --prefix=/usr/local CC=clang CXX=clang++ LDFLAGS=-Wl,-headerpad_max_install_names -disable-mpi-fortran
make all
mkdir arm64
mv x86_64 ..
find . -name \*dylib -not -type l |while read file; do cp $file arm64 ; done
mv ../x86_64 .

これで, arm64の内部に

lipo -info arm64/*
Non-fat file: arm64/libmca_common_monitoring.50.dylib is architecture: arm64
Non-fat file: arm64/libmca_common_ompio.41.dylib is architecture: arm64
Non-fat file: arm64/libmca_common_sm.40.dylib is architecture: arm64
Non-fat file: arm64/libmpi.40.dylib is architecture: arm64
Non-fat file: arm64/libompitrace.40.dylib is architecture: arm64
Non-fat file: arm64/libopen-pal.40.dylib is architecture: arm64
Non-fat file: arm64/libopen-rte.40.dylib is architecture: arm64

ができた.

#------------------------------
# [2] ARM64ターミナル
#------------------------------
fswatch -x /usr/local/ > files.log &
sudo make install
mkdir universal
cd x86_64
for file in *
do
  lipo -create -arch x86_64 $file -arch arm64 ../arm64/$file -output ../universal/$file
done
cd ..
sudo cp universal/* /usr/local/lib
lipo -info universal/*
Architectures in the fat file: ../universal/libmca_common_monitoring.50.dylib are: x86_64 arm64
Architectures in the fat file: ../universal/libmca_common_ompio.41.dylib are: x86_64 arm64
Architectures in the fat file: ../universal/libmca_common_sm.40.dylib are: x86_64 arm64
Architectures in the fat file: ../universal/libmpi.40.dylib are: x86_64 arm64
Architectures in the fat file: ../universal/libompitrace.40.dylib are: x86_64 arm64
Architectures in the fat file: ../universal/libopen-pal.40.dylib are: x86_64 arm64
Architectures in the fat file: ../universal/libopen-rte.40.dylib are: x86_64 arm64
#
kill %1
fswatch_analyze.sh -c _binary files.log
pkgbuild --identifier openmpi --root _binary openmpi-4.0.0-osx11.2.pkg

Intelの時

MacOSのclangコンパイラは剛速ですから,10分程度しかかかりません.

  1. OpenMPIサイトからopenmpi-X.X.X.tar.gzをダウンロード
  2. tar xf ~/Downloads/openmpi-X.X.X.tar
  3. cd openmpi-X.X.X
  4. ./configure --prefix=/usr/local CC=clang CXX=clang++ LDFLAGS=-Wl,-headerpad_max_install_names -disable-mpi-fortran
    これで,gccではなくLLVMのコンパイラが設定される. Fortranは利用しないように設定される.
  5. make all
  6. fswatch -x /usr/local > openmpi.log &
  7. sudo make install
  8. kill %1

これで mpicxx とか mpif90 とかのコマンドが動作すればOK.

ついでなので、バイナリー配布パッケージを作る。

  1. インストールしたファイルのコピーを作成
    fswatch_analyze.sh  -c openmpi-binary < openmpi.log
    
  2. pkgbuild --identifier openmpi --root openmpi-binary openmpi-1.8.2-osx10.9.pkg

参考文献

  1. Installing OpenMPI on MacOSX