Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

GPU Programming?

Tags:

gcc

cuda

gpu

I'm new to the GPU Programming world, I've tried reading on Wikipedia and Googling, but I still have several questions:

  • I downloaded some GPU Examples, for CUDA, there were some .cu files and some CPP files, but all the code was normal C/C++ Code just some weird functions like cudaMemcpyToSymbol and the rest was pure c code. The question is, is the .cu code compiled with nvcc and then linked with gcc? Or how is it programmed?

  • if I coded something to be run on GPU, will it run on ALL GPUs? or just CUDA? or is there a method to write for CUDA and a Method to write for ATI and a method to write for both?

like image 941
killercode Avatar asked Sep 12 '11 20:09

killercode


People also ask

What is GPU programming good for?

For example, GPU programming has been used to accelerate video, digital image, and audio signal processing, statistical physics, scientific computing, medical imaging, computer vision, neural networks and deep learning, cryptography, and even intrusion detection, among many other areas.

Is GPU programming difficult?

Learning the syntax of programming for GPU is easy. The problem is porting algorithms to utilize the GPU most efficiently. This means taking into account SIMD architecture, warps, different kinds of memory, ...

Is CUDA C or C++?

CUDA C is essentially C/C++ with a few extensions that allow one to execute functions on the GPU using many threads in parallel.

Which language is used for Nvidia GPU programming?

GPU Accelerated Computing with C and C++ Using the CUDA Toolkit you can accelerate your C or C++ applications by updating the computationally intensive portions of your code to run on GPUs.


1 Answers

To answer your second question:

OpenCL is the (only) way to go if you want to write platform independent GPGPU code.

ATIs website actually has a lot of resources for OpenCL if you search a little, and their example projects are very easy to modify into what you need, or just to understand the code.

The OpenCL spec and reference pages is also a very good source of knowledge: http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/ http://www.khronos.org/registry/cl/specs/opencl-1.1.pdf

There are a lot of talks that explain some of the core concepts, and also that explain how to write fast code that I would recommend (that is applicable to CUDA too).

To almost answer your first question: In OpenCL, the code is compiled at runtime to the specific GPU you're using (to guarantee speed).

like image 142
nulvinge Avatar answered Sep 24 '22 15:09

nulvinge