Parallel Programming using OpenACC Fortran

OpenACC is a directive-based parallel programming model designed to simplify the process of writing high-performance computing (HPC) applications. OpenACC codes can be run on a wide variety of platforms (CPUs and GPUs different vendors etc).

Beginner Level – Fundamentals

Beginner Level – Data Management

  • Data Regions with Fortran Arrays
  • Working with Allocatable Arrays
  • Multi-dimensional Arrays in OpenACC
  • Update Directive for Array Synchronization
  • Managed Memory with Fortran
  • Column-Major vs Row-Major Performance Considerations

Intermediate Level – Parallel Constructs

  • Kernels vs Parallel Directives in Fortran
  • Gang, Worker, Vector with Nested DO Loops
  • Reduction Operations on Fortran Arrays
  • Atomic Operations in Fortran
  • Loop Collapse for Nested DO Loops
  • Tile Clause with Multi-dimensional Arrays
  • Cache Directive for Fortran Arrays

Intermediate Level – Advanced Directives

  • Async and Wait with Fortran Arrays
  • Multiple Arrays and Data Dependencies
  • Routine Directive for Subroutines
  • Routine Directive for Functions
  • Sequential and Auto Clauses
  • Host_data Directive in Fortran

Intermediate Level – Dynamic Memory

  • Allocatable Arrays with OpenACC
  • Dynamic Memory Management
  • Resizing Arrays in Parallel Regions
  • Memory Allocation on Device

Advanced Level – Optimization

  • Optimizing Fortran Array Transfers
  • Data Reuse with Fortran Arrays
  • Minimizing Memory Movement
  • Efficient Multi-dimensional Array Access

Advanced Level – Complex Patterns

  • Matrix Operations with OpenACC
  • Stencil Patterns in Fortran
  • Parallel Reductions on 2D Arrays
  • Transpose Operations

Performance Analysis

  • Compiler Feedback for Fortran Programs
  • Profiling Fortran OpenACC Applications
  • Performance Bottleneck Identification

CPU Fallback

  • Running Fortran OpenACC on Multicore CPUs
  • Performance Portability in Fortran
  • Target-specific Optimizations

Mandar Gurav Avatar

Mandar Gurav

Parallel Programmer, Trainer and Mentor


If you are new to Parallel Programming you can start here.



Beginner CUDA Fortran Hello World Message Passing Interface MPI Nvidia Nsight Systems NVPROF OpenACC OpenACC Fortran OpenMP PGI Fortran Compiler Profiling Vector Addition


Popular Categories