Hello everyone, I once again here with many questions kkkk
For each type of video card, I have to download the specific SDK manufacturer to be able to create applications and use the GPU processing units for general purposes.
In my case I have a "AMD Radeon" and an Intel CPU. I already can create applications in C ++ for AMD, because I can also use the CPU intel?
For that to happen I should not have installed the SDK from intel? Why device version information (intel CPU) is defined as AMD-APP?
Number platforms: 1
Number devices: 2
--------------------------
Vendor: Advanced Micro Devices, Inc.
Device: Iceland
Version: OpenCL 2.0 AMD-APP (1729.3)
--------------------------
Vendor: GenuineIntel
Device: Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz
Version: OpenCL 1.2 AMD-APP
(1729.3)
Thanks for listening
> For each type of video card, I have to download the specific SDK manufacturer to be able to create applications and use the GPU processing units for general purposes.
That statement is incorrect. A single OpenCL SDK, using the cl.h header supplied by Khronos, can target any OpenCL runtime.
Hello, thank you for awnser
Oh really? So let's think of an example, if I have a computer with video cards AMD, NVIDIA, and an Intel CPU. A single SDK would be enough to communicate with all devices? What is the difference then if I install an SDK X or Y?
You will get max support and benefits using hardware from a single manufacturer, ie Nvidia, AMD or intel. AMD's opencl can see and use Nvidia cards and Intel CPUs, just not as well as its own. You may run into trouble installing multiple SDKs in a single host, especially if you don't keep track of correct paths, and, in windows, registry entries.
You need to differentiate between CPU devices and GPU devices.
AMD and Intel have CPU implementations of OpenCL. Since both companies produce processors that are ISA compatible, AMD OCL CPU implementation can run on Intel CPUs and IIRC, Intel implementation can run on AMD CPUs.
This is not the case with GPUs. Since invoking a GPU workload is very vendor specific, each vendor GPU implementation can only run on - well its own GPUs.
The OpenCL ICD is publishing platforms (e.g. Intel,AMD, Nvidia), an OpenCL context can be comprised out of a single platform. I.e. GPUs from different vendors can't be members of the same cl context.