As part of its Technical Computing initiative, Microsoft has launched a new effort known as Technical Computing Labs (TC Labs) for developers on Microsoft Developer Network’s (MSDN) DevLabs.
TC Labs provides developers with the opportunity to learn about Technical Computing technologies, get early versions of code and to provide feedback to Microsoft. TC Labs is a new resource for developers to access early releases of Microsoft Technical Computing software.
According to the TC Labs page on DevLabs, Microsoft is bringing multiple technologies and services to bear with this initiative including parallel development tools in Visual Studio, distributed computing environments with Windows High Performance Computing (HPC) Server, cloud computing with Windows Azure, and a broad ecosystem of partner applications.
“Microsoft Technical Computing is focused on empowering a broader group of people in business, academia, and government to solve some of the world’s biggest challenges,” Microsoft said on the TC Labs site. “It delivers the tools to harness computing capacity to make better decisions, fuel product innovation, speed research and development, and accelerate time to market – including decoding genomes, rendering movies, analyzing financial risks, streamlining crash test simulations, modeling global climate solutions and other highly complex problems. Doing this efficiently, at scale, necessitates a comprehensive platform that integrates well with your existing IT environment.”
Microsoft TC Labs projects include Sho, which provides those who are working on Technical Computing-styled workloads an interactive environment for data analysis and scientific computing that lets you seamlessly connect scripts (in IronPython) with compiled code (in .NET) to enable fast and flexible prototyping.
In a Jan. 26 blog post, S “Soma” Somasegar, senior vice president of Microsoft’s Developer Division, said of Sho, “The environment includes powerful and efficient libraries for linear algebra and data visualization, both of which can be used from any .NET language, as well as a feature-rich interactive shell for rapid development. Sho comes with packages for large-scale parallel computing (via Windows HPC Server and Windows Azure), statistics, and optimization, as well as an extensible package mechanism that makes it easy for you to create and share your own packages.”
Another TC Labs project is the Task Parallel Library (TPL), which was introduced in the .NET Framework 4, providing core building blocks and algorithms for parallel computation and asynchrony.
Regarding TPL, Somasegar said, “.NET 4 saw the introduction of the Task Parallel Library (TPL), parallel loops, concurrent data structures, Parallel LINQ (PLINQ), and more, all of which were collectively referred to as Parallel Extensions to the .NET Framework. TPL Dataflow is a new member of that family, layering on top of tasks, concurrent collections, and more to enable the development of powerful and efficient .NET-based concurrent systems built using dataflow concepts. The technology relies on techniques based on in-process message passing and asynchronous pipelines and is heavily inspired by the Visual C++ 2010 Asynchronous Agents Library and DevLab’s Axum language. TPL Dataflow provides solutions for buffering and processing data, building systems that need high-throughput and low-latency processing of data, and building agent/actor-based systems. TPL Dataflow was also designed to smoothly integrate with the new asynchronous language functionality in C# and Visual Basic I previously blogged about.”
And another TC Labs project, Dryad, DSC, and DryadLINQ, are a set of technologies that support data-intensive computing applications that run on a Windows HPC Server 2008 R2 Service Pack 1 cluster. Microsoft said these technologies enable efficient processing of large volumes of data in many types of applications, including data-mining applications, image and stream processing, and some scientific computations. Dryad and DSC run on the cluster to support data-intensive computing and manage data that is partitioned across the cluster. DryadLINQ allows developers to define data intensive applications using the .Net LINQ model.