This research work is to accelerate the execution speed of SWAT (version 622, home page using OpenMP.  We achieved more than twice speedup by rapidly nullifying all the variables zero. We provide two example data sets of Upper Colorado (large-scale) and  Maui, Hawaii (small-scale), downloadable  here.

Paper information

  • Full title: OpenMP-accelerated SWAT simulation using Intel C and
    FORTRAN compilers: Development and benchmark
  • Download: Full Text in RG.
  • Authors: Seo Jin Ki (seojinki at, Tak Sugimura, and Albert S. Kim (albertsk at
  • Journal: Computers and Geosciences
  • Volume: 75
  • Year: 2015
  • Pages: 66-72
  • URL:  doi:10.1016/j.cageo.2014.10.017
  • Abstract:
    • We developed a practical method to accelerate execution of Soil
      and Water Assessment Tool (SWAT) using open (free) computational
      resources. The SWAT source code (rev 622) was recompiled using a
      noncommercial Intel FORTRAN compiler in Ubuntu 12.04 LTS Linux
      platform, and newly named iOMP-SWAT in this study. GNU utilities of
      make, gprof, and diff were used to develop the iOMP-SWAT package,
      profile memory usage, and check identicalness of parallel and serial
      simulations. Among 302 SWAT subroutines, the slowest routines were
      identified using GNU gprof, and later modified using Open Multiple
      Processing (OpenMP) library in an 8-core shared memory system. In
      addition, a C wrapping function was used to rapidly set large arrays to
      zero by cross compiling with the original SWAT FORTRAN package. A
      universal speedup ratio of 2.3 was achieved using input data sets of a
      large number of hydrological response units. As we specifically focus
      on acceleration of a single SWAT run, the use of iOMPSWAT for parameter
      calibrations will significantly improve the performance of SWAT


  • Results: more than twice speedup 
  • OpenMP source distribution (download)
  • Reference data (download) for both Colorado and Maui.
  • Structure
  • Number of files
    • f77: 299
    • f90: 3 (NCsed_leach.f90,  carbon_zhang2.f90, and
  • Key changes and additions
    • fmemset.c, the function to rapidly set variables to zero
    • varinit.f, the modified routine of OpenMP using three unpaired CPU cores
  • Directory structure
  • Makefiles