High Performance Computing (HPC) developers are usually have with two main goals. The first is the performance of the application (faster time to results), with the second being the ease of development. In today’s world, there are many programming languages to choose from, many more than a decade or two ago. However, many applications that are critical to an organization’s goals were written many years ago and may have used a language that is not so popular today.
Fortran is such a programming language. Originally developed over 50 years ago, it is still in use for many HPC applications today. There are a number of reasons for this, with the top ones being that “if it ain’t broke, don’t fix it”, and that the language closely resembled the algorithms that were programmed using Fortran.
Fortran has been proven to be extremely resilient to new developments that have appeared in other programming languages over the years. New versions continue to be available and associated with ANSI standards, so that an application written for one operating system should be able to be compiled and run with different compilers on different operating systems. The latest version is Fortran 2008, with the next version reportedly to be available as Fortran 2015, in 2018.
The ability to generate efficient and optimized code is a differentiator between different compilers from various vendors. Given the time, and some effort, developers can determine which compiler that is used results in the faster execution time. This includes not just code generation, but the determination of loops that can be vectorized. The more work and the smarter that a compiler is, the less tuning that the developer must do. Just as no one would want to code an application completely in assembler code (hence the development of compilers), it is important that compilers recognize where there are opportunities for optimization as well as executing the part of the application on more performance-oriented hardware.
Take the time to investigate which compiler and programming language is best for the given application, and the combination that gives the best results. Programming an application in a single language, where the compiler can help to determine the most optimum execution environment will make development much easier.