UPDATE: Microsoft on course to Moneyville at WARP10
Opinion - Indianapolis (IN) - Earlier this week, Microsoft announced its new WARP10 DirectX extension which enables raster operations to be carried out on the CPU when no GPU is available. This will become part of the standard Windows 7 platform. This latest software extension seems like a notable step backward when considering how parallel compute hardware is everywhere today and growing because it's extremely cost effective. It's had me scratching my head all week trying to figure out what Microsoft's plans are because surely this extension is a large software effort for Microsoft. I think I've finally nailed it, though: Money.
Windows 7 to Windows Azure
Microsoft's WARP10 documentation states "WARP10 is a new component that will be part of DirectX graphics technology in Windows 7." November's DirectX (DX) software development kit (SDK) contains beta extensions for DX10, 10.1 and 11. Early adopters can download the DirectX SDK November 2008 edition and begin programming it immediately, meaning it's technically available long before Windows 7.
Microsoft gave us a glimpse of what Windows 7 will communicate with in their late October announcement of Windows Azure. The word Azure means "cloudless sky," which Microsoft selected intentionally because Windows 7 is designed to interface with Azure's cloud-computing design. Microsoft wants people to realize that they've "taken the clouds out" of the complex idea of "cloud computing," meaning they've made it easy to wield, and now (if I'm right) directly from a Windows 7 extension.
Microsoft's presentation also gave us a glimpse of what the future server environment would look like. Windows Azure will present unto the world in a seamless outward appearance. If it's for a website, Microsoft will host it on their hardware and Windows Azure will allow everything to work correctly regardless of whether there are 50 users, or 50 million. Azure automatically scales up and down as resources are needed to carry out the workload.
All of this seamless scaling and integration will come at a fee, of course. But, rather than paying to have your own server farm, or renting space with other companies at some ISP, and then having to set up your own equipment and hardware there, Microsoft will handle all of it for you. All of us using this service will be using the same tools, and we'll all be writing one check ... to Microsoft. You can read my summary/opinion of Windows Azure and its capabilities. I sum up Azure by saying it's absolutely amazing technology that "not one of us should use ... ever."
So, what is WARP10 all about?
Windows 7 scales seamlessly into Azure
In order for Microsoft to host everybody's website and online businesses with Windows Azure, it's going to take a huge number of server farms, equipment, worldwide networks and infrastructure, all of which Microsoft discussed during their October presentation. Microsoft is going to have to plan for the worst case scenarios too, meaning lots of extra equipment basically "lying in wait" for the times when server loads demand it.
This excess will give Microsoft a large asset that will go unused until it's needed. And I believe Microsoft has, with WARP10, devised a way to take that otherwise unused computing asset and turn it into cash.
Fee for service personal supercomputing
When Windows 7 is released, Microsoft should begin offering a fee-for-service computing platform extension, that is WARP10 running on Azure. One which allows any of us to have the resources of a large supercomputing facility today. Those rendering farms used to make 3D animated movies like Shrek, Toy Story, Wall-e, Bolt and other upcoming titles, well we'll all have access similar abilities - so long as we can pay for them.
For those corporations and people who desire to have access to large compute farms without buying the equipment, Microsoft's Windows 7 and Azure will accommodate. We'll develop, code and test on Windows 7, then lease what we need from Azure only when we need it - paying basically for the enhanced compute time. Microsoft prepares the platform in advance and then, rather than having the full-on maintenance expense of our own farms, or vying for time in other large shared server platforms, we'll just turn to Microsoft and say, "More, please."
This conclusion is reached partly by the fact that WARP10 does not require SIMD extensions of any kind. It can run completely on any CPU-only platform, even those without MMX or SSE in any version, all the while providing raster operations, and all the while leveraging every compute asset on a machine regardless of its relative performance to other hardware. This mean it will scale as compute resources are available.
CUDA and CAL/Brook have already shown us that those internal abilities which are typically used for graphics-only manipulations today can also be wielded in more general compute ways. And I believe this is the future for Microsoft's WARP10 extension.
Microsoft is looking for a way to monetize the huge number of assets required to provide seamless up/down scaling on any of the websites or businesses it will host with Azure. And, the Windows 7 WARP10 interface will provide one portal of access into that hardware. Rather than having large quantities of unused hardware just waiting around, Microsoft will get paid as they offer unto the general public the use of that compute equipment for a fee.
Each of us will have access to our own "virtual server farms" as needed, compliments of Windows 7 and Azure's seamless cloud computing model, so that if we desired (and had the time, energy and resources to follow it through) we could create movies on the order of Wall-e, or renderings on the order of those produced by supercomputing facilities today, like the NCSA, or run scientific data through computational modeling for our research. Or any other of a hundred things which are only possible with direct access to supercomputers today.
Windows Azure and Windows 7 will truly be enabling technologies. The platforms they provide will be the first of their kind. However, I still believe none of us should ever use them if only for one reason: Having all of our business data and compute abilities running on Microsoft's hardware, being stored on Microsoft's hard drives, and being communicated over Microsoft's intranet, well to me that's just too high a price to pay.
December 5, 2008, 6:48pm
Several commenters and a private emailers have told me that the purpose of WARP10 is to simply handle raster operations on the CPU without having a GPU present. I state that above in my article, and I agree that is the purpose of WARP10 today. However, I believe there is also something else going on here that I'm not even sure many software developers would be aware of because very few people today operate or think at low-level hardware levels.
The DirectX SDK provides an API which allows the power of DX10, for example, to do all of its magic via structures and function calls which are completely abstracted away from the developer. We, the coders, write programs and call those things (functions) by name. We don't know how it operates on the inside and we don't care. In fact, how it happens inside of the DirectX engine is 1) of absolutely no concern to us and 2) what makes DirectX so powerful. We write for the thing, rather than for the specific piece of graphics hardware attached to the computer. This abstracts away the hard stuff and leaves it to the video driver.
Now today, we are finding out that these advanced parallel GPU chips can be used as a GP-GPU for general purpose computing abilities. And while their implementation is rarely the most efficient method of carrying out a task, because it is so massively parallel it ends up being of very high throughput relative to CPU-only computations.
So, given the fact that DirectX is a thing that operates in a particular way today, it doesn't necessarily mean it will be limited to only that ability in the future. In fact, as long as no backward compatibility issues are broken, it could present itself tomorrow in the same way while also extending its abilities and/or operating in a completely differently on the inside. Or, if the computational abilities of a WARP10 are exposed through a particular variety or version of DirectX, then it wouldn't even have to be backward compatible. Applications could not use that version of DX for gaming, but they could use them for computation.
This is part of the thought I have about how WARP10 could be migrated. Whereas the abilities today leverage a particular function of the DirectX engine for CPU use, that doesn't mean the design is limited to that purpose tomorrow. And, by creating CUDA/CAL/Brook-like code which leverages the parallel abilities of the GPU via something like direct DirectX function calls, it's a natural progression to see the DirectX abilities themselves being extended at some point toward a more CUDA/CAL/Brook-like presentation on top of the existing 3D functionality. And that, with the WARP10 implementation in mind, would target directly the CPU hardware. And, based on timelines, that means Larrabee and other similar, future processors.
Another bolstering point here is a concept I believe regarding Microsoft's big arc of not just selling software any longer. It seems now that Microsoft is finding ways to make money on the hardware assets they'll provide through their "service environment" - which is Windows Azure, rather than just selling us products or licensing us online software access (so long as we keep paying). And, even if we consider only that one reality alone, then the whole concept of what .NET is all about (a virtual machine capable of running on any hardware) also begins to become clear.
The SDK for Azure uses managed code. This is a telltale sign that the future Microsoft is building for themselves is not hardware dependent. It won't matter whether or not the code is running on an x86-based machine, an Itanium machine, UltraSPARC, a cell phone, or whatever else might come about in the next 10 years. Microsoft's virtual environment and managed code ensures that the underlying hardware is of no consequence and can be migrated to over time.
This again leads toward the concept of migrating code around from physical hardware asset to physical hardware asset (machine to machine) regardless of anything they may or may not have in common with each other in terms of architecture or abilities. So long as they have powerful compute abilities and support the virtual machine, that's all that's required.
These concepts I'm talking about are very radical. However, if you step back from the physical implementation of the thing as it's presented today and try to look at the big picture of Microsoft's movements in recent years, I believe something along these lines presents itself - and very clearly. And whereas I am completely guessing about all of this, it does make sense.
With that in mind, I look forward to reading your well-thought out comments.
The opinions expressed in this commentary are solely those of the writer.