Microsoft Tools Up for Parallelism ByDarryl K. Taft 2008-03-19
Article Rating: / 1
Rate This Article:
Add This Article To:
Microsoft sets its sights on helping developers build parallel
applications.
The parallel computing concept Microsoft's Craig Mundie, chief research and
strategy officer, calls the next great shift in technology is Microsoft's
development focus on more fronts than one. Microsoft is addressing parallel
computing from the operating system level, to its core developer platform to
language support.
At the platform level, Microsoft released the first public beta of Microsoft
Windows HPC Server 2008 in November. Microsoft
Windows HPC Server 2008 is a server operating system and tools designed for the
fast-growing high-performance computing (HPC) market. Microsoft also established
the Parallel Computing Initiative, a program creating a set of common
development tools across multicore desktops and clusters.
ADVERTISEMENT
Microsoft spelled out its overall parallel computing strategy in a white
paper entitled "The Manycore Shift White Paper" in November. The paper describes
how Microsoft and industry partners are working together to enable businesses,
software and hardware vendors and individuals to
take advantage of what the company calls the “manycore shift.”
In a blog post from last May, S. "Soma" Somasegar, senior vice
president of Microsoft's developer division, explained the situation with an
example of how things are evolving. Said Somasegar: "Chip manufacturers would
tell us that the world is going to see an explosive growth of multi- and many
cores in the next generation microprocessors and systems that ship them. This
opens the doors for a world where we need to build the capability of building
software solutions with parallel computing techniques to the broad developer
base. Today, parallel computing is still restricted to a select few people
working on select hardware and environments."
Somasegar added that Microsoft then began "doing some early incubation work
to bring parallel computing power to the broad developer base to embrace this
inflection shift through elegant software architectures, rich libraries and
powerful tools and languages all aimed at our first and best customers, our
developers."
Extensions to .Net
Meanwhile, at the end of November, Microsoft released an early preview of the Parallel Extensions to the .NET Framework technology. This
release contains new APIs to make programming on the .NET Framework simpler as
well as supporting documentation and samples.
The Parallel Extensions runs on the .NET Framework 3.5 and relies on features
available in C# 3.0 and Visual Basic 9.0. The extensions include imperative data
and task parallelism APIs; declarative data parallelism in the form of a data
parallel implementation of Language Integrated Query-to Objects
(LINQ-to-Objects); first class tasks that can be used to schedule, wait on and
cancel parallel work; a new concurrency runtime used across the library; and
examples of parallelism from real-world problems.
In a blog post from November, Somasegar said: "Our work on
concurrent programming is another great example of close, ongoing collaboration
between product teams and Microsoft Research. Although we understand the shift
to parallel computing is a gradual road ahead for our whole industry, we are
excited by the prospect and believe that the Parallel Extensions library is a
large step in the right direction."
At the OOPSLA (Object-Oriented Programming, Systems and Languages)
conference in Montreal in October, Anders Hejlsberg, a Microsoft
distinguished engineer and creator of C#, said: "Going forward, the big
challenge we have today is we have to really think deeply about programming for
concurrency," Hejlsberg said. "The models we have today for concurrency don’t
work."
He said that only the top 10 percent of programmers can adequately program
for concurrent environments and it is not something for the masses.
James Gosling, a Sun Microsystems Inc. fellow and the creator of the Java
language, agreed.
"Going forward [with the programming paradigm] the big challenge will be to
think about multi-threading," Gosling said. "What will you do with a 4,000-core
machine?"
Language and Library
Meanwhile, Microsoft last fall introduced the Task Parallel Library (TPL),
which is designed to make it much easier to write managed code that can
automatically use multiple processors. Using the library,
developers can express potential parallelism in existing sequential code, where
the exposed parallel tasks will be run concurrently on all available processors.
Typically this results in significant speedups in performance, the company
said.
TPL is being created as a collaborative effort by Microsoft Research, the
Microsoft Common Language Runtime (CLR) team and the Parallel Computing Platform
team. TPL is a major component of the Parallel FX library, the next generation
of concurrency support for the Microsoft .NET Framework. Moreover, TPL does not
require any language extensions and works with the .NET Framework 3.5 and
higher. In addition, TPL supports Visual Studio 2008 and all parallelism is
expressed using normal method calls.
Microsoft also has delivered a parallel version of its Language Integrated
Query technology that will enable code to run on multiple CPUs. Known as PLinq, the technology is a parallel implementation of LINQ that
will help programs execute faster, said Hejlsberg, the creator of the LINQ
technology.
Meanwhile, Microsoft also is hoping to help developers address the issue of
concurrency with language support. Hejlsberg said Microsoft's F# language, pronounced "F sharp," can help
developers build applications that support concurrency.
Mads Torgersen, program manager for Microsoft's C#, who was instrumental in
getting F# moved from a research project to a product, said F# encourages
developers to program in a "stateless way—you say what you want, but you don't
say as much about how you want it. It's easier to abstract the how away. So that
leaves you more wiggle room to define exactly how your code gets executed … You
can separate the execution logic from the code intent, and that's useful when
you want fine-grained control over how concurrency is handled."