My understanding is that coarrays are a modern replacement for MPI and that coarrays abstract the notion of "machines", they bundle that under "multiple CPUs". I'm not very fluent in either of those, only know as much as the "Modern Fortran" book explains but from the examples I have seen, coarrays can do anything MPI can and they're simpler to work with.
> So, having one trick is not a bad thing here.
Definitely not. Personally, I would imagine myself using it if integration with other technologies over the network was available out of the box.
MPI and InfiniBand are irreplaceable technologies for HPC clusters as of today, both in terms of speed and latency. Lastly IB is not a connectivity layer. It's a HBA which carries information from memory space of one application to another. So it's properly "Magick" in terms of programming and research.
Well, yes and no. Co-arrays are a higher level abstraction, belonging to the category of Partitioned Global Address Space (PGAS).
Depending on the implementation, co-arrays might very well be implemented on top of a MPI library (as there has been a huge amount of work making MPI fast over all kinds of fancy interconnect fabrics).
The author of the book is very active on github: https://github.com/milancurcic.
Add MPI to the mix, and you can distribute that work to multiple machines. Potentially to thousands of them.
MPI over InfiniBand also can do some computations on the fly (in the HBAs and switches), so it makes it even fasterer (sic).
> This makes Fortran a one trick pony. It does parallel multi-dimensional data very well, but that’s really where it ends.
That one weird trick is a very strategic and cross-cutting one so almost every scientist can benefit from using FORTRAN. So, having one trick is not a bad thing here.