華文網

Google贊助的Lift語言,跨平臺並行的新方案


如果我們編寫的代碼可以在幾乎所有類型的硬體上運行高速平行算法,

而不需要為了在CPU或GPU上高性能運行而且手動調整,這將是一件多麼哈皮的事情?

上面這段話就是由愛爾蘭大學和明斯特大學的教授和學生在Google的支持下發起的一個新項目的承諾。他們一起提出了一種新的開源的函數式語言,稱為“Lift”,用於編寫在各種硬體上並行運行的演算法。

Lift為OpenCL創建代碼。OpenCL是一種程式設計系統,適用於CPU,GPU和FPGA等平臺,能為每種硬體類型自動生成優化。

OpenCL可以通過手動優化來改善不同環境中的性能,例如GPU與常規CPU的性能。不幸的是,這些優化在硬體類型之間是不可移植的,代碼必須分別針對CPU和GPU進行優化。在某些情況下,針對GPU優化的OpenCL代碼甚至不會在CPU上運行。更糟糕的是,有關的優化對於手動處理來說是很乏味的。

Lift是為了解決這個問題。Lift是所謂的“中間語言”或IL。 根據一份論文的描述,Lift旨在允許程式師通過映射到OpenCL概念的高級抽象來編寫OpenCL代碼。使用者也可以手動聲明函數,這些函數用“在非陣列類型上運行的C語言的子集”來編寫。

當Lift代碼被編譯為OpenCL時,它將通過反覆運算出多種可能的代碼版本,然後測試其實際性能,從而實現自動優化的目的。這樣,對於給定的硬體而言,

並沒有在抽象層面實現優化。其性能取決於演算法層面。

使用給定演算法處理多個硬體體系結構的一個優點是,允許相同的分散式應用程式在更廣泛的硬體上運行,並充分利用異構體系結構。如果你有一個具有CPU,GPU和FPGA硬體或兩種不同類型GPU混合的系統,則相同的應用程式理論上可以同時利用所有這些資源。最終的結果是更容易部署,因為它不限於任何一種設置。

Lift語言官網:http://www.lift-project.org/