简单聊聊多目标优化(MOPT)
我们可以在自动驾驶汽车和5G通信等领域看到,平台处理元件(PE)数量在迅速增加。尽管软件专业人员已经习惯在一两个或少数核心的情况下写代码,现在游戏规则已经发生了变化。例如,英特尔的许多集成核心架构(Integrated Core Architecture)包含多达78个内核,Nvidia Tegra XI拥有多达260个内核,而Adapteva的Epiphany-V 拥有1024个内核(!)。未来的系统将是具有数千个核心的平台,这带来了许多新的挑战,因此理解你的系统变得无比重要。在多处理器片上系统(MPSoC)平台上映射并行应用程序,是指将并行应用程序的不同任务分配到PE上。通常这是针对特定目标进行的映射,例如满足时限、提高性能、降低能量/功耗以及优化内存容量。基于目标的映射被认为是NP完全问题(NP-completeness)。这意味着在多项式时间内找到一个最优映射解的方法似乎是不太可能的。此外,映射搜索空间(MSS,mapping search space)会随着MPSoC平台以及并行应用程序复杂性的增加而出现呈指数增长。因此,人们开发了不同的映射算法和启发式算法(heuristics algorithm)来探索MSS,希望能找到够满足映射目标所需的过程。
越来越多的应用程序需要同时对多个目标进行优化,这被称为多目标优化(MOPT, multi-objective optimization)。通常,这些目标本质上可能是矛盾的,针对优化目标的多种解决方案可能导致不同的结果。在这种情况下,多目标优化可以产生一组最优解,是不同目标值之间的权衡(trade-off)的结果。这个解决方案集被称为帕累托最优集(Pareto optimal set)或简称为帕累托解(Pareto solutions)。
找到帕累托最优解的一种方法是分析MSS中存在的每个可能的映射解。例如,通过使用穷举搜索(exhaustive search)或强力搜索(brute force search)技术。但这会耗费漫长的探索时间和大量的资源,所以这条路通常是不通的。还有一种办法,就是使用多目标进化算法(MOEA, multi-objective evolutionary algorithms)。 MOEAs是一种元启发式算法(meta-heuristics),能够在显着缩短的探索时间内提供近似最优的解决方案。
时间有限,这里不展开说了,有机会下次再聊聊SLX多目标优化(MOPT)这个工具是如何使用多目标优化启发式算法来实现优化多核设计的,感兴趣的朋友可以先在这个资源库里看看:链接。
页:
[1]