加速分子建模

即使是使用高階開發工作流程,高效能運算工作負載也能在 FPGA 實現最佳效能。

概覽:

  • Institute for Advanced Chemistry of Catalonia (CSIC) 側重於開發新技術,改善分子結構領域。

  • 驗證分子結構的迭代法,難題在於驗證階段需要運算。CSIC 的科學家於是向 Barcelona Supercomputing Center 和他們的 High Performance Computing 團隊尋求協助。BSC 的高效能運算團隊確定,FPGA 是最合適的 CSIC 演算法。

author-image

作者

高效能運算(HPC)工作負載通常預設為目標 CPU 或 GPU。然而,如今有強大的 Intel® FPGA 加速器可供使用,情況不同了。如這個案例研究所示,即使是使用高階開發工作流程,高效能運算工作負載也能在 FPGA 實現最佳效能。這個案例研究說明了應用的詳細資料、工具流程,以及移轉至最新 Intel Agilex® 7 FPGA 技術的過程。其他研究人員可以在自己的高效能運算應用參考這個資訊。

簡介

分子建模這項工具在現代科學研究的重要性日益增加。科學家借助運算法,可以建立複雜的分子模型,以及研究分子的特性與行為。然而,這類模型需要經過數十億次計算才能建立,研究人員必須克服運算挑戰,才能實現目標。

分子建模挑戰

Institute for Advanced Chemistry of Catalonia (CSIC) 側重於開發新技術,改善分子結構領域。分子結構的知識可用於生物醫學,開發新藥物和治療方法。開發運算分子模型及驗證其結構的技術已廣為人知且被理解。

驗證分子結構的迭代法包括下列步驟:

 

  • 建立運算分子模型。
  • 產生分子運算光譜。
  • 將運算光譜與分子已知的分析光譜進行比較。
  • 如果光譜相符,代表分子結構一模一樣。
  • 如果光譜不相符,則改良運算模型,產生新的光譜。

 

這個方法的挑戰在於,驗證階段需要驗算。

若要使用 Intel® Xeon® Gold 處理器(3.2 GHz、一個核心、一個執行緒)分析有 200 萬個資料點的簡單分子,運算耗時 9644.544 秒或 2 小時 41 分鐘。這個速度每個工作日只能進行大約 3 到 4 次迭代,大幅影響開發時間。

這顯然屬於高效能運算問題,CSIC 因而向 Barcelona Supercomputing Center (BSC) 尋求協助。

高效能運算:FPGA 的絕配

BSC 以世界級的運算資源聞名,尤其是配備 CPU、GPU 與 FPGA 的異質資料中心架構。他們知道 CPU 速度太慢,因此設法確定究竟是 GPU 還是 FPGA 比較符合他們的需求。

BSC 團隊於是仔細檢查寫成了 OpenCL 核心的演算法。

關鍵的演算法特點:

演算法同時使用單精度與雙精度浮點,而且獲得 GPU 與 FPGA 高效支援。

演算法有巢狀 for 迴圈,上限或潛在上限為 N,其中 N 是 200 萬。

使用 GPU 時,必須將所有的 for 迴圈展開、產生大量的硬體、而且需要大型 GPU,因而導致功耗高。

使用 FPGA 是效率更高的實作選項嗎?使用 FPGA 是否對開發工作負載形成挑戰?

FPGA 在高效能運算中的優勢

FPGA 可處理 GPU 最佳化範圍以外的工作負載。雖然 FPGA 是使用自訂硬體實作演算法,但現今的選項皆包含高階工具流程,例如為軟體開發者締造 FPGA 效能的 oneAPI。

FPGA 的獨特功能包括:

 

  • 效能:FPGA 有完全彈性的架構,是演算法的絕配。也就是說,演算法不必跟著 CPU 與 GPU 的固定架構調整。記憶體可以直接處理傳入的資料,不必使用 CPU。
  • 可編程能力:FPGA 工作負載可即時變更,以及利用最新的演算法發展更新。它們可以同時執行工作負載,而且利用其豐富的 I/O 資源,可以將大型工作負載分散於多個 FPGA。
  • 生產力:FPGA 可透過 Open FPGA Stack (OFS) 提高生產力,輕輕鬆鬆便可在現有的伺服器上安裝 OFS 卡,以及設定系統。
  • 用電:用電量極為關鍵。FPGA 可以用比 CPU 和 GPU 更少的時脈週期和更低的時脈頻率執行,進而減少用電量及降低成本。
  • 價格:FPGA 加速卡有許多選項可供選擇。相較於更新現有的解決方案,透過安裝 FPGA 卡大幅提高效能,可能更符合成本效益。

 

BSC 的高效能運算團隊確定,FPGA 是這個演算法的絕配。

舊式加速器

BSC 的高效能運算加速團隊已經取得兩個 Intel® Programmable Acceleration Card (Intel® PAC) 解決方案:

 

 

他們使用現有的 OpenCL 演算法,在 Intel PAC 計算出運算光譜。

下表列出結果,總結如下:

 

  • 相較於 CPU 結果,Intel PAC 搭配 Intel Arria 10 GX FPGA 產生的初步結果顯示,速度加快了 17.8 倍,核心執行時間大約由 10K 秒縮短至 540.457 秒。
  • BSC 利用 FPGA 可調整架構的優勢,能夠將 64 位元雙精度浮點累加器轉換為 40 位元整數資料類型,而且精度損失在可接受範圍之內。以 FPGA 特有的任意精度資料類型取代浮點計算,將處理時間進一步縮短為 274.02 秒。
  • 利用以 Intel® Stratix® 裝置為基礎的 Intel® FPGA PAC D5005,進一步將處理時間縮短為 81 秒。

雖然 FPGA 的結果令人印象深刻,但卻是利用兩種舊世代 FPGA 技術打造而成,並且採用 16 年前首度引進的 OpenCL。BSC 團隊想知道,是否能用最新的工具與晶片,締造甚至更優異的效能。

新式資料中心的彈性組合式解決方案

新式晶片:Intel Agilex® FPGA

Intel 最新的 FPGA 技術是 Intel Agilex 7 FPGA。Intel Agilex 7 F-Series 旨在為各種應用提供高效能運算。其先進架構結合了 FPGA 與 CPU 的優勢,因此可提供高處理量與低延遲效能。

Intel Agilex 7 F-Series 的另一項優勢在於電源效率。它的設計採用先進的電源管理功能,既可減少用電量,還可維持高效能。Intel Agilex 7 F-Series 內的 FPGA 架構採用 10 奈米製程技術所打造,因此能以低功耗提供高效能運算。對於需要高效能運算,並且儘量減少功耗的應用,例如資料中心、邊緣運算與自動駕駛車,這種電源效率至關重要。

安全性也是任何現代資料中心的一大疑慮,而 Intel Agilex 7 F-Series 透過提供進階安全功能解決這個疑慮。它的設計採用嵌入式安全子系統,提供安全可靠的開機與執行階段安全性。它還有內建的硬體信任根,可確保系統的真實性。對於儲存敏感資料的應用,例如金融機構、政府機關以及醫療保健供應商,這些安全性功能是不可或缺的一環。

新式工具鏈:Intel® oneAPI Base Toolkit

Intel® oneAPI Base Toolkit (Base Kit) 這個軟體開發工具組,旨在簡化製作高效能跨架構應用程式的程序。它以 SYCL 為基礎,適用於各種處理器,包括 CPU、GPU、FPGA 與 AI 加速器。

SYCL(發音為「sickle」)是由 The Khronos Group 所維護的開放式標準。這個免版稅的跨平台抽象層,可讓開發者使用 ISO C++ 為異質處理器編寫程式碼。主機與核心程式碼皆可包含在同一個來源檔案內。

oneAPI 的主要優勢之一是簡化開發流程。透過 Intel oneAPI Base Toolkit (Base Kit),開發者不需要學習不同的程式設計語言,就能製作在不同架構執行的應用程式。也就是說,編寫一次程式碼,即可在不同的處理器上執行,節省大量時間與精力。

oneAPI 的跨架構相容性意味著,開發者能讓應用程式滿足未來需求,確保應用程式未來可以在各式各樣處理器上執行。開發者若希望製作可在不同類型硬體執行的應用程式,這點格外重要。因此,它非常適合 BSC 這類設施。

BSC 有疑慮

使用 Intel Agilex 7 裝置與 oneAPI,雖然可進一步改善分子建模的效率,但是挑戰也伴隨著這些改變而來:

OpenCL 原始碼必須移轉至 SYCL。移轉伴隨著哪些挑戰?

BSC 可能需要 Intel Agilex 7 FPGA 裝置,但裝置能輕鬆執行 FPGA 加速卡嗎?

程式碼移轉經證實易如反掌

BSC 的調查突顯出 SYCL 的兩個層面,能夠讓程式碼從 OpenCL 輕鬆移轉:

 

  • 移轉核心程式碼:SYCL 旨在與其他 C++ 程式庫和架構完美結合,輕鬆整合至現有 C++ 程式碼基底。
  • 更新主機程式碼:SYCL 提供高階 API,將平行程式設計的許多詳細資料抽象化。因此,開發者更容易就能馬上開始進行異質程式設計。

 

移轉核心程式碼

OpenCL 核心程式碼移轉後功能沒有任何變化。唯一的變更是為了因應 SYCL 語法:

 

  • OpenCL 核心宣告為配合 SYCL lambda 函數已經過調整。
  • 每個核心引數皆已新增緩衝區存取函數。

 

這些微調的理由很容易解釋。SYCL 透過 OpenCL 改善了異質程式設計,最主要一點就是主機與核心之間的介面規格更簡單也更穩定可靠。由於 SYCL 建置於 C++17,因此輕而易舉就能與其他用 C++ 編寫的程式碼整合。除了為了配合新的 SYCL 介面模型而改變語法,多數 OpenCL 核心程式碼移至 SYCL 時,幾乎不需要修改。

更新主機程式碼

原始的 OpenCL 主機程式碼經過大幅簡化,因為許多必須在 OpenCL 以明確方式管理的資料,都是由 SYCL 自動處理。原始程式碼包含 566 行,而更新後的 SYCL 程式碼則只有 285 行。

主機程式碼是指定主機與核心之間介面的地方,一如預期,多半都受到了移轉影響。然而,由於 SYCL 的介面規格與管理程式更為穩定可靠,因此 OpenCL 所需要的許多工作再也不必執行了。因此,最大的更新就是移除不再需要的宣告與變數。

BittWare 的加速卡

開發任何加速卡都需要時間與精力。更新並非只是在主機板新增元件就一蹴可幾的事。FPGA 裝置需要所有與工作負載相關的支援介面與通訊邏輯與 CPU 通訊。

現今的 FPGA 使得建置合適 PCIe 卡的效能需求大幅提升,過去著眼於訊號完整性(包括最新裝置上的 DDR5),現在則是講求散熱管理的各種考量。由於必須針對環境監測或卡片級安全性這類工作建置強固的工具套組,因此相較於區區幾年前,投資卡片設計的風險明顯升高。

為了解決這項開發挑戰,BSC 於是向 Intel Titanium 合作夥伴 BittWare(Molex 旗下企業)尋求協助。

BittWare 利用 Intel FPGA 設計及製造企業級加速產品。該公司是 BSC 原始 Intel PAC 卡的製造商,但目前則提供配備最新 Intel Agilex 7 裝置的 PCIe 卡。相較於設法自行建置卡,客戶將 BittWare(及其母公司 Molex)的優勢視為降低風險的一大因素。

這些高效能的可程式化加速器可讓客戶快速開發及部署 Intel FPGA 解決方案,而且風險。

BittWare 觀察到了幾個廣泛的市場領域:運算、網路與儲存裝置。適合 FPGA 的工作負載很多,例如自然語言辨識、推薦引擎、網路監視器、推論、安全通訊、分析、壓縮以及搜尋等。BittWare 提供了許多採用 Intel FPGA 的產品,除了傳統 RTL 之外還支援 oneAPI。

BSC 購買採用 Intel Agilex 7 A027 裝置的現成 BittWare IA-840f 卡,開發問題便可迎刃而解。

結果:非凡卓越

使用 Intel oneAPI Base Toolkit(基礎套件)與 BittWare IA-840f 加速卡的成果超乎預期。

 

  • 原始碼輕鬆順利便可移轉。
  • BittWare Acceleration 卡插入後便能搭配 oneAPI 使用。

效能改善

BSC 採用最新的工具與晶片,能夠重新產生先前的結果,然後加入下方表格中。演算法在新平台執行了 61 秒,而自訂的累加器版本則是 41 秒,相較於 CPU 改善 233 倍,相較於初始的 OpenCL Arria 解決方案則改善了 13 倍左右。

超越原始效能

FPGA 有別於 CPU 或 GPU,沒有固定的架構,不會限制開發者。這種適應能力讓開發者可以突破傳統思維。BSC 充分利用這項功能,透過降低累加的準確度改善演算法效能。

透過耗費時脈週期的迭代計算,可實現雙精度準確度,但是 FPGA 不侷限於標準的 C++/SYCL/OpenCL 資料類型。它可以建立任意寬度的資料類型。BSC 分析資料範圍後,確定 40 位元的整數累加器可以取代雙精度浮點累加器,而且結果準確度絲毫不打折扣。

這樣一來,開發者便可改善演算法,無須單純依賴晶片所提供的任何原始效能。更新程式碼並再次執行 oneAPI,建立出新實作後,驗證時間便縮短至只有 41 秒,相較於原始 CPU,速度加快了 233 倍。

結論

高效能運算的案例研究越來越多,顯見最新的 Intel Agilex FPGA 解決方案無論是工作負載效能,還是簡化開發的條件,皆足以和其他架構一較高下。此外,在評估效能或建立運算叢集方面,有現成的 PCIe 卡可供使用,因為意識到高效能運算異質解決方案的需求越來越高。

進一步瞭解