And you say that now Chaos - but that's because presumably software developers are so far behind the hardware in terms of getting the most out of the chips.
Yes it is completely down to software, the limiting factor being human thinking. We're just not made to write n-parallel processes. Its going to require things like clever compiler tricks, or parallel virtual machines etc. Or my wet dream, machines programming machines. One of my possible phd/masters topics was machine optimisation of code for parallel computing.