MPICHとMPI::BOOL

C++のコードをMPIを用いて並列化しようとした時の話。Ubuntu上でOpenMPIを用いてテストを行い、大丈夫そうなので実際にOpenSUSE上でMPICHを用いてコンパイルしようとするとエラーが出た。「'BOOL' is not a member of 'MPI'」と表示されるので、MPI::BOOLがいけないらしい。よく分からないけど「MPI-2 Errata Topics」には、C++にはあってCやFortranにはないMPI::BOOLとかMPI::COMPLEX, MPI::DOUBLE_COMPLEX, MPI:LONG_DOUBLE_COMPLEXの話が出ている。

とりあえず実装上はboolからintに変換してMPI::INTで通信を行い、また変換する流れにしたがどうにも気持ちが悪い。インクルードすべきものをしてないとかそういう問題なのかもしれないけど、OpenMPI上では動作するわけだし、どうしたものか。