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
思ったように回らないときに
上記のリンク先のように、いくつか環境変数を変える必要があるっぽい。 まず、ターミナル上で
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はバージョンっぽいので適宜変更。
これで今の所、サンプルコードは通るようになった。