在当今高度互联的数位时代,效能可携性已成为软体开发的重要议题。效能可携性指的是应用程式能够在不同的硬体平台上有效运行的能力。开发者们在设计效能可携的应用程式时,需在不影响效能的前提下,支持多个平台,理想上还需将平台特定的代码减至最少。
在高效能运算(HPC)社群中,效能可携性被视为一项备受追捧的特性,然而目前尚未达成普遍或一致的测量标准。
效能的衡量方式有两种:一是比较经过优化的应用版本与其可携版本的性能;另一种则是根据执行期间所执行的浮点运算次数(FLOPs)和从主记忆体移动数据到处理器的频率,来比较应用的理论峰值性能。随着硬体多样性的增加,开发能够在广泛机器上运行的软体变得越来越关键,这会影响到应用的长期使用及更新的可能性。
效能可携性在业界被广泛提及,通常指的是:一是能在多个硬体平台上运行同一应用程式;二是在这些平台上达成某个性能指标。 2016年美国能源部(DOE)举办的效能可携性会议上,有专家表示,“应用程式若能在每个平台上相对于已知的最佳实现,达成一致的性能水平,则可被视为效能可携”。
Jeff Larkin(NVIDIA)直接指出,效能可携性就是「相同的源代码能在多种不同的架构上生产性地运行」。
因此,效能可携性在高效能计算社群中,成为重要的讨论话题。业界、学界与DOE国家实验室的合作伙伴们,从2016年起定期举办「性能、可携性与高效能计算生产力论坛」,旨在促进性能可携性的研究与开发。
随着计算架构持续演变,效能可携性依然具有重要的意义。开发者假设他们的单一代码库将能在更新的架构上,以及尚未测试的多种当前架构上,同样达成可接受的性能。随着硬体多样性增加,开发能够跨多个平台运行的软体将成为必要,这关乎应用的生命力及持续相关性。
美国能源部的Exascale Computing Project (ECP)强调,效能可携性是持续的关注点,特别是在多元平台的环境中。
自2016年来,DOE举办了多场研讨会来探讨效能可携性的日益重要性。 2017年的会议邀请了包括国家能源研究科学计算中心(NERSC)、洛斯阿拉莫斯国家实验室(LANL)等多个知名机构的参与。
要量化一个程式何时达成效能可携性,需考量两个因素。第一,效能可携性可以透过跨架构之间使用的代码行数与只针对单一架构的代码行数进行比较。第二,效能则可以通过多种方法进行测量。举例来说,将平台最佳化的应用版本与可携版本之间的性能进行对比,一个有效的测量方式是采用屋脊性能模型,这样可获得应用的理论峰值性能。
在2016年的会议上,就有参与者提到,“当应用团队声称其效能可携时,这段代码就算是效能可携的”。
近年来,研究指出,针对各种并行计算架构所撰写的可携性代码,需遵从开放的标准编程模型,并且在多个平台上同时开发与改善代码。这些策略能帮助开发者找到适合不同平台的参数。
市面上有多种程式应用及系统,旨在协助开发者实现效能可携性。一些常见的框架包括OpenCL、SYCL、Kokkos、RAJA等,这些编程介面支援多平台的多重处理编程。而一些非框架的解决方案则包括自调整及特定领域的语言。
随着技术的进步,我们是否已经准备好迎接一个全新的编程时代,让效能可携性的可能性跨越至全新的高度呢?