Intel and Microsoft dump $20m on researchers to avert software crisis
To your Ivory Towers!
Microsoft and Intel have put their money where their fear is. The two companies have shelled out $10m each to the University of California, Berkeley and the University of Illinois to fund research around advanced software programming techniques for PCs and mobile devices.
The grants mark a significant effort on the part of Intel and Microsoft to develop software that can run well across processors with many cores. Both companies need such software to make their future products more attractive, since few PC and mobile applications today can take advantage of the horsepower presented by an oncoming onslaught of chips that have 32-, 64- and even 128-cores. In trying to fix this issue now, the researchers and vendors argue they'll eventually be able to provide people with a new class of sophisticated programs.
"I think (the companies) get some credit here for seeing they won't solve these problems by themselves," famed Berkeley computer scientist Dave Patterson told us. "It is one thing to tell the National Science Foundation that it should be funding this work. It's another thing to fund it yourselves - although you can think of it as enlightened self-interest."
To date, most PC applications have benefited from ever faster processors. Companies such as Microsoft could release new applications and expect that the software would run better as companies such as Intel and AMD issued improved microprocessors.
Due to a variety of issues, however, processor makers have been forced to advance their products by adding multiple processor cores to each chip rather than simply increasing the speed of the processors. As a result, software makers now need to write far more intricate code which can divvy up tasks across all of the processor cores instead of pumping linear jobs through one core. The complexity of writing such software will only increase in the coming years as developers must deal not with the four-core chips of today but with tens of cores per chip.
This so-called multi-threaded code is quite common in the server realm, but now companies along with computer scientists want to bring flashier programming techniques to the desktop and mobile markets. As a result, people may gain access to machines that can crank through tough jobs such as handling speech, video and 3-D objects with relative ease.
Microsoft, in particular, has been viewed as a laggard in the race toward multi-threaded applications. When told by Intel of the shift toward multi-core chips, Bill Gates remarked, "We can't write software to keep up with that." Gates then urged Intel to continue producing faster processors as it had always done. "No, Bill, it's not going to work that way," Intel vice president Pat Gelsinger responded.
Now it would seem that Microsoft realizes the severity of the software issues ahead, which must please Intel since it relies on improved software to create demand for its latest and greatest processors. To its credit, Intel has been funding a variety of programs around multi-threaded software and has issued some developer tools.
Next page: JASON and the Have-Nots
Why should this fix things now? $20M is peanuts. The issue is apps.
The HPC crowd has been trying to make parallelism simpler for about 40 years. It can't be argued that those guys are dumb. It's also obvious that the total amount already invested in this quest completely dwarfs the $20M Intel & Microsoft are putting up now. There have already been multi-year projects at UIUC, MIT, Berkeley, Stanford, almost any other big research CS department anywhere, and numerous national labs.
The result? Fortran and C/C++ is what's used, augmented with MPI and OpenMP. No breakthrough in usability there.
My conclusion from the historical failure of all those efforts is that if the algorithms used for an application are parallel, you can do parallelism really well -- witness responding to a jillion user transactions (the canonical big-iron SMP app), or serving a jillion web requests (server farms are parallel systems), or doing image manipulation (for some manipulations, not all, lots of bit-level parallelism as in SSEx and CUDA). For such cases, parallelism is there, and gets used, in huge quantities. That's not to say that it's easy even then; it's not, although the complexity mostly gets buried in subsystem code (like OLTP monitors, Apache, Java beans). But at least it is there.
It's just not there for the total breadth of applications on commodity systems.
So I agree with Linus, with one caveat: Is there a new parallel killer app out there somewhere? Intel thinks virtual worlds are it, by the way, and I'm not sure they are wrong.
Good old Linus
If Linus makes a crack at something you know it is going to happen.
Yeah, we needed a modular kernel, the desktop is where Linux is at, and the future is in parallel computing at the core.
He always does stuff like this when it first gets spoken about, and the Linux kernel always alters to do what his outburst was against, genius. It actually forces people to examine the pragmatism of their approach, so his comments are tolerated on the whole.
The BSD license is freeware with acknowledgment, the source code for alterations does not have to be released, but BSD source code is released, it is the perfect license for companies who want a base standard and for developers who just want recognition, and here we see it in action to get some revenue. The TCPIP stack in window is perhaps still BSD.
MIT license is very similar to BSD as well. Yeah, those are the two organisations that are a no brainer for selection to push forward multi core technology, with a grant.
And multi core technology is not the same as multi threading, there are similarities, but a lot will be gained from selecting which pipeline to send a given process down in relation to other processes running. Splitting a process across a number of cores will probably look at grouping of threads, but unlike threads, you can take advantage of persistent register values, whilst still maintaining responsiveness. I would imagine, that in the future not all cores will be equal, and specific styles of cores will be used for specific processes. Most of it is conjecture at the moment, that is what makes this field particularly interesting, there is a lot of rules of thumb to be found and broken.
Well, I for one look forward to the new environment, the key is size to power ratio in hardware, once we can make it wearable, next step is the implants, and bio enhancements. I would be happy with a computer on a ring (patent pending), VDU in a pair of sunglasses, and a virtual key entry system based on hand and finger movements. The smaller the systems get, and the cheaper they get to produce, the more places we can put them. Hopefully we will end up with a panoramic utopia, where computers are just embedded into buildings and trees, no more messy cabling, no more boxes, just 24 / 7 convenient access to nets and computing resources.
Inevitable Probability Curveballs/Slam Dunks... or Simple Stealthy Progress?.
"So in summary then, they'll find a way of making us want this shit." .... By Funky Dennis
Posted Wednesday 19th March 2008 14:01 GMT
Actually, Funky Denis, they are busier finding ways to pay you for all the shit, so you can afford to buy IT and Move On to whatever is On Offer in Tele-Virtualised Futures.
House of the Rise Sun Technologies SAN for Progress in Programming Virtual Realities within and into Higher Definition BroadBandCasting........ for AI Sublime Control with Ubiquitous Powers.
Now that is QuITe Shockingly Awesome when True.
"But I'm not sure how many people actually run transcoding jobs that take 12 hours."
None, because they'll have 16-way SMP.
Multi-threading is hard
So hard, in fact, that most programmers don't seem to be able to manage it. The easiest gains will probably come from software libraries that use multiple cores but hide it from the programmer - it has to look like single-threaded programming even if under the hood it's not.
Of course, there are only certain types of algorithms that are inherently massively parallel, but many of them seem to be related to processing video (including computer vision!), and video on desktop PCs has only been practical for about 5 years. With hi-def catching on big-time, that's one area where multiple cores will be useful. But I'm not sure how many people actually run transcoding jobs that take 12 hours. Editing home video is a bit more common.
So in summary then, they'll find a way of making us want this shit.