4 ms·
1) OpenCL library support is where CUDA was 2 years ago (but devleopment is picking up quick). -- This means, that the devleopment time will be more because yo
by pavanky 14y ago
1) OpenCL library support is where CUDA was 2 years ago (but devleopment is picking up quick).
-- This means, that the devleopment time will be more because you are going to be writing your own primitive functions which are available as a myriad of libraries in CUDA.
2) OpenCL can run on cpus, gpus and more exotic hardware like FPGAs, Cell Processors.
-- On Large clusters, OpenCL's heterogenous capabilities make it more appealing as opposed to CUDA which will essentially require you to write and maintain two code bases (one in CUDA, the other using pthreads or what have you).
3) OpenCL spec is designed by committee (the Khronos group) as opposed to CUDA (developed by NVIDIA).
-- This means CUDA iterates much more quickly than OpenCL. They also have control over the hardware meaning they can introduce some hardware optimizations that may not become standardized in OpenCL.
4) NVIDIA has opened up CUDA a little, implementations of OpenCL remain closed.
-- NVIDIA has thrust which is kind of open source, but their CUBLAS and CUFFT libraries are closed. They recently Open sourced part of their NVCC compiler and hooked it up with LLVM. The OpenCL impelmentations are vendor specific and AFAIK none of them are open.
--------------
Sorry if I am not coherent. Its pretty late and I had to type it forcing myself to stay awake :)
- DeepDuh 14y agoI like your summary. I'd like to point out, though, that if you want a unified codebase, you might want to have a look at OpenACC. It's still young and you need commercial compilers (PGI, HMPP or Cray), but the capabilities are interesting. I'm doing some tests and comparisons between OpenACC and CUDA right now.
- pavanky 14y agoUsing OpenACC would just give you some quick benefits in development time, but I think it will not be competitive with pure CUDA in actual time taken for the program to run. I would be really interested in these results if you can share them with me (contact@pavanky.com).
- DeepDuh 14y agoMy tests haven't finished yet, but I can this this much about the performance: HMPP, while not having a very complete implementation yet, have quite a simple code generation concept (thus generating a low overhead) and the performance is actually very similar to CUDA. In that regard I think OpenACC will do great in reducing the GPGPU software design to pure thinking about algorithms and datastructures, instead of spending lots of time on the mechanics.
- tfm 14y agoI was under the impression that CUDA is pretty much an nvidia-specific proposition. This is a great shame because it seems there is a bit more activation energy required for opencl projects (AMD's BLAS is great but I don't see it being used anywhere near as widely as Cublas, and there was no Mac support last I checked). Are there options for getting CUDA going on an AMD/ATI chipset?