[gmx-developers] OpenACC Development

Berk Hess hess at kth.se
Fri Jul 1 11:37:40 CEST 2016

Hi Millad,

Welcome to the list.

GROMACS aims for close to optimal performance on all relevant hardware. 
To achieve this, we write highly optimized non-bonded (and other) 
kernels for all relevant architectures. Currently we have plain-C CPU 
kernels (extremely slow), SIMD, CUDA and OpenCL non-bonded kernels. The 
optimization is not so much in the arithmetics, but rather in the data 
layout. OpenACC is not an architecture, but a programming standard. So 
you would need to choose a target architecture for your OpenACC 
"acceleration" and then choose one of our kernel types. But the only 
gain of this would be semi-automated offloading. The question is then if 
the offloading will be efficient enough.



On 2016-07-01 02:05, Millad Ghane wrote:
> Hello everyone,
> I am a PhD student in computer science at University of Houston.
> Currently, in this Summer as an intern, I am working with the physics
> department in our school to work on GROMACS in order to port it to
> OpenACC. My adviser for this project is Prof. Cheung.
> My understanding is that GROMCS currently supports NVIDIA GPUs (and also
> SIMDs on CPUs), however my job is to investigate the ability of
> transferring the code to OpenACC, which is more heterogeneous and
> ubiquitous compared to CUDA.
> My question regarding the development of GROMACS is that whether you are
> supporting or planning to support OpenACC currently or in future. And, if
> you are not supporting OpenACC, my question is that how can I introduce
> new "kernel functions" for supporting OpenACC. How much work should be
> done?
> Based on my understanding, you had different kernel function for different
> architectures (CPU, CPU with SIMD, GPU). I wanted to know how much effort
> is required to introduce new architecture like OpenACC?
> Before getting in touch with you, I dig into some of the code and tried to
> parallelize the CPU version of kernel code using OpenACC constructs, but
> the code gets messy and the data is not transferred correctly on the
> device. So, my hope is to introduce new kernels for OpenACC like the way
> you introduced different ones for CPUs and GPUs. This way, we have more
> controls over data transfers and kernel codes.
> I hope I was clear enough and make you interested.
> Best Regards,
> Millad Ghane
> Computer Science Department
> University of Houston

More information about the gromacs.org_gmx-developers mailing list