Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 如何通过合并任务来减少任务数量?_Algorithm_Graph_Parallel Processing_Graph Theory_Partitioning - Fatal编程技术网

Algorithm 如何通过合并任务来减少任务数量?

Algorithm 如何通过合并任务来减少任务数量?,algorithm,graph,parallel-processing,graph-theory,partitioning,Algorithm,Graph,Parallel Processing,Graph Theory,Partitioning,我有一大组任务对象。 大多数任务都有父任务 -需要在之前执行。 大多数任务都有子任务 -只能在之后执行。 关键是,这样一组任务对象一旦创建,就会经常执行 并且应该通过并行执行任务来利用所有可用的CPU。 我遇到的问题是,与任务对象相关联的工作量通常不是太小-调度代码只处理自身-要完成的实际工作不会显示在分析结果grin中。 任务对象确实提供了成本函数! 我在考虑创建另一组任务对象, 每个新任务对象都包含旧任务对象的集合。 这些新任务对象引用的父对象和子对象当然也应该是新任务对象。 这将通过降低并

我有一大组任务对象。 大多数任务都有父任务 -需要在之前执行。 大多数任务都有子任务 -只能在之后执行。 关键是,这样一组任务对象一旦创建,就会经常执行 并且应该通过并行执行任务来利用所有可用的CPU。 我遇到的问题是,与任务对象相关联的工作量通常不是太小-调度代码只处理自身-要完成的实际工作不会显示在分析结果grin中。 任务对象确实提供了成本函数! 我在考虑创建另一组任务对象, 每个新任务对象都包含旧任务对象的集合。 这些新任务对象引用的父对象和子对象当然也应该是新任务对象。 这将通过降低并行性来减少必要的通信

显然,将旧任务组合成新任务的方法有好有坏

有人能想出这样做的算法吗?
我是在重新发明轮子吗?

您似乎对要执行的一组任务有一个偏序,其中前一个任务必须在后续任务运行之前完成

如果你对任务T2的执行成本有一个度量,并且它小于调度开销,那么你可以考虑优化它。 如果只有一个前置T1,只需将其代码插入前置T1的末尾,并将前置T1链接到T2的后续,或者只有一个后续T3,只需将其代码插入后续T3的开头,并将T2的前置链接到T3,则可以轻松地执行此操作

假设你有

     (;|  1 (<< 2 4)  a
          2 b
          3 (<< 4) c
          4 d )

一种偏序PARLANSE程序,任务1、2、3、4分别由工作a、b、d组成,任务1出现在任务2、4之前,任务3出现在任务4之前。滑稽的操作员受偏序混合序列的激励;和并行计算。有趣的是,作为一个整体,您的任务似乎太小,或者日程安排太复杂。并行执行某项任务只有在所花费的时间远远大于安排该任务的时间时才是有益的。手册第二章讨论了一种方法,见图2。下面的文章似乎完全符合问题描述:另一个完全适用于此的链接:
     (;|  1 (<< 4)  (;; a  b)
          3 (<< 4) c
          4 d )
     (;|  1 (<< 2 3)  a
          2 b
          3 (;; c d) )