Time to remove the openib btl ?
Open MPI devel メーリングリストで、「openib
コンポーネントを削除する時が来たのでは?」という議論が始まっています。
Open MPIでInfinibandを使う場合、ながらく openibib
という BTL
コンポーネントが使われてきました。
BTL
というのは、Byte Transfer Layer
というOpen MPIのコンポーネント階層です。例えば、環境テスト等の目的でInfinibandの使用を強制したい場合、次のように mpiexec
を起動すれば可能です(IBが使えなければ、TCPにフォールバックすることなくエラーとなる)。
$ mpiexec --mca btl openib ${PROGRAM}
(mca
は、Module Component Architectureの略で、Open MPIのモジュールシステムの名前)
しかし、この ib
コンポーネントは古くてバグが多いのが問題点でした。InfinibandのAPIであるibverbsは、仕様が曖昧で使いづらいところも多く、次世代のAPIへの以降が望まれている状態です。
現在、高性能インターコネクトの標準APIとして、(このブログでつらつらと書いているように)UCX
が期待されています。Infinibandハードウェアの主要ベンダーであるMellanoxも、ibverbsではなくUCXをサポートするというのが方針のようです。
すぐに移行するには、まだiWARP
などのハードのサポートが十分ではないという意見もあるようですが、これは完全に時間の問題だと思われます。