Why does compiling the Fortran 90 bindings take soooo long?
This is actually a design problem with the MPI F90 bindings themselves. The issue is that since F90 is a strongly typed language, we have to overload each function that takes a choice buffer with a typed buffer. For example, MPI_SEND has many different overloaded versions — one for each type of the user buffer. Specifically, there is an MPI_SEND that has the following types for the first argument: • logical*1, logical*2, logical*4, logical*8, logical*16 (if supported) • integer*1, integer*2, integer*4, integer*8, integer*16 (if supported) • real*4, real*8, real*16 (if supported) • complex*8, complex*16, complex*32 (if supported) • character On the surface, this is 17 bindings for MPI_SEND. Multiply this by every MPI function that takes a choice buffer (50) and you 850 overloaded functions. However, the problem gets worse — for each type, we also have to overload for each array dimension that needs to be supported. Fortran allows up to 7 dimensional arrays, so this becomes (17×7) = 11