2010-06-16 66 views
0

我有一些矩阵乘法操作。我想通过多个处理器并行执行这些操作。这可以在使用MPI(消息传递接口)的高性能计算群集上完成。Windows Azure:并行的代码

像智慧一样,我可以在云中使用多个工作角色进行一些并行化。有没有办法做到这一点。

回答

2

Azure SDK和工具1.2版的6月发行版现在支持.NET 4.现在,您可以利用.NET 4中包含的并行扩展。其中包括Parallel.ForEach()和Parallel.For( )作为例子。

任务并行库(TPL)只会帮助您在单个虚拟机上运行 - 它不会帮助您将工作分配到多个虚拟机上。所以如果你设置了一个2核,4核或8核虚拟机,你应该看到并行执行能够显着提升性能。

现在:如果您想要跨实例划分工作,您需要创建一种将工作分配给每个实例的方法。例如:将一个辅助角色设置为协调员vm,并将另一个辅助角色设置为n作为计算vm。然后,让协调员vm枚举计算vm的所有实例,并将工作划分为n方式。发送发送1/n工作消息通过内部端点通过WCF调用到每个实例。每个vm实例处理每个工作消息(可能还包含TPL),并将其结果存储在blob或表存储中,所有实例均可访问。

0

除了消息传递,Azure队列对于这种情况非常适用,因为每个工作者角色都可以从队列中读取要执行的工作,而不是处理迭代。这是一种不太脆弱的方法,因为在您扩展时,工作人员数量可能会动态变化。