Microsoft's Parallel Push Takes Another Step Forward

Microsoft is working to deliver parallel programming capabilities to the masses, in the way that perhaps only the software giant can. The company is pursuing data parallelism, a form of parallelization of computing across multiple processors in parallel computing environments.

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."