在高效能计算 (HPC) 的领域,效能可携性是许多开发者所追求的目标。然而,随着计算平台的多样化,这一目的却面临着重重挑战。效能可携性并不仅仅是让一个应用程式在不同的硬体平台上运行,更重要的是如何在不妥协性能的情况下保持其兼容性。迄今为止,却没有通用的标准来量化和评估效能可携性,这使得开发者在设计软体时面临困难。
效能可携性代表着一种假设,即开发者的单一代码库将能够在新架构上表现良好,并在各种尚未测试的当前架构上保持可接受的性能极限。
效能可携性的定义与测量方法存在着激烈的争论。有些人认为它主要是应用程序的可携性,而其他人则坚持认为源代码的可携性才是关键。尤其是在当前硬体日新月异的情况下,开发者需要考虑如何让自己的产品能够在多种平台上持续运行。美国能源部的超级计算计画(ECP)强调了这一点,因为他们需要针对不同的硬体架构创建兼容的计算生态系统。
人们普遍认为「一个代码在多个架构上能够表现良好,这就是效能可携性。」
在评估效能可携性时,开发者通常会考虑两个因素:可移植性与性能。可移植性可以通过检视不同架构上所使用的代码行来测量,而性能则可以通过比较平台优化版本与可携版本的运行结果来确定。尽管拥有这些测量方法,业界依然缺乏透明的标准,而这使得开发者无法清楚地掌握如何达到最佳的效能可携性。
在2016年的DOE(美国能源部)可携性会议上,参会者就性能可携性展开了激烈的辩论。许多著名的开发者和科学家出席了此次会议,互相分享了对性能可携性的新见解和需求。值得注意的是,存在一个观点认为,未来的平行程式设计模型所提供的效能可携性将比应用程序本身所能提供的要更为显著。
正如会中所提到的,「一个代码在应用团队认为其性能可携时,就是性能可携的。」
面对多样化的硬体平台,开发者需要寻找合适的框架来支持他们的代码。一些知名的框架如OpenCL、SYCL和OpenMP等都声称能够促进功能性的可携性。这些框架支持多平台的并行编程,使开发者能在多个语言中进行编程。然而,除了框架之外,还存在一些非框架解决方案,比如自调整与特定领域语言,它们同样能够协助提升性能可携性。
总之,效能可携性问题在高效能计算中显得愈加重要,因为它直接影响到开发者的工作效率与应用的持续发展。随着未来计算需求的变化,以及计算科技的快速进步,开发者该如何适应并面对这些挑战呢?