这可能是一个微不足道的问题,但我被这个问题困住了。
假设我们有一个通用图:
每条边代表一个任务,每个顶点代表该任务的一个数据(因此每个任务使用两个顶点)。
当两个具有公共顶点的任务并行运行时,会损失一些计算时间,因为两个任务不能同时使用同一个顶点(一个必须等待)。
我正在考虑以下方法:
- 创建一个锁表,说明顶点是可以自由使用还是锁定。运行所有任务和每个任务将等待直到所需数据可用(也许将等待任务的优先级设置为低就足够了)。
- 选择没有公共顶点的最大边数(比贪心算法更好的方法?),然后在不锁定的情况下运行所有相应的任务。重复直到有剩余的边缘。
我不确定哪种方法更有效。任何想法/见解?我对并行编程完全陌生......