Konsep Inti
本文提出了Intel SHMEM,一個支持在SYCL環境中使用OpenSHMEM通信API的C++軟件庫。Intel SHMEM實現了分區全局地址空間(PGAS)編程模型,並包括了當前OpenSHMEM標準中的大部分主機發起的操作。它還包括了可直接從GPU內核調用的新的設備發起的操作。
Abstrak
本文介紹了Intel SHMEM的設計和實現。Intel SHMEM旨在為Aurora超級計算機系統和其他緊密耦合的GPU系統提供低延遲和高吞吐量的通信。
Intel SHMEM的核心功能包括:
- 支持OpenSHMEM 1.5標準兼容的主機和設備API,包括點對點遠程內存訪問(RMA)、原子內存操作(AMO)、信號、內存排序和同步操作。
- 支持與OpenSHMEM 1.5 teams API一致的集體操作。
- 支持SYCL工作組和子組級別的RMA、信號、集體、內存排序和同步操作的設備API擴展。
- 提供一組完整的C++函數模板,取代了當前OpenSHMEM規範中的C11通用例程。
Intel SHMEM的實現利用了Aurora系統的Xe-Link網絡,在主機和設備之間進行高效的通信。它還提供了一個主機代理線程,用於支持跨節點的GPU發起的操作。此外,Intel SHMEM還包括了一些針對GPU的擴展API,以更好地利用GPU的並行計算能力。
本文還提供了Intel SHMEM在RMA和集體操作微基準測試中的性能評估結果,展示了其在延遲和吞吐量方面的優勢。
Statistik
在小到中等消息大小(最多4KB)的情況下,Intel SHMEM的性能優於L0基準測試ze_peer,因為GPU上的Intel SHMEM代碼可以直接執行加載或存儲到目標PE,從而避免了GPU複製引擎的啟動延遲。
對於大於4KB的消息大小,基於複製引擎的傳輸表現更好。
對於1MB以上的消息大小,Intel SHMEM的性能與L0相當。
對於工作組級別的Put操作,隨著工作項數量的增加,性能可以得到提高,因為可以利用更多的資源。
對於集體操作fcollect_work_group,對於小到中等數量的元素(約1K以下),內核發起的直接存儲操作優於主機驅動的複製引擎傳輸。對於更大的元素數量,選擇反向卸載以使用複製引擎傳輸更好。