ESCOMP / PUMAS

Parameterization for Unified Microphysics Across Scales
9 stars 12 forks source link

Enable execution of MG3 on GPU through OpenACC #23

Closed sjsprecious closed 3 years ago

sjsprecious commented 3 years ago

In this PR, we add the OpenACC directives to MG3 codes so that the MG3 parameterization could be run on GPU. We also make a few code changes for some calculations, which would lead to a non-BFB result.

The detailed changes related to OpenACC include:

The detailed changes other than OpenACC directives include:

Note that the change related to avg_diameter_vec subroutine is a non-BFB change for CPU run but passes the ensemble consistency test (ECT).

Test suite: [aux_cam] Test baseline: generated with CAM codes from https://github.com/PUMASDevelopment/CAM/tree/sjsp_cam_gpus_p3 and PUMAS codes from https://github.com/ESCOMP/PUMAS/tree/sjsp_cam_gpus_pumas_p3 Test machine: [Cheyenne] Test result: [NBFB]

Katetc commented 3 years ago

I'm going to merge this directly into the release/cam branch so I can make the tag for your CAM PR easier.

sjsprecious commented 3 years ago

I'm going to merge this directly into the release/cam branch so I can make the tag for your CAM PR easier.

Thanks Kate. That will be much helpful for our CAM PR!