组合判据
下面的问题可以帮助检查所进行的组合是否合理。它们都应得到肯定的回答。
(1)用增加局部性的方法实施组合是否减少了通信开销?若不是,能否换用别的组合策略以减少通信开销?
(2)如果使用了重复计算,是否权衡了其得失?
(3)如果组合已复制了数据,是否已证实这不会因限制问题尺寸和处理器数量的变化范围而牺牲了可扩展性?
(4)由组合产生的任务是否具有相似的计算和通信代价?
(5)任务数目是否仍然与问题尺寸成比例?若不是,算法是不可扩展的。
(6)如果组合减少了并行执行的机会,是否已证实现在的并发性仍能适应目前和将来的并行机?
(7)在不导致负载不平衡,不增加软件工程代价和不减少可扩展性的前提下,任务数能否再进一步减少?在其它条件相同时,创建较少的粗粒度任务的算法通常是高效的。
(8)如果是并行化现有的串行程序,是否考虑了修改串行代码的成本?如果此成本较高,应考虑别的组合策略。
|