I am quite new in the world of GPU Computing. So I would really like someone to explain me the very basics. I have to Intel chipsets with the following GPUs:
GMA4500
HD graphics
I am interested in running algebraic and bitwise functions with huge data sets, like transpose of an array or bitwise shift of the lines of an array, in a GPU. The goal is of course to gain more performance.
My main question is how can I program such on GPUs? In the past I have used CUDA to program on nVIDIA video card. I understand from previous topics that I can't use CUDA for an INTEL GPUs. Thanks in advance!!
Update 1
I found out that Intel supports OpenCL for HD graphics. More precisely the Intel SDK for OpenCL applications provides a comprehensive development environment for OpenCL application on Intel® platforms including compatible drivers, code samples, development tools, such as the code builder, optimization guide, and support for optimization tools.
The SDK supports OpenCL 1.2 on 3rd and 4th generation Intel® Core™ processors with Intel® HD Graphics and Intel® Iris™ Graphics Family, Intel® Atom™ Processors with Intel HD Graphics, Intel® Xeon® processors, and Intel® Xeon Phi™ coprocessors.
OpenCL is the standard, cross-vendor API for GPGPU programming, roughly analogous to nVidia's proprietary CUDA.
Related
I'm trying to install caffe and I wonder if I can use cuDNN with AMD/OpenCL.
Because my graphic card is AMD
https://github.com/BVLC/caffe/tree/opencl
I'm afraid this won't work: cudnn is an extension of cuda, which is a propriety of NVIDIA. Thus, a non-NVIDIA GPU does not support CUDA and thus does not support cuDNN.
With a non NVIDIA card, you cannot run CUDA code (main caffe branch), but you should be able to enjoy opencl GPU code. You should give the opencl branch a chance.
The short answer is that if your graphics card is AMD then you'll have to use OpenCL, not cuDNN. You cannot make them work together.
cuDNN and OpenCL are competition, and so it doesn't even make sense to try and use them together.
If instead you are asking if you can use NVIDIA's cuDNN library on AMD hardware, the answer is no. It just isn't compatible. cuDNN was made specifically to work on the NVIDIA hardware and take advantage of the unique properties of that chip set.
There is an OpenCL variant of cuDNN from Intel:
https://github.com/01org/clDNN/
Since it is OpenCL-based, should work also on AMD GPUs (although I haven't tested it myself)
I am afraid if you can really use it for AMD graphics card since clDNN is built for DL inference in particular for Intel graphics cards (HD and Iris). Check e.g., OpenVINO toolkit (designed by Intel), it uses clDNN under the hood for GPU plugins to accelerate inference on the Intel GPUs.
From the GPU plugin page, it says:
clDNN is an open source performance library for Deep Learning (DL) applications intended for acceleration of Deep Learning Inference on Intel® Processor Graphics including Intel® HD Graphics and Intel® Iris® Graphics.
What is the best way to perform fft with opencl? (my gpu is intel HD graphics 4600)
I found clfft library, but stucked on installing it. I read documentation, but don't understand couple things. It requires some dependencies, one of them is AMD APP SDK, and as I can guess its only for amd gpu's? Can I use it with intel hd graphics?
I am new in OpenCL. I have an Dell XPS 1645 laptop which has ATI Mobility Radeon HD 4670 graphics card and a Intel CPU. I saw that AMD's software does not support OpenCL stuff for my graphics card but in Khronos website, my video card is seen as OpenCL supported. So, what do I have to do to start OpenCL programming? Also, can I use AMD's software which is for OpenCL?
It looks like you have a laptop with Windows 7, an Intel Core i7 CPU with 4 cores and hyper-threading?
Well OpenCL can run on CPU's as well as GPU's. With this model won't be able to access the GPU as an OpenCL device, but you can still use the CPU as an OpenCL device.
So download the OpenCL SDK from Intel or AMD, or both. Install it and try the examples.
You will have the change the calls to
clGetDeviceIds( .... )
so that the device type specified is always CL_DEVICE_TYPE_CPU
I have bitcoin miner which is using OpenCL kernel. Windows and Linux implementations of ATI SDK has comparable performance while Apple's native OpenCL implementation works too bad. I want to know if I can profile opencl kernel somehow to optimize it for Lion's OpenCL implementation
With some friends we want to use openCL. For this we look to buy a new computer, but we asked us the best between AMD and Intel for use of openCL. The graphics card will be a Nvidia and we don't have choice on the graphic card, so we start to want buy an intel cpu, but after some research we figure out that may be AMD cpu are better with openCL. We didn't find benchmarks which compare the both.
So here is our questions:
Is AMD better than Intel with openCL?
Is it a matter to have a Nvidia card with an AMD cpu for the performance of openCL?
Thank you,
GrWEn
You shouldn't care as much about what CPU you use as much as what GPU you use. You would need to choose between an AMD/ATI GPU or nVidia GPU.
I would personally recommend an nVidia GPU as, in addition to OpenCL support, you can experiment with their more proprietary CUDA technology which offers a far richer development experience than OpenCL does today. While you're at it take a look at the new AMP technology that was just announced by Microsoft for C++ which aims to bring language extensions akin to nVidia's CUDA. nVidia also has offerings for the enterprise with their Tesla GPUs with several vendors offering GPU clusters and you can even get a GPU compute cluster on Amazon EC2 now which is all based on nVidia hardware.
You want to buy a new computer with your friends? What kind of project do you plan to do? The question about the hardware is answered with the needs you have. If you give some more information, we can provide better suggestions.
As written before, the CPU is not the important point as long as you do not want to buy a multiprocessor multicore system like 4 Quadprocessors. The difference in performance is mostly the differences of the GPUs used and there you can find different cards for all needs. From a cheap GPU to the nVidia Tesla cards.
It is definitely not a problem to run a nVidia board on a AMD system. I do it here. You also can use the OpenCL devices from the AMD Multicore CPU and the nVidia GPU in parallel.
You should pay attention: If you plan to buy a potent system to run your software (like a webserver), every developer of OpenCL software needs a system for testing. So every developer needs at least a modern multi-core CPU with an OpenCL SDK. Where the OpenCL kernels are developed does not matter. OpenCL is platform independed.
Both Intel and AMD have good OpenCL-support for their CPUs, so currently it does not really matter which you cooose. If you want to use the embedded GPU on AMD Fusion or Intel SandyBridge, then I suggest you go for Fusion since Intel does not have a driver for their GPUs (yet). Depending on what you are going to use OpenCL for, I could suggest a GPU - sometimes NVidia is faster, sometimes AMD.
AMP, CUDA, RenderScript and the many, many others all work nice but they don't work on all hardware as OpenCL does. CUDA certainly has advantages, but in the time you have learnt openCL I can assure you the tools around OpenCL have catched up.
The CPU has no influence on GPU OpenCL performance.
You might also want to try running the OpenCL kernels on CPU. Checkout the Intel OpenCL compiler beta. You can even run kernels on both CPU and GPU.