留学・音ゲー・研究備忘録

heine98の音ゲー・研究・留学の記録。Juliaとかlatexとか使います。

MPI in Julia

並列計算わかんねー

とりあえず、OpenMPIとかいうのを使って計算するためのJulia環境構築

PCにMPI自体を入れる
brew install --build-from-source openmpi
JuliaにMPIパッケージを入れる

パッケージモードでadd MPI。

試す

下記のようなファイルを用意し、仮に名前をhello_world.jlする。(パッケージのDocumentationから拝借

using MPI
MPI.Init()

comm = MPI.COMM_WORLD
print("Hello world, I am rank $(MPI.Comm_rank(comm)) of $(MPI.Comm_size(comm))\n")
MPI.Barrier(comm)

んで、これをターミナルからJuliaを起動させないで

mpiexec -n 3 julia --project hello_world.jl

多分回るけど、以下のような警告が出て、並列化されてないっぽい感が出る(和を求めるときとか各ワーカー?が独立に全部計算してた)

You appear to have run julia under a different `mpiexec` than the one used by MPI.jl
思ったように回らないときに

juliaparallel.github.io

上記のリンク先のように、いくつか環境変数を変える必要があるっぽい。 まず、ターミナル上で

julia --project -e 'ENV["JULIA_MPI_BINARY"]="system"; using Pkg; Pkg.build("MPI"; verbose=true)'

を実行して、それで

ERROR: LoadError: libmpi could not be found

が出るようなら、自分の.profile(自分の場合zshなので.zprofile)内に

export JULIA_MPI_PATH=/usr/local/Cellar/open-mpi/4.1.0

を書き加える。なお、4.1.0はバージョンっぽいので適宜変更。

これで今の所、サンプルコードは通るようになった。