I would like to offer an apology to Microsoft and its fans - but I
can't yet. I may have overstated my argument
against Microsoft regarding the upcoming Windows 7 in one important
area: programming support, especially for high-end graphics like
games.
Proprietary vs. Open Standards
While Microsoft has avoided open standards like OpenGL for 3D graphics, it
has made its own proprietary DirectX a
worthy substitute. Microsoft has used its money and position to
create DirectX as an alternative to OpenGL and gained the cooperation
of the graphic card manufacturers to support it.
Apple has instead chosen to use the open standard OpenGL for Mac
OS X. This has required that they sometimes accept improvements at
a slower pace. The revisions to an open standard can be slow while
everyone discusses what direction to go.
Microsoft can skip these discussions and simply make a decision in
favor of the solution it prefers. Then Microsoft uses its monopoly
power to get other people to agree. The proprietary choice clearly
benefits from rapid decisions to jump ahead while everyone else debates
open standards.
Open standards do have the benefit that anyone can use them, and
many people can contribute their ideas. OpenGL and the new OpenCL are maintained by the
Khronos group. It has members who
are heavy-hitters in the computer industry: Apple (of course), as well
as Intel, Nvidia, AMD, and Sun Microsystems, just to name a few.
These companies have a sizable interest in the open standard being
useful on new hardware. They are all big influential companies that
don't take a back seat to Microsoft on design or intellectual
property.
Also involved with Khronos are companies like Electronic Arts,
Activision, Blizzard, 3Dlabs, etc. These companies show that there are
plenty of important software developers who have an interest in
supporting both the OpenGL and OpenCL standards.
OpenCL
OpenCL
is key to the hottest new development in speeding up computers, using
the graphic card's GPU to boost general compputing performance, not
just graphics tasks. Interest in this has been growing for a few years,
but early developer tools were difficult or took more work to
implement.
Nvidia has worked hard to bring improved support on its brand of
GPU. It developed CUDA
(Compute Unified Device Architecture) to give familiar programming
commands to developers. AMD/ATI did something similar with Stream SDK
technology.
The problem with this situation is obvious: How does the operating
system choose which method to use? You can either have an open standard
to access these differing methods or use proprietary tools to
generalize what is taking place.
Apple decided to work with Nvidia, AMD, and Intel to create an open
standard to handle multiple processors, on both the GPU and the CPU.
This led to the creation of OpenCL (PDF).
OpenCL has the potential to be useful on a wide range of processors
from GPUs to digital signal processors (DSPs) and other specialty
processors. In addition to Mac
OS X 10.6 "Snow Leopard", the new iPod touch also uses
OpenCL.
Microsoft's Alternative
Microsoft isn't a member of the Khronos group. It has DirectX to
serve its needs. Microsoft will include some GPU and multiprocessor
tools into DirectX 11. The details on this are sketchy. All that I
could find is the use of "Compute
Shader" to perform these tasks.
How do DirectX Compute Shaders compare to OpenCL? There is a brief
mention in an
interview with Neil Trevett, President of the Khronos group. He
gives the impression that OpenCL is more high level and maybe a little
more flexible than Compute Shaders. "OpenCL is a very robust compute
solution rather than compute within the context of the graphics
pipeline, which is more the approach that DX 11 Compute Shaders have
taken." Compute Shaders maybe more limited in scope of features but run
faster.
Not Yet Possible to Compare Performance
The reason my apology is not ready is because actual comparisons
between Microsoft's DirectX 11 and Apple's combination of OpenGL and
OpenCL are not yet available. All of this technology is incredibly new,
and even after OS support is done, it will take time for programs to be
written that can take full advantage of their features.
While I can't say that anything from Microsoft will be
better, I can say that Microsoft doesn't appear to be trailing Apple
here. In fact, since OpenGL and OpenCL are open standards, they will be
available for Windows 7, Linux, BSD, or whatever OS chooses to use
them. (Whatever your OS, you will also need a graphics card with the
special instructions for OpenCL to get full support.)
This becomes a battle not just between Apple and Microsoft, but also
between open standards and proprietary technology. I'd like to think
that Apple has the best technology, but the best technology doesn't
always win.
One thing is certain: Improving the use of multiple processors on
the CPU or GPU is important, and everyone is working hard to fill this
need.