I want to learn something about High Performance Computing as such and currently before me stands the topic of accelerated computing (like GPU computing).

I would like to ask you which technology is currently commonly used and therefore most worth learning. Technologies I know, that exist currently are:

  • CUDA - NVIDIA only

  • OpenCL - Should work well for any device, that can accelerate computing

  • AMP - Microsoft technology (what is very discouraging), but has great API
  • Vulkan - new library from Khronos, which is very complex, yet very good in performance

and that's it if it's about my knowledge about what is currently available.

Best would be if there exists some library like AMP, which could be fully open and available for linux also.

If not, then I even would be happy about CUDA, but I do not know if companies often use AMD GPUs, because if yes, then I would like to not waste time on learning something, what may become useless.

PS. both C and C++ APIs are fine for me

So what's your experience with this topic?


To add to your list, you could also consider OpenACC. They have nice examples on their site. It will accelerate for both CPUs and GPUs

The OpenACC Application Program Interface describes a collection of compiler directives to specify loops and regions of code in standard C, C++ and Fortran to be offloaded from a host CPU to an attached accelerator. OpenACC is designed for portability across operating systems, host CPUs, and a wide range of accelerators, including APUs, GPUs, and many-core coprocessors.

The directives and programming model defined in the OpenACC API document allow programmers to create high-level host+accelerator programs without the need to explicitly initialize the accelerator, manage data or program transfers between the host and accelerator, or initiate accelerator startup and shutdown.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.