Original Link: https://www.anandtech.com/show/3408
Steven P. Jobs and the Holy Grail
by Ryan Smith on June 10, 2008 12:00 AM EST- Posted in
- Ryan's Ramblings
Although this year's Apple World Wide Developers Conference has everyone talking about the 3G iPhone, it's not the only thing to come out of Apple's annual developers meet & greet. Most of WWDC is dedicated to showcasing new technologies and techniques for developers along with filling them in on what Apple's going to be doing in the next year so that developers can plan things accordingly. Unfortunately much of this isn't shared far and wide, and with whom it's shared there's an NDA making sure it doesn't go any farther.
But this doesn't mean that we don't get anything out of WWDC, just less than we'd like. Case in point, Apple has announced that they're already working on Mac OS X 10.6 "Snow Leopard" which they will be releasing in roughly a year. Snow Leopard is billed as a rather minor upgrade from the end-user side of things as Apple focuses on performance and stability rather than 129 new features. Given that Leopard was coldly receipted by Apple standards, this probably isn't a bad choice by Apple. This doesn't mean that there won't be any new features however, Snow Leopard it appears is all about the developers as Steve Jobs embarks on a search for the Holy Grail of computing.
On the development side of things, there are two technologies that Apple is talking about right now: Grand Central and OpenCL. Apple has become (rightfully) concerned about the disjoint advancement of hardware and software that can use said hardware. We've talked before about how the movement from a fast single-core CPU to a slower multi-core CPU has created problems for developers; writing good multithreaded code is hard, really really hard. It's hard because doing multiple things at once is difficult to schedule, it's hard because doing multiple things at once can lead to odd results (race conditions), it's hard because not everything can even be split-up/parallelized, and it's hard because C-style languages were originally designed to be written and executed in a very linear way. Given the difficulties in writing good multithreaded code, it has become the Holy Grail of modern computing to be able to easily write/convert large programs so that they are efficiently multithreaded.
Grand Central is Jobs' search for this Holy Grail. Apple hasn't released a great deal of information about Grand Central beyond closed doors, but we do know that it's a new technology Apple is working on to make it easier to write multithreaded applications. They have even gone so far as to call it a "parallel-processing breakthrough" when talking to the New York Times; Apple makes no small boast in this case. The big question is what exactly Grand Central is, as "technology" is all all-encompassing term that can be anything from a library of optimized functions to an entirely new programming language. Apple seems rather attached to Objective-C at this point and libraries have proven to only be useful in very specific situations so we consider either extreme unlikely, but the middle is also a very big place.
We've thrown around the idea of a new auto-parallelizing compiler or perhaps something in Xcode to help direct developers on writing better multithreaded code, but really anything is possible with such vague descriptions. The bigger question on our mind is if Apple is capable of making this kind of breakthrough; they have some very capable engineers but they're also not on the list of companies we first think of when discussing fundamental computer science problems. The company's strength has been in business, hardware engineering, and "soft" programming issues such as GUIs and usage patterns; Apple does not have a lot of published experience at solving the hard and overly technical problems such as multithreading. We very much hope to be proven wrong here as a breakthrough as big as Apple is promising could change the entire industry, but when one goes searching for the Holy Grail a little bit of skepticism is in order.
Moving on, we have the other piece of Apple's new performance technology, the Open Computing Language (OpenCL). OpenCL is a C language for GPGPU computing, similar to CUDA and Brook+ for NVIDIA and AMD respectively. Currently CUDA and Brook+ are incompatible, both are C but the languages are different enough that programs are not portable between the two, and neither can compile for the other company's GPUs. Full GPGPU support has been notably absent from the Mac so far while CUDA and Brook+ have been supported on Windows and Linux for some time now. We have heard that Apple has wanted to add full GPGPU support to the Mac for some time now (having been one of the first companies to embrace early GPGPU usage for their video editing applications) but we have also heard that they are unhappy about the incompatibility between the GPGPU languages. They don't want to have to write two of everything, nor do they want their developers doing so. There are 3rd parties that offer GPGPU programming environments that are cross-GPU compatible, but these are expensive and not at all open in any sense of the word.
So we have OpenCL, Apple's proposed universal GPGPU programming language and API. From what we know it looks like Apple is trying to make OpenCL the GPGPU sibling of OpenGL, but like Grand Central Apple has said very little so far. We're not sure who (if anyone) else is backing OpenCL, although we expect AMD and NVIDIA to be on-board otherwise the whole effort will fall flat on its face without support from the GPU manufacturers. Apple has said it's beyond CUDA and Brook+, although we're not entirely sure in what way. From what we've seen of CUDA and Brook+, both are very powerful and very functional languages, so it's unlikely OpenCL is adding any new features that will expand what developers can do; nearly anything can already be done. Rather it seems Apple will be going the simplification route, as CUDA and Brook+ are anything but simple to program for; they may use C but they currently have many nuances that have to be dealt with. An even further generalized framework that's more open to less technical programmers may be what Apple is shooting for. But like Grand Central, we're going to be waiting some time until Apple fully explains where they're going and why.