I asking about the main differences between GPU (graphical processing unit) and DSP (digital signal processor)
isn't DSP capable of doing image processing as it is part of signal processing ?
so what is the main characteristics of image processing differentiating it from the wide digital signal processing
A digital signal processor (DSP) is a specialized microprocessor designed specifically for digital signal processing, generally in real-time. Programmable Digital Signal Processor (DSPs) are tuned to efficiently execute the computationally-intensive loops that typically characterize digital signal processing algorithms (i.e. FIR and IIR filters).
A Graphics Processing Unit or GPU (also occasionally called Visual Processing Unit or VPU) is a dedicated graphics rendering device for a personal computer, workstation, or game console. A GPU is the main processing unit in the architecture of every graphic cards used on computers or game consoles.
ok
isn't image processing a kind of digital signal processing ?
why don't we use DSPs in image processing ? or what is special operations needed for image processing forced us to design GPUs rather than using DSPs ?
what is GPUs optimized for ?
this my questions
GPUs are specially suitable for draw and modify images, not properly designed for perform patter matching or recognition, what is supposedly the matter you are asking for.
Such devices must work giving support for a main processor ( not necessarily a DSP one ) releasing it for a big amount of computational tasks.
for further understanding
i.e. GPUs are specialized in just drawing images on the screen i.e. (vertex shading , geometry shading , rasterizer , pixel shading and o/p merging ) ?
who is responsible for image processing i.e. rotating images , filtering and so on ? the main processor on the computer ?
what is the scope of GPUs ? digital cameras have GPU and general processor for filtering and such operations ?
I don´t know exactly what is the GPU you intend to use, but at the one I had researched a few (MALI-400), could not find too much elementary enhancement operations, but predominantly operations for render graphical 3D images. I suppose the reason is due to this core is largely applied on modern handsets, which are designed for provide support for such features.
The main difference is that GPU is specialized on doing vectorial operations. It can process several (hundreds) operations at the same clock cycle, but, on other hand, it has problems in executing simple sequential tasks.
For example, this code (conceitual) is perfect for GPU:
Code:
for (i=0;i<100;i++)
a[i] = a[i]*b;
As GPU have a lot of parallel processors, it can perform actions in parallel. If the specific GPU has more than 100 processors, it can do the example above in one clock cycle!
But, for example, the code (again, conceitual) below does not runs well in GPU:
Code:
for (i=0;i<100;i++)
if (a[i]>0)
b[i]++;
else
b[i]--;
Because some cores would have to execute b++, while some cores should have to execute b--; this is not possible, all GPU cores must execute the same instruction.
DSPs, on other hand, can make vectorial operations as well, but they are much more flexible, and does not present these lockouts.