Global High Resolution Estimation of Evapotranspiration – SEBS on GPU using CUDA-C

Why ET is Important?

EvapoTranspiration (ET) describes the amount of water evaporated and transpired by the canopies from the Earth’s land surfaces. ET is:

  • one of the most important processes in the study of water cycle
  • accounts for considerable amount of intercepted energy transferred from land to the Atmosphere
  • represents a direct feedback of moisture to the atmosphere

 Hence, ET is of utmost importance in the understanding of the terrestrial climate system. ET is also of interest in several applications, such as:

  • Drought Assessment
  • Agricultural Irrigation Management
  • Weather Forecasting
  • Hydrological Modeling
  • Climate Simulations and Predictions

Why High-Performance Computing?

High resolution estimation of ET by SEBS is a very time consuming task. As an example calculation of ET using a single processor over USA with 1km spatial resolution and daily temporal resolution for one year can take more than 10 days. This will increase exponentially with decreasing spatial resolution. SEBS4Google project focuses on:

  • High (spatial/temporal) resolution estimation of evapotranspiration
  • Global Coverage
  • On Demand Calculation

 Hence, it is of utmost importance to bring down the total calculation time. The focus of this sub-project is on:

  • High Performance Computation of the Evapotranspiration
  • Using state-of-the-art graphical processing units (GPU)
  • Using CUDA-C programming model for GPUs
  • Providing High resolution wind speed using UCOAM.

GPU has a low cost per computing cores (about 480 cores for $600). However, it requires careful coding of algorithms to harness the power of many cores available on GPU and reduce the memory latencies. GPU is a rapid evolving field in HPC.

Surface Energy Balance System (SEBS):

There are several methods, with different level of complexity, to estimate ET from the space. Empirical models are easy to use and very fast; however, they do not have global coverage. Complex models do have global coverage but their resolution is limited to hundreds of square kilometers. In between, SEBS algorithm uses surface energy balance equation along with the water limiting cases to estimate the actual latent heat flux (λE). For complete description of SEBS algorithm, one can refer to Prof. Su’s website and the references listed there.

What is Needed?

SEBS requires three sets of input data, as follows:

  • The first set consists of remotely sensed vegetation parameters, such as: surface albedo, emissivity, and surface temperature.
  • The second set includes meteorological data, such as: air temperature, wind speed, and vapor pressure.
  • The third set of data includes remotely sensed parameters such as incoming longwave and shortwave radiation.

Various remote sensing and meteorological data sets can be used. Previously in the WACMOS Project, an ESA initiative to quantify the entire water cycle, different MODIS, AATSR, and MERIS products were used along with ECMWF data set (2.5° resolution). In case of Northern America, it is possible to use NLDAS (0.125°) along with CFSR data set (~0.3° resolution, global coverage).

MODIS - H08V05 - DoY:162

SEBS Implemented on GPU using CUDA-C:

SEBS has been already implemented using many languages on various platforms and software, such as MATLAB, ILWIS, PCRaster. To improve the performance and reduce the calculation time, SEBS was also implemented with CUDA-C to harness the power of many cores available on graphical processing units (GPUs). The speed-up relative to MATLAB version of the algorithm, ran both on CPU using C and GPU using CUDA-C is shown below.

Speed Up of CUDA-C implementation of SEBS

How Long does it take?

The above timing are based on a data set with 120×120 pixels. A MODIS tile has 100 times more pixels. Therefore, using the original code, it will take about 10 days to calculate AET for one year over US with 1km spatial and 1day temporal resolution, (based on 25 MODIS tiles). However on GPU, based on the fastest speedup, it will take less than 40 minutes to perform the calculation. Of course, the time needed to read the data set and write back the results has to be added.

How to Obtain CUDA-C Implementation of SEBS?

If interested, in order to obtain the CUDA-C implementation of SEBS algorithm you can either e-mail me, or contact Prof. Bob Su, or Dr. Joris Timmermans (You can find their contact information on and then going to “Who’s Who”.

You can also download the code along with a sample data on:

Note: The MATLAB API to CUDA-C Implementation of SEBS on GPU is also available.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s