在高效能計算(HPC)領域,開發者對於「效能可攜性」的關注可謂近乎狂熱。這種現象源自於計算機程序和應用程式希望能在不同平台之間高效運行的需求。隨著技術的不斷發展和硬體架構的不斷變化,高效能計算應用程序的耐久性與相關性受到威脅,迫使開發者們不得不著眼於效能可攜性的提升。
效能可攜性指的是計算機程序和應用程式能夠在不同平台上有效運行的能力。開發者在開發效能可攜性的應用時,期望可以支持多種平台,同時不影響性能,儘量減少平台特定的程式碼。
隨著硬體多樣性的增加,開發能夠在各系列機器上運行的軟體已成為延續應用程序生命力的必要條件。根據2016年的美國能源部(DOE)性能可攜性會議,業界普遍共識認為,效能可攜性可被解讀為“在多個硬體平台上運行同一應用程序的能力,並在這些平台上達到某種程度的性能。”
例如,英特爾的約翰·佩尼庫克在同次會議上提到,“一個應用程序如果能夠在各平台間達到一致的性能水平,那麼就可被視為具備效能可攜性。”這表示,所謂的可攜性不僅僅關乎應用程序本身,更關乎源代碼的可攜性。
目前尚未有一個公認的衡量效能可攜性的方法,各個團隊可能會依據自己的標準來定義這一概念。
如何準確量化效能可攜性是一個具挑戰性的問題,主要取決於兩個因素。首先是可攜性,可以通過在多種架構上使用的總程式碼行數與專為單一架構編寫的總程式碼行數進行比較來衡量。其次是性能,通常是比較針對特定平台的最佳化版本和可攜版本之間的性能。
目前,尚無通用的標準來衡量究竟什麼才能被稱為效能可攜的代碼或應用程序。這種界定的模糊性使得不同團隊的評估標準不盡相同。據2016年會議中的一位發言者指出,效果可攜性的某個項目是否被視為可攜性,完全取決於開發團隊的看法。
為了幫助程序員實現效能可攜性,目前有多種編程應用程序和系統能夠達成這一目的。諸如 OpenCL、SYCL 和 Kokkos 等編程框架,聲稱能夠支持功能性的可攜性,方便多平台的並行編程。此外,還有一些非框架解決方案,例如自調整技術和專用語言,也可以提高效能可攜性。
開發者必須在不斷變化的計算架構中,探索能夠實現效能可攜性的方法,這不僅關乎當前的需求,更關乎未來的生存。
隨著計算技術的迅速發展,未來的效能可攜性可能會面臨全新的挑戰。業界專家認為,平行編程模型的演變將成為影響效能可攜性的關鍵因素。有研究提出,未來的平行編程模型將能在許多場合下提供比應用程序本身更高的效能可攜性。
這種變化代表著程序員在開發應用程序時所需要承擔的責任將逐步轉移至編程模型的實現及其底層編譯器,這將顯著改變程序開發的技術風格。這些探索和討論將不斷推動高效能計算的進步與發展。
那麼,在這種不斷變化的技術背景下,開發者應該如何有效地平衡平台特性與效能可攜性之間的矛盾呢?