i visit the website :http://www.khronos.org/opencl
i can't understand the diffrence of data and task parallel.
give me some suggestion or example , thank you!
Data parallelism is performing a task on multiple pieces of data, such as a matrix or a vector. For example, GPUs are data-parallel devices. If they encounter, let's say, an add instruction, they perform the add on many data at once. So a GPU could perform a matrix multiply operation very quickly, since it does the same operations (product and sum) on all the elements of the matrices. Compare this to a traditional single-core CPU, which would have to use for loops to iterate over each element one after another. This type of parallelism is also called SIMD (single instruction, multiple data) or SIMT (single instruction, multiple thread).
I've never heard "task parallel" before, but I'm assuming it might refer to what I know as "thread-level parallelism." This is where different operations are happening on data at the same time. The easiest example would be a multi-core CPU: each core executes a thread simultaneously, but the threads do not have to be performing the same operation nor do they need to be related. This is also known as MIMD (multiple instruction, multiple data).
I hope that helps you.
Thank you for explaining what and how simd works.
Your explaination helped me more easier understanding it and go deeper,