Supercomputing on Your Desktop

Ray Kurzweil has garnered a great deal of attention by exploring the future path of computer technologies. His books use past trends and current information to predict what the world will be like 10, 20 and 100 years from now. His analysis is so in-depth and his reasoning so persuasive that his ideas are treated as models of the future rather than optimistic speculation. One of his more popular graphs illustrates the date by which a personal computer will have reached a level where it has the capacity to think like a human. He believes that current computers are able to process as much information as a dog's brain and they will reach human levels by 2020 (1). Quite apart from Kurzweil's predictions, Intel and AMD have delivered computer chips that make major leaps forward in computation every year. Both companies have made it clear that their future processors will offer something different. Instead of doubling or tripling the linear speed of their chips, they will be producing chips that contain multiple processors inside each one (2). Chips with two or four processing cores are available now, but within a few years they will deliver 32 or 64 processors to a standard consumer desktop. Both companies plan to double the number of processors, also known as "cores," inside a chip every 18 to 24 months. So for example, if we have 4-core machines in 2008, then we will have 8 in 2009, 16 in 2011, 32 in 2013, 64 in 2015, and 128 in 2017. Within the very short period of nine years we will have gone from a few processing cores to over 100. The consumer desktop begins to sound like a small supercomputer. It is a little personal version of a NORAD command center, NSA code breaking machine, Wall Street financial cluster, or Google search farm--right on your desktop. An Industry-Changing Threat All of these processing cores present a serious challenge and an industry-changing threat to the companies that make the software for these machines. From Microsoft to the one-person programming shop, everyone is going to have to learn to work with this new paradigm of computation. Almost all computer programs are designed to do computation linearly because they have been built to run everything through a single processor. Microsoft Windows and Office, the Firefox Bowser, TurboTax, and computer games are all predominantly a single thread of computation that runs through the computer similar to thread running through a sewing machine. Some programs spin off a few tasks as independent and parallel threads, but there has been limited advantage to this when a computer has only one processor. Eventually everything has to squeeze through that one processor in a linear fashion. But the personal computers of the future will offer multiple processing cores that do work simultaneously and in parallel. Even though there are 100-plus processors in a computer, a traditional linear program will not speed up because it does not know how to spread its work across all of the cores. These multi-core processors require a new generation of software applications that know how to use this power and a new generation of computer programmers who know how to create multithreaded or parallel computing code. This is a major concern all through the software industry. How do you parallelize the operating system, office productivity software, the web browser, or the next computer game? The companies that master this will be the first to harness the new computing power and deliver "mind blowing" performance to customers. They become the "must have" applications for the next decade. Multi-processor machines and parallel computing are far from new; they are just not common at the consumer level. They have existed in government, military and academic products for decades, as well as industrial research labs, but they have never been a staple of consumer-grade equipment nor been part of the average person's experience with a computer. …