Software developers and technologists everywhere are beginning to discuss the looming "multicore crisis". In a nutshell, this crisis stems from the fact that processors are no longer getting faster due to heat issues; they are just getting cheaper, so, we're putting more of them in a single computer. Today's multicore processors look like a single chip, but actually have several processors that run in parallel. Unfortunately, most software was written in such a way that it cannot take advantage of multicore processors. That means, most software programs that exist today will not run any faster on the latest and greatest computers 10 years from now, assuming that clock speed continues to remain constant. They are frozen in time like dinosaurs, doomed to extinction -- and, that's the crisis.
Now, why can't most software run on more than one processor core? The answer is that most traditional, text-based programming languages do not have easy ways to program applications that can execute different parts in parallel on multiple processor cores -- they are written as one big loop of sequentially executing code that can only run on a single processor. And, many text-based programmers do not map problems into a parallel solution space -- parallelism isn't part of their programming toolbox.
Now, if you're like me, you're probably thinking, "I'm sure glad that I program in LabVIEW, which is inherently parallel." The LabVIEW programming language is parallel at it's heart, with software written on a two-dimensional, graphical canvas of parallel data flow. At NIWeek 2007, NI demonstrated a simple application written in LabVIEW, which had three While Loops communicating with each other: acquiring, processing, and presenting data. They demonstrated how the application executed 3.8x faster when running on 4 cores as it did when running on 1 core -- that's a nearly linear increase in performance. While more complicated applications will, of course, have a hard time scaling linearly, this achievement by NI is remarkable.
To learn more about how LabVIEW's parallelism allows code to take advantage of multicore processors, you should definitely read NI's white paper, Programming Strategies for Multicore Processing: Data Parallelism.
Concurrent, parallel, and distributed software applications are rapidly moving to the forefront of the software engineering word. The community of text-based programming experts are struggling to find ways to deal with this problem with their tools of choice and some are predicting that it will take a decade before their tools are ready. Aren't you glad that LabVIEW, which has been parallel since 1986, is 30 years ahead of them?
- Programming Strategies for Multicore Processing: Data Parallelism
- The Future of Programming and Innovation
- A Picture of the Multicore Crisis
- You’ve Already Had a Multicore Crisis and Just Didn’t Realize It!
- NIWeek 2007