When to use OpenCL?

Like each technology decision, the answer depends on the goal to reach. Information about the OpenCL capabilities of GPUs can be found on the vendor pages. Pay attention: Not all GPUs support OpenCL and not all GPUs supporting OpenCL support double precision.

You also might think about your customers/ client which might not have a OpenCL capable environment.

Like each technology decision, the answer depends on the goal to reach. Information about the OpenCL capabilities of GPUs can be found on the vendor pages. Pay attention: Not all GPUs support OpenCL and not all GPUs supporting OpenCL support double precision.

You also might think about your customers/ client which might not have a OpenCL capable environment. GPGPU programming (OpenCL and CUDA) are suitable for (almost) all kinds of Linear Algebra problems. These problems are quite easy to parallelize and fit therefore easily on a parallel environment like GPUs.

All problems which shall go on the GPU need to be not too complex and parallel designed. This really depends on you problem domain. On the other side you need to pay attentions to some payoffs of OpenCL.

One needs to copy some data around from RAM to GPU and back, which leads to some delays. You should do some time measurements of different problem sizes on CPU and GPU. You will easily see when the break even is reached.

I tried a matrix multiplication with ATLAS library on CPU Opteron X64 2x2600 and GPU Geforce 8600GTS. The matrix multiplication was just two matrices with dimensions NxN. The break evens was for N roughly around 100.

This result heavily depends on the CPU and GPU used and might be totally different on other hardware.

Adding to what rick has mentioned already, if the problem size is large enough, you will almost invariably get a good performance out of handing over computations to the gpu. So if a given function is slow on the gpu (compared to the cpu), you could still hide the overhead if it was part of a larger code implemented on the GPU, rather than having to bear the over head of transfer between host (MAIN) and device (GPU) memory. – Pavan Apr 21 at 23:34.

A few elements of answer: Dot product is not the best suited operation to run on GPU, because it is essentially a reduction, requiring synchronization between threads. Any "recent" GPU will be OK: NVIDIA GTX 2xx, ATI/AMD HD5xxx or later are best suited to OpenCL use. Moving data to/from the GPU is slow, typically 6 GB/s in the best case.

If you data fits in the CPU cache, the CPU will probably be faster, unless the Compute/IO ratio of the task is large. Efficient code for simple algorithms can be found in AMD/NVIDIA code samples, and in various websites. For other algorithms, finding a correct design and optimizing the code can take some time.

After some point, optimizations are specific to each micro-architecture, and require even more time.

Thanks for the input – Framester Apr 28 at 14:24.

GPU's are all about data processing where intensive computations take place. You can offload CPU by porting your computation intensive tasks to GPU. The results you receive are up to you since GPU is only a tool, it requires 'correct' use.

The real key should be whether your algorithm has a lot of inherent parallelization in it where you can hand over a data set and have significant amount of parallel processing happen on it. Remember a GPU may have many many cores, but they each only clock .5-1GHZ. The strength is in processing large amounts of parallel operations to get extremely high throughput.

Consider throughput as (data computed * frequency * pipeline stages) - so there's going to be a tradeoff of going with say 1/6th the frequency with one of those GPU cores, but probably more than 6* the number of cores (pipeline stages). Of course there's additional overhead of the CPU GPU barrier, and also your algorithm could result in multiple GPU clock cycles to compute..

I cant really gove you an answer,but what I can give you is a way to a solution, that is you have to find the anglde that you relate to or peaks your interest. A good paper is one that people get drawn into because it reaches them ln some way.As for me WW11 to me, I think of the holocaust and the effect it had on the survivors, their families and those who stood by and did nothing until it was too late.

Related Questions