Shirley wrote: ↑
Tue Jun 19, 2018 9:46 pm
I'd be surprised if FORTRAN compilers have kept up with modern CPU architectures. Hell, when I got my CS degree 26 years ago, FORTRAN was already too old for us to learn.
I'd be surprised if FORTRAN was ever of much interest to CS people honestly, apart from being the first high-level language. I've never met anyone who used/liked FORTRAN, who was not an engineer or computational physicist, but of course that's really who it was intended for. If you think in terms of tensor mechanics, FORTRAN is the language for you, whereas if you think in terms of memory and pointers and more elaborate structures like a CS person, I imagine it would seem fairly limiting. I've heard FORTRAN 90 and 2003 have moved more in that direction, but I've never used them, beyond dabbling with F90's allocatable arrays.
When I was an undergrad in the late 80s at Oxford, all of the engineering computation instruction was in FORTRAN. No idea if that's still the case for many universities, though if it is, it's just the legacy of professors who learned FORTRAN. Certainly, most of the large academic code bases in CFD (Jameson's famous code from Stanford CTR, etc.) are still pretty pure F77, but the commercial CAE developers have been aggressively moving away from it for the last decade or so.
I don't know about any of the others that remain, but in my experience, Intel's is the only modern F77 compiler worth using. Not sure how well they have or have not kept up, but given that they make the CPUs, I'd hope they have ;-). Threading and etc. are not really a concern for CAE codes, because the parallelism is usually handled explicitly with MPI for use on HPC clusters. All I can say is that when last I looked in (admittedly 10 years ago), the people undertaking to rewrite some of the large FORTRAN numerical methods libraries in C++ were still suffering by comparison in performance. That may no longer be the case; I know that the new version of the Trilinos library from Sandia National Lab that's used for lots of serious number crunching in nuclear engineering and radiative heat transfer modeling is supposed to be very heavily object-oriented C++...
After this, I find myself wanting to dust off my old codes again. :)