Basic questions about OpenCL
Can someone please help me to clarify the questions below about OpenCL:
(1) What is the difference between work-item and thread?
(2) I read that threads in OpenCL runs faster than common parallel applications since it's executed directly on hardware in contrast with the usual way of executing threads in software level. What does it mean by "executing directly in hardware"?
(3) What are the differences when we run kernel code (opencl parallel code) using CPU and parallel code in CPU?
(4) "CUDA only works on NVidia hardware". Let's suppose we have a computer with multiple NVidia GPUs, does it mean that we can only choose to run our kernel code through these NVidia GPUs and can't choose to run it in another processor (like CPU)?
Thanks a lot!
You can head over to an explanation of the memory process at www(DOT)mql5(DOT)com/en/articles/407
The above will answer your question one and two, the third is as well assuming you meant GPU instead of CPU for one of them.
As far as I know you can choose to use the CPU as well as your GPUs when writing your code, however you will need to create a new context specifically for the CPU (or a single context including CL_DEVICE_TYPE_ALL) and a seperate kernel code because some very well written GPU code will be much slower when used for CPUs. Why did you include "CUDA only works on NVidia hardware?" I may have given you an incorrect answer because I did not understand your fourth question.