在高效能計算 (HPC) 的領域,效能可攜性是許多開發者所追求的目標。然而,隨著計算平台的多樣化,這一目的卻面臨著重重挑戰。效能可攜性並不僅僅是讓一個應用程式在不同的硬體平台上運行,更重要的是如何在不妥協性能的情況下保持其兼容性。迄今為止,卻沒有通用的標準來量化和評估效能可攜性,這使得開發者在設計軟體時面臨困難。
效能可攜性代表著一種假設,即開發者的單一代碼庫將能夠在新架構上表現良好,並在各種尚未測試的當前架構上保持可接受的性能極限。
效能可攜性的定義與測量方法存在著激烈的爭論。有些人認為它主要是應用程序的可攜性,而其他人則堅持認為源代碼的可攜性才是關鍵。尤其是在當前硬體日新月異的情況下,開發者需要考慮如何讓自己的產品能夠在多種平台上持續運行。美國能源部的超級計算計畫(ECP)強調了這一點,因為他們需要針對不同的硬體架構創建兼容的計算生態系統。
人們普遍認為「一個代碼在多個架構上能夠表現良好,這就是效能可攜性。」
在評估效能可攜性時,開發者通常會考慮兩個因素:可移植性與性能。可移植性可以通過檢視不同架構上所使用的代碼行來測量,而性能則可以通過比較平台優化版本與可攜版本的運行結果來確定。儘管擁有這些測量方法,業界依然缺乏透明的標準,而這使得開發者無法清楚地掌握如何達到最佳的效能可攜性。
在2016年的DOE(美國能源部)可攜性會議上,參會者就性能可攜性展開了激烈的辯論。許多著名的開發者和科學家出席了此次會議,互相分享了對性能可攜性的新見解和需求。值得注意的是,存在一個觀點認為,未來的平行程式設計模型所提供的效能可攜性將比應用程序本身所能提供的要更為顯著。
正如會中所提到的,「一個代碼在應用團隊認為其性能可攜時,就是性能可攜的。」
面對多樣化的硬體平台,開發者需要尋找合適的框架來支持他們的代碼。一些知名的框架如OpenCL、SYCL和OpenMP等都聲稱能夠促進功能性的可攜性。這些框架支持多平台的並行編程,使開發者能在多個語言中進行編程。然而,除了框架之外,還存在一些非框架解決方案,比如自調整與特定領域語言,它們同樣能夠協助提升性能可攜性。
效能可攜性問題在高效能計算中顯得愈加重要,因為它直接影響到開發者的工作效率與應用的持續發展。隨著未來計算需求的變化,以及計算科技的快速進步,開發者該如何適應並面對這些挑戰呢?