Equation Solution  
    High Performance by Design

Where should fortran go?

[Posted by Jenn-Ching Luo on Apr. 13, 2009 ]

        Fortran (Formula Translating) is originally developed by IBM in the 1950s for scientific and engineering computing. It was used to be a language for numerical crunching and high-performance computing. However, fortran is no longer a native high-level programming language for advanced parallel computing architecture.

        For new parallel computing architectures, fortran is already a secondary language, and needs a "wrap". For example, with the advent of general purpose GPU, the future parallel computing architecture will be a hybrid system with parallel-core GPUs working in tandem with multi-core CPUs. Is there a way for scientific community to take an advantage of the most advanced parallel computing architecture in fortran? For the time being, fortran is out.

        To employ GPU in the advanced parallel computing architecture, parallel programming community has three choices in C/C++:
  1. CUDA (Compute Unified Device Architecture) is a general-purpose parallel computing architecture developed by NVIDIA. CUDA comes with a software environment that allows developers to use C as a high-level programming language. The programming guide of CUDA 2.1 mentions fortran will be supported in the future. Anyway, fortran is not the primary language.
  2. OpenCL (Open Computing Language) is the open standard for parallel programming of heterogeneous systems, supported by ATI, Apple and others. It utilizes a subset of ISO C99 with extensions, OpenCL C programming language.
  3. Ct (C for Throughput Computing) or (C/C++ for Throughput Computing) is introduced by Intel, a natural extension to C/C++.
C/C++ is the language in heterogeneous computing architectures of Ct, OpenCL, and CUDA. Fortran plays no role. When C/C++ become the mainstream of numerical crunching, there should be no room for fortran to stand. Fortran committee should take necessary steps to propose a standard for the future heterogeneous parallel computing.