我有一些矩阵乘法运算。我希望通过多个处理器并行执行这些操作。这可以使用MPI(消息传递接口)在高性能计算集群上完成。
同样,我可以使用多个辅助角色在云中进行一些并行化。有没有办法做到这一点。
答案 0 :(得分:2)
Azure SDK和工具版本1.2的6月发布现在支持.NET 4.您现在可以利用.NET 4中包含的并行扩展。这包括Parallel.ForEach()和Parallel.For() ,作为例子。
任务并行库(TPL)只能帮助您使用单个虚拟机 - 它不会帮助您跨多个虚拟机划分工作。因此,如果你设置一个2核,4核或8核的VM,你应该会看到并行执行会带来显着的性能提升。
现在:如果您想跨实例划分工作,则需要创建一种为每个实例分配工作的方法。例如:将一个辅助角色设置为协调器vm,将另一个辅助角色设置为 n 实例,作为计算vm。然后,让协调器vm枚举计算vm的所有实例并分割工作 n 方式。通过内部端点通过WCF调用向每个实例发送1 / n 工作消息。每个vm实例都处理每个工作消息(也可能使用TPL)并将其结果存储在blob或表存储中,可供所有实例访问。
答案 1 :(得分:0)
除了消息传递之外,Azure队列非常适合这种情况,因为每个辅助角色都可以从队列中读取要执行的工作而不是处理迭代。这是一种不那么脆弱的方法,因为随着您的扩展,工人数量可能会动态变化。