Is there some extra magic, maybe for architectures that have "weak" memory?
Is there some extra magic, maybe for architectures that have "weak" memory?
Co-Array Fortran is for multiple copies of the same program running on different data -- SPMD. Think MPI but much easier to write for.
You start a CAF program with mpirun. Multiple copies on the same machine or multiple machines in a cluster, your choice.
Embedded directives to process arrays concurrently is a different topic, and confusingly called OpenMP with no "I". Thus your multi-core CPU can process a numeric code more quickly.
You start a program using OpenMPI with it's own name --- ./a.out for example. You can control the number of threads used. Etc.
I'd much rather use C on a client (int/float arrays for parallelism + cache) or Java concurrency on a server.
If I need cross machine parallelism that is not something I want automated.