Performance Portable Parallel Programming – Target CUDA and OpenMP in a Unified Codebase

August 14th, 2014

Hybrid Fortran is an Open Source directive based extension for the Fortran language. It is a way for HPC programmers to keep writing Fortran code like they are used to – only now with GPGPU support. It achieves performance portability by allowing different storage orders and loop structures for the CPU and GPU version. All computational code stays the same as in the respective CPU version, e.g. it can be kept in a low dimensionality even when the GPU version needs to be privatised in more dimensions in order to achieve a speedup. Hybrid Fortran takes care of the necessary transformations at compile-time (so there is no runtime overhead). A (python based) preprocessor parses these annotations together with the Fortran user code structure, declarations, accessors and procedure calls, and then writes separate versions of the code – once for CPU with OpenMP parallelization and once for GPU with CUDA Fortran. More details:

FortranCL: An OpenCL interface for Fortran 90

December 30th, 2011

FortranCL is an interface to OpenCL from Fortran90 programs, and it is distributed under the LGPL free software license. It allows Fortran programmer to directly execute code on GPUs or other massively parallel processors. The interface is designed to be as close to the C OpenCL interface as possible, and it is written in native Fortran 90 with type checking. FortranCL is not complete yet, but it includes enough subroutines to write GPU accelerated code in Fortran. More information:

Jacket v1.8 and LibJacket v1.1 released

July 24th, 2011

Jacket 1.8 and LibJacket 1.1 have been released by Accelereyes, enabling GPU support for MATLAB and easier CUDA development with C/C++/Fortran and Python.  New features include:

  • Expanded support for the Signal Processing, Image Processing, and Statistics Libraries included with both Jacket and LibJacket
  • Faster linear algebra for special systems (e.g. symmetric, positive definite, triangular, etc.)
  • Enhanced visualizations
  • New and updated examples: FDTD, Mandelbrot fractals, maximum-likelihood neural segmentation, MDS for genomics
  • Built with CUDA 4.0 for peak performance

Visit for details, downloads, whitepapers and tutorials.

PGI CUDA Fortran Now Available from The Portland Group

November 24th, 2009

The Portland Group has announced the general availability of its CUDA Fortran compiler for x64 and x86 processor-based systems running Linux, Mac OS X and Windows, including a 15-day trial license. From the press release:

Developed in collaboration with NVIDIA Corporation (Nasdaq: NVDA), the inventor of the graphics processing unit (GPU), PGI Release 2010 includes the first Fortran compiler compatible with the NVIDIA line of CUDA-enabled GPUs. A compiler is a software tool that translates applications from the high-level programming languages in which they are written by software developers into a binary form a computer can execute.

With developers taking advantage of the hundreds of cores and the relatively low cost of NVIDIA GPUs, programming to take advantage of the CUDA C compiler has become a popular means for accelerating the solution of complex computing problems. The PGI CUDA Fortran compiler is expected to accelerate GPU adoption even further in the High-Performance Computing (HPC) industry, where many important applications are written in Fortran. HPC is the field of technical computing engaged in the modeling and simulation of complex processes, such as ocean modeling, weather forecasting, environmental modeling, seismic analysis, bioinformatics and other areas.

The CUDA Fortran compiler is compatible with all NVIDIA GPUs that include Compute Capability 1.3 or higher, which includes most NVIDIA Quadro Professional Graphics solutions and all NVIDIA Tesla GPU Computing solutions. Developers are invited to download the PGI CUDA Fortran compiler from The Portland Group website at

A 15-day trial license is available at no charge. In an effort to simplify adoption, NVIDIA has granted PGI rights to redistribute the relevant components of the CUDA Software Development Kit (SDK) as part of the PGI CUDA Fortran installation package.

CUDA Fortran Compiler Beta Release Now Available

September 29th, 2009

A public beta release of the CUDA-enabled Fortran Compiler from PGI enables programmers to write code in Fortran for NVIDIA CUDA GPUs.  From a press release:

What: NVIDIA today announced that a public beta release of the PGI® CUDA-enabled Fortran compiler is now available. Developed in collaboration with The Portland Group® , it is the first Fortran compiler compatible with NVIDIA® CUDA™ -enabled graphics processing units (GPUs).

compiler is a software tool that translates applications from the high-level programming languages used by software developers into a binary form a computer can execute.

Why: GPU computing with the CUDA C-compiler has gained significant momentum in the High-Performance Computing (HPC) space as it enables developers to get transformative increases in performance with minimal coding required.

Fortran is particularly well suited to numeric computation and scientific computing and remains widely used in a wide range of applications such as weather modeling, computational fluid dynamics and seismic processing.

Where can I get it?: Read the rest of this entry »

PGI and NVIDIA Team To Deliver CUDA Fortran Compiler

June 24th, 2009

Yesterday the Portland Group and NVIDIA announced plans to develop new Fortran language support for CUDA GPUs.  The pair will release the Fortran language specification for CUDA GPUs at the International Conference on Supercomputing in Hamburg, Germany this week. The CUDA Fortran compiler will be added to a production release of the PGI Fortran compilers scheduled for availability in November 2009.

From the press release:

The Portland Group®, a wholly-owned subsidiary of STMicroelectronics and leading supplier of compilers for high-performance computing (HPC), today announced an agreement with NVIDIA under which the two companies plan to develop new Fortran language support for CUDA GPUs.

The NVIDIA® CUDA™ architecture allows developers to offload computationally intensive kernels to the massively parallel GPU. Through function calls and language extensions, CUDA gives developers explicit control over the mapping of general-purpose computational kernels to GPUs as well as placement and movement of data between the x64 processor and the GPU. The NVIDIA CUDA C compiler already provides this capability to C programmers. The CUDA Fortran compiler will provide this same level of control and optimization in a native Fortran environment from PGI.

New PGI 9.0 Compilers Simplify x64+GPU Programming

June 24th, 2009

Yesterday The Portland Group announced the release of version 9.0 of its Fortran and C compilers with support for GPUs and x64 multi-core CPUs.  An introduction to PGI Accelerator Fortran and C programming is available online, as is the PGI Accelerator v1.0 specification. Evaluation copies of the new PGI 9.0 compilers are available from The Portland Group web site. Registration is required.

From the press release:

The use of Graphics Processing Units (GPUs) as general purpose accelerators has been a growing trend in high-performance computing (HPC). Until now, use of GPUs from Fortran applications has been extremely limited. Developers targeting GPU accelerators have had to program in C at a detailed level using sequences of function calls to manage movement of data between the x64 host and GPU, and to offload computations from the host to the GPU. The PGI Accelerator Fortran and C compilers automatically analyze whole program structure and data, split portions of an application between a multi-core x64 CPU and a GPU as specified by user directives, and define and generate a mapping of loops to automatically use the parallel cores, hardware threading capabilities and SIMD vector capabilities of modern GPUs.

Read the rest of this entry »

F2C-ACC: A source-to-source translator from Fortran to C and C for CUDA

June 4th, 2009

F2C-ACC is a language translator to convert codes from Fortran into C and C for CUDA. The goal of this project is to reduce the time to convert and adapt existing large-scale Fortran applications to run on CUDA-accelerated clusters, and to reduce the effort to maintain both Fortran and CUDA implementations. Both translations are useful: C can be used for testing and as a base code for running on the IBM Cell processor, and the generated C for CUDA code serves as a basis for running on the GPU. The current implementation does not support all language constructs yet, but the generated human-readable code can be used as a starting point for further manual adaptations and optimizations.

F2C-ACC is developed by Mark Govett et al. at the NOAA Earth System Research Laboratory, and has been presented at the Path to Petascale NCSA/UIUC workshop on applications for accelerators and accelerator clusters.

PGI x64+GPU Fortran & C99 Compilers

October 26th, 2008

The PGI 8.0 release from The Portland Group includes a technology preview of the PGI accelerator programming strategy. PGI 8.0 compilers accept new directives that allow users to select compute intensive regions of Linux x64 Fortran and C99 programs and automatically offload them to an NVIDIA GPU. Until now HPC developers targeting GPU accelerators have had to rely on libraries or language extensions, and use of GPUs from Fortran has been extremely limited. Using the provisional support in PGI Release 8.0, programmers can accelerate Linux applications on x64+NVIDIA platforms by adding OpenMP-like compiler directives to existing high-level standard- compliant Fortran and C99 programs. At Supercomputing 2008 you can see the PGI x64+GPU compilers in action, and learn about PGI’s accelerator programming model and how you can use it to experiment with and embrace accelerated computing. You can also attend the PGI Vendor presentation by Michael Wolfe in room 19A/19B of the Austin convention center on Wednesday, November 19 from 10:30-11:00AM. Also, check out “Compilers and More: Programming GPUs Today” on HPCWire.