在高效能计算(HPC)领域,开发者对于「效能可携性」的关注可谓近乎狂热。这种现象源自于计算机程序和应用程式希望能在不同平台之间高效运行的需求。随着技术的不断发展和硬体架构的不断变化,高效能计算应用程序的耐久性与相关性受到威胁,迫使开发者们不得不着眼于效能可携性的提升。
效能可携性指的是计算机程序和应用程式能够在不同平台上有效运行的能力。开发者在开发效能可携性的应用时,期望可以支持多种平台,同时不影响性能,尽量减少平台特定的程式码。
随着硬体多样性的增加,开发能够在各系列机器上运行的软体已成为延续应用程序生命力的必要条件。根据2016年的美国能源部(DOE)性能可携性会议,业界普遍共识认为,效能可携性可被解读为“在多个硬体平台上运行同一应用程序的能力,并在这些平台上达到某种程度的性能。”
例如,英特尔的约翰·佩尼库克在同次会议上提到,“一个应用程序如果能够在各平台间达到一致的性能水平,那么就可被视为具备效能可携性。”这表示,所谓的可携性不仅仅关乎应用程序本身,更关乎源代码的可携性。
目前尚未有一个公认的衡量效能可携性的方法,各个团队可能会依据自己的标准来定义这一概念。
如何准确量化效能可携性是一个具挑战性的问题,主要取决于两个因素。首先是可携性,可以通过在多种架构上使用的总程式码行数与专为单一架构编写的总程式码行数进行比较来衡量。其次是性能,通常是比较针对特定平台的最佳化版本和可携版本之间的性能。
目前,尚无通用的标准来衡量究竟什么才能被称为效能可携的代码或应用程序。这种界定的模糊性使得不同团队的评估标准不尽相同。据2016年会议中的一位发言者指出,效果可携性的某个项目是否被视为可携性,完全取决于开发团队的看法。
为了帮助程序员实现效能可携性,目前有多种编程应用程序和系统能够达成这一目的。诸如 OpenCL、SYCL 和 Kokkos 等编程框架,声称能够支持功能性的可携性,方便多平台的并行编程。此外,还有一些非框架解决方案,例如自调整技术和专用语言,也可以提高效能可携性。
开发者必须在不断变化的计算架构中,探索能够实现效能可携性的方法,这不仅关乎当前的需求,更关乎未来的生存。
随着计算技术的迅速发展,未来的效能可携性可能会面临全新的挑战。业界专家认为,平行编程模型的演变将成为影响效能可携性的关键因素。有研究提出,未来的平行编程模型将能在许多场合下提供比应用程序本身更高的效能可携性。
这种变化代表着程序员在开发应用程序时所需要承担的责任将逐步转移至编程模型的实现及其底层编译器,这将显著改变程序开发的技术风格。这些探索和讨论将不断推动高效能计算的进步与发展。
那么,在这种不断变化的技术背景下,开发者应该如何有效地平衡平台特性与效能可携性之间的矛盾呢?