I've been searching the web but I'm still very confused about this topic. Can anyone explain this more clearly? I come from an Aerospace Engineering background (not from a Computer Science one), so when I read online about OpenMP/CUDA/etc. and multithreading I don't really understand a great deal of what is being said.
I'm currently trying to parallelize an in-house CFD software written in FORTRAN. These are my doubts:
OpenMP shares the workload using multiple threads from the CPU. Can it be used to allow the GPU to get some of the work too?
I've read about OpenACC. Is it similar to OpenMP (easy to use)?
I've also read about CUDA and kernels, but I don't have any much experience in parallel programming and I don't have the faintest idea of what a kernel is.
- Is there an easy and portable way to share my workload with the GPU, for FORTRAN (if OpenMP doesn't do that and OpenACC is not portable)?
Can you give me a "for dummies" type of answer?