Bringing Tensor Cores to Standard Fortran
developer.nvidia.com
developer.nvidia.com
If it wasn’t for Julia I would be using it as my primary language, alongside something to manipulate strings, plot and work with data more nicely.
It's the stubbornness of the old guard of physics professors (and applied math, etc) who contributed to mountains of (now legacy) fortran code in the 60s, 70s, 80s, and who's funerals haven't occurred yet [0].
Due to this legacy, Fortran has better support for arrays, and multidimensional arrays.
Also, famously, in Fortran, pointers to data passed to functions are assumed to point to non-overlapping data regions, which allows better optimization of code. C doesn't generally assume this.
Apart from that, my understanding is that the "Og" status accounts for a lot of the rest. Fortran compilers are very well optimized.
Plus since Fortran 2003 it has been quite modern, and we are already a couple of ISO revisions after it, namely Fortran 2018.
Ah, and it supports modules, generics, array programming, while being type safe by default.
1) built-in performant multidimensional arrays, incl. array expressions (similar to Matlab). Built-in nature means basically all numerical libraries can easily talk to each other since they all use compatible data structures.
2) Fortran's syntax is performant by default, so scientists don't have to know as much to produce fast code. Best examples are default pass-by-reference and allocatables instead of pointers, which makes them non-aliased.
3) along same lines: intent system
C: restrict const * const double x ...
Fortran: real(8), intent(in), allocatable, dimension(n,m) :: x, y, z
The second code is simply more expressive about what you think about when doing numerical programming.