Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
28543 Discussions

Do you use CAF? and if so, do you oversubscribe the cpu cores?


If you are using Coarray Fortran I am curious about your usage.  So I'm interested in your DESIGN and PROTOTYPING phase, not production runs:

When you prototype or write new code using CAF,  and when you run your CAF code do you "oversubscribe"?  As an example, if you have a 4-core system do you run more than 4 CAF images on your workstation or server? 

as another example and question, if you have hyper-threading enabled - a 4 core system with HT has 8 logical processors.  Do you run 4 images or 8 images?

Same example, would you ever run 9 more or more images knowing that your #images exceeds your #logical processors?

Obviously for performance you want images mapped to unique cores so that there is no communication delays in moving data (this is obvious isn't it??).

Is oversubscribing more images than logical processors something that you do often, or you would ever expect to do on a regular basis?





0 Kudos
1 Reply
Valued Contributor I

Hi Ronald, I am not sure if your post is a question or is just asking for feedback from CAF users. But as a CAF user, I can answer it from my perspective. For development purposes, I personally never go beyond 4 (most often 3, given that my laptop has 4 cores). But without prescribing the number of images, hyperthreading automatically leads to 8 images, which is undesirable. Only 4 cores, is certainly not enough for certain tests and production runs, so we also use the Supercomputing resources, typically requesting a single node with 48 physical cores for test runs.

Coarray syntax has been a true time-saver in our developments, leading to a neat modern codebase. However, one major caveat at the moment, which I hope Intel will address it "very" soon, is the lack of interoperability with other languages. Given that all major CAF implementations rely or can rely MPI, I cannot understand why it would be so difficult to make CAF interoperable. For example, If a Python code can call MPI-enabled routines in C, then why not CAF routines? Of course, I am just a user. Intel team may have a full answer to this question of mine, which has become a bottleneck now in the utility of our CAF software.

0 Kudos