原文发表地址:英文:Scale-out computing on DevLabs 中文: 在DevLabs上的扩展计算
原文发表时间:26 Jan 2011 10:30 AM

今天我们在DevLabs上建立新的技术计算(Technical Computing-TC)项目。一些技术会被作为技术计算计划的一部分开发出来, 这些项目为你提供学习这些技术的机会,能更早地获取代码,从而提供一些对TC相关的创新项目的反馈。

去年五月, 我写过一篇关于Micorsoft的技术计算计划博文,这个倡议旨在能够赋予世界上最重要的问题解决者能最优化地利用计算资源的权利。 这些领域的专家常常要不就自己开发代码,要不就依赖别的开发人员来开发软件以实现他们的工作。TC计划给予那些开发人员和领域专家突破性的开发工具和架构来将工作做到最好。

TC计划自创立之初已经踏出非常重要的第一步。Visual Studio 2010支持开发、调试和优化多核应用程序,已经在各种不同的行业和领域获得广泛采用。11月,我们发布高性能计算服务器(HPC Server)2008 R2的Service Pack1。它整合了Windows 云计算周期,能很简单地将并行应用程序从群集扩展到云。这只是开始。加入TC计划的团队正在非常努力地开发新的出色的解决方案,以将所有现代和未来计算所拥有的全部都带去给开发人员,领域专家和IT专业人士等等。。

今天的新TC项目正在准备采取下一步行动。

TPL 数据流- 实现并行和并发的.NET应用程序

.NET 4中引入了任务并行库(TPL)、并行循环、并发数据结构、并行LINQ(PLINQ) 等等,所有这些都统称为.NET Framework的并行扩展。 TPL数据流是其中的新成员, 位于所有任务、同步集合与更多其他扩展之上,从而利用数据流的理念而构建的强大而有效的基于.NET的并发系统的开发。该技术依赖于基于进程中消息传送和异步流水线的技术,灵感大部分来自于Visual C++ 2010异步代理库和DevLab的Axum语言。TPL数据流为数据缓存、数据处理提供解决方案,构建高吞吐、低延迟的数据处理系统和基于代理/参与者的系统。 TPL数据流还被设计用来和C#与Visual Basic中的新异步语言功能集成——我在之前的博客中写过的。

下面,你们将看到一个在C#中使用数据流块来安全异步有效地处理进入请求的“agent”示例。

Dryad – 支持数据密集型应用程序

作为微软研究院的先锋,Dryad, DSC和DryadLINQ是一系列在Windows HPC Server 2008 RC Service Pack 1上支持数据密集型计算的应用程序。 这些技术实现在很多不同类型的应用程序中——包括数据挖掘应用程序、图像和流处理和各种不同的极大的科学计算——高效率地处理大量数据。Dryad和DSC在群集上运行以支持数据密集型计算并管理分布在群集中的数据。而DryadLINQ则允许开发人员使用熟悉的LINQ编程模型创建数据密集型和计算密集型.NET应用程序。

下面你能看到使用Dryad来加载文本日志数据的代码。 那个数据被合并到集群中处理, 然后结果会显示回客户端:

ublic static IEnumerable GeoIp(string logStream, string geoStream)
{
DistributedData logLinesTable = DistributedData.OpenAsText(logStream);
DistributedData geoIpTable = DistributedData.OpenAsText(geoStream);

// Join the two tables on the common key (IP Address)
IEnumerable joined = logLinesTable.Join(geoIpTable,
l1 => l1.Split(‘ ‘).First(),
l2 => l2.Split(‘ ‘).First(),
(l1, l2) => l2).AsEnumerable();

return joined;
}

public static void Main()
{
// Load log and geo data into DSC
Console.WriteLine(“Loading data”);
File.ReadLines(“log.txt”).AsDistributed().ExecuteAsText(“hpcdsc://localhost/Samples/log”);
File.ReadLines(“geo.txt”).AsDistributed().ExecuteAsText(“hpcdsc://localhost/Samples/geo”);

// Run the query
Console.WriteLine(“Running query”);
IEnumerable results =
GeoIp(“hpcdsc://localhost/Samples/log”, “hpcdsc://localhost/Samples/geo”);

// Print out the results
Console.WriteLine(“Displaying results”);
foreach (var entry in results) Console.WriteLine(entry);
}


Sho – 赋予你灵活开发原型进行数据分析的权利

也是始于微软研究院, Sho对从事技术计算工作的人提供了一个作数据分析和科学计算的交互式环境。 它让你通过.NET库文件无缝连接到写在IronPython中的脚本,实现快速敏捷的原型开发。 环境包括针对线性代数和数据可视化的强大而高效的库文件,二者都可以通过任何.NET 语言使用, 是一个可以实现快速开发的功能齐全的交互外壳程序。Sho自带处理大规模并行计算的程序包(通过Windows HPC Server和Windows Azure)、统计与优化、以及一些能让你易于创建和共享自己的程序包的扩展包机制。

如你在下图所见,Sho提供一个允许你即时以文本和图形方式呈现的编写和查看代码的方式。

试试看吧

我们下一步是往DevLabs添加一个pre-beta状态里的额外的技术计算项目,从而能更早地得到你们的反馈和意见,帮忙指导这些技术往正确的方向发展。 期待能收到你们的反馈。

Namaste!