mayankleoboy1 :
But all these things are already using parallel computing on CPU, and some on the GPU too.
AFAIUI, the goal of HSA is to make even the sequential stuff parallel.
CPU's are not designed with parallel workloads in mind. Throwing more cores simply hides the scaling problem.
Back in the 80's MIT tried to build a computer with over 60k CPU's. They stopped at 1,000, because they found no matter what they did: Software would not scale beyond a few dozen cores.
Some applications are reasonably parallel; loading powerpoint slides, database management, and so on. When you work with objects within a program that do not depend on other objects within the program, you can get very good scaling (80%), up to infinity.
Most applications, however, are not designed like that, and as a result do not scale particularly well. You can parallize PARTS of applications to an extent, but the overall program control remains sequential (do A, B, C, wait for results, do D and E based on resulted from A, B, and C, wait for results, then do F with the final data set). This limits your scaleability, and you drop off after about a dozen cores.
Why are GPU's used for rendering? Because after you create a 3D geometry, most of the computations become independent down to the pixel level. And given you have a few million pixels to compute, a 200 core architecture with weak cores will outperform a 4 core architecture with much more powerful cores. Have a GPU do general purpose computing however, and you see applications running slower then on a CPU, because those weak cores, combined with a serial workload, kill performance.
And this is before hardware is considered. Guess what, if I have to read data from RAM, guess what? The thread is going to be preempted by the OS, because it can't continue for a few ms. Threads need to communicate? Another roadblock. And so on and so forth. At the end of the day, hardware read/writes are sequential operations. Hence why you'll never see scaling much above 80% on PC's as currently designed.