在较高或较低级别并行化任务的利弊

时间:2019-06-14 13:06:44

标签: python parallel-processing

我有一个Cherrypy服务器。该服务器的某些工作是处理数据(简称为 BigCalculation ),将结果返回给客户端。原始数据是一个numpy数组(3暗),最终可能接近1Gb。如果性能良好,它甚至可能会变得更大-因此,我所做的一切都需要可扩展。

通常返回给客户端的 BigCalculation 结果是一个2d图像,对应于切片多维数据集和在该切片上计算一些指标的不同方法。现在,所有这些操作都是作为较小数据多维数据集上的演示按顺序完成的,但是现在我需要在一定程度上进行并行处理。

我正在考虑一些可以继续进行的方法。从概念上讲,它们的范围从低级别的并行性到更高的级别:

  • 类似于Intel的python distribution。这确实是低级的,但是假设我的代码在其发行版上可以正常工作,那么我基本上不需要执行任何操作。
  • 在数据级别:我可以将初始多维数据集拆分为要并行处理的部分
  • 在方法级别:一些这样的 BigCalculation 可能同时进行。因此,我可以在其自己的过程中旋转每个新的 BigCalculation
  • 服务器级别:我还认为我可以剥离一个仅进行计算的子服务器。公开给用户的服务器实例仅处理请求,而任何要做服务器压缩的内容实际上都转发给计算服务器。

我的问题:尝试确定首先实现并行处理的级别时,是否有最佳方法/做法?我会先实现较低级别的并行性(例如英特尔的数据切片或切片我的数据立方体)还是先实现较高级别的(例如将每个调用分别旋转到 BigCalculation )更好?还是主要是在特定情况下要做出决定,而对于这个主题却没有真正的一般建议?

0 个答案:

没有答案