LOS ANGELES -- Microsoft is working to deliver parallel programming
capabilities to the masses, in the way that perhaps only the software
giant can.
In an interview with eWEEK at the Microsoft Professional Developers Conference (PDC) 2009
here, S. “Soma” Somasegar, senior vice president of Microsoft Developer
Division, said the company is attacking the issue of parallel computing
or concurrency on a number of levels, including at the language level,
at the runtime level and at the operating system level, among others.
Indeed, “parallel” and “data” appeared to be two of the most
frequently used terms at this PDC – in addition to “cloud” and maybe
“modeling” – and, ironically, Microsoft has an emerging effort to
pursue “data parallelism,” Somasegar said.
Data parallelism -- also known as loop-level parallelism -- is a
form of parallelization of computing across multiple processors in
parallel computing environments.
“We are grappling with something called data parallelism,” Somasegar
said. “We think parallel programming is great, a lot of programming
today deals with data. The more we can think about what data
parallelism looks like, the more we think we can execute effectively on
that. So one of the things we have in the parallel programming world
and partnering with the C++ guys is looking at whether there are
extensions that we should do that enable data parallelism.”
Somasegar explained that if a developer is going to do any kind of
operation on data, either they can do it sequentially or they can do it
in parallel. Mostly today it happens in a sequential way. “So you are
limited by how fast you can go through a particular data access in a
sequential way,” he said. “But if you have a large data set and you can
partition the data set into half a dozen data sets or a dozen data sets
and you can do some operations in parallel, you can do it that much
faster.”
Microsoft focused a lot on the increasing need for programmers to
interact more directly with data. The company announced a new effort
known by the codename “Dallas,”
which is an effort to deliver a data-as-a-service solution. Both SQL
Azure and the new SQL Server Modeling Services offerings – ways for
developers to get closely involved with data -- demanded much attention
at sessions and meetings at the PDC.
“You cannot talk to a developer today who doesn’t need access to
data,” Somasegar said. “You cannot see an application that doesn't have
some involvement with data. We used to view programming as programming
and data as data. But with the release of LINQ {Language Integrated
Query] a few years ago, that was an attempt to get these two islands to
be more integrated. Whether you are thinking about cloud, whether
you're thinking about on-premises on the back end, or whether you're
thinking about the front-end with a client, you really need to think
about what your data access story looks like. So it's a natural
evolution, but probably one that is a little late in coming for the
world at large.”
During a PDC panel on the future of programming, Don Box, a
Microsoft software architect and distinguished engineer, said, “My day
job is to make programmers learn to love the database.”
So Microsoft is attacking the problem of parallel programming from a
number of fronts. And the company is doing it in the traditional
Microsoft way of making its technology available to a large number of
customers at a reasonable cost – the traditional “high-volume,
low-cost” Microsoft strategy. Pushing early stage support for parallel
programming out in its standard integrated development environment,
Visual Studio, is a first step.
“There is a lot of early thinking that is happening in multiple
dimensions of the company and a few concrete things that we know that
we are delivering in Visual Studio 2010.”
What Microsoft is delivering in Visual Studio 2010 includes tooling
such as debugging tools for coding for concurrency, and delivering
parallel libraries to enable developers to parallelize certain parts of
their application – such as the Task Parallel Library (TPL).
“We also have a runtime that we call the concurrency runtime that
enables you to take advantage of parallel this,” move to parallelism,
Somasegar said. “So we feel like we are taking the first few good steps
toward providing a complete stack for you as a software developer to be
able to start parallelizing your applications.”
By shipping this technology with Visual Studio 2010, “The goal is to
democratize parallel programming so that even I can take advantage of
this,” Somasegar said. He said that until recently, even thinking about
let alone attempting to do parallel programming “was relegated to an
elite few. But the advent of multicore and many core machines means
this is something the whole world has to think about.”
Moreover, “The Windows guys are working to see what changes we need
in the operating system to support this new construct,” Somasegar said.
Indeed they are. Michael Angiulo, Microsoft’s general manager of
planning and PC ecosystem for Windows, said Microsoft is hard at work
addressing the parallel computing issue in the Windows operating
system, and Windows 7 has its share of support for multicore systems in
that it can scale to support up to 256 processors, among other things.
“The new way to get more processing power onto a single piece of
silicon is to add cores,” Angiulo told eWEEK. “And it's a very
interesting problem to understand how you create a software development
paradigm that takes advantage of that. Because most software problems
are not inherently multi-threaded.”
Meanwhile, Microsoft is looking at adding parallel extensions to its
existing languages and also has a research-driven effort to develop a
whole new language for parallel programming, known as Axum. Axum is
an incubation project from Microsoft's Parallel Computing Platform that
aims to validate a safe and productive parallel programming model for
the .NET framework. And Microsoft has released support for Axum in the beta version of Visual Studio 2010.
In addition to Axum, Microsoft’s F# functional programming language also
supports parallel programming. “We start from a programming language –
a functional language like F# naturally lends itself to parallel
programming. But there is work that needs to be done at the library
level and work to be done at the runtime level as well.”
Somasegar added, “We think about Axum and we ask ourselves should we
invent a new programming language or should we extend an existing
programming language. Conventional wisdom says if you are a VB
programmer or a C# programmer, telling you you need to go learn
something completely new is a hard sell.”
At the same time, however, “We want to make sure that our current
languages that you're already familiar with have the right extensions
built into the language so that you can easily extend your existing
app,” Somasegar said. “The good thing is I don't know of anybody else
that is any further ahead of us on this. And we think the train is
going to leave the station with or without us, so we may as well be
ready for it.”