【发布时间】:2017-07-14 06:11:51
【问题描述】:
我有大量的独立任务要运行,我希望将它们分布在一个并行系统上,以便每个处理器执行相同数量的工作,并最大限度地提高我的效率。
我想知道是否有一种通用方法可以找到解决此问题的方法,或者可能只是解决我的确切问题的好方法。
我有 T=150 个要运行的任务,每个任务花费的时间是 t=T。即task1用1个单位时间,task2用2个单位时间……task150用150个单位时间。假设我有 n=12 个处理器,假设开始和清理任务所需的时间可以忽略不计,那么在工作人员之间分配工作负载的最佳方法是什么?
【问题讨论】:
-
你使用什么语言?
-
我认为这是装箱问题 不是吗? en.wikipedia.org/wiki/Bin_packing_problem 我想你可能从最长的工作开始,然后逐渐缩短工作,否则你可以完成所有工作,除了一个,结果发现那是最长的。
-
将任务 1 和 150 分配给处理器 1(它获得 151 个工作时间单位),将任务 2 和 149 分配给处理器 2(它获得 151 个工作时间单位),... 12 个处理器获得其中的 6 个块,剩下 6 个大致相等的任务(任务 73 - 78)要完成。将每个分配给一个处理器。这不是所说的垃圾箱包装问题,或者如果是,它是一个非常容易解决的问题。
-
@HighPerformanceMark 很酷的解决方案!高斯也做了类似的事情……mathcentral.uregina.ca/qq/database/qq.02.06/jo1.html
标签: optimization parallel-processing numbers task processing-efficiency