Gpu和fpga組件之間的直接通信的制作方法
【專利說明】GPU和FPGA組件之間的直接通信
[0001] 背景
[0002] 計算設備的用戶已經經歷了關于時鐘縮放的困難,并且開發者和用戶由此已經在 主流中探索并行計算。多核中央處理單元(CPU)、圖形處理單元(GPU)和現場可編程門陣列 (FPGA)越來越多地被用于計算需求。
[0003] 概述
[0004] 根據一個大體方面,系統可包括位于計算設備上的一個或多個處理器以及存儲可 由這一個或多個處理器執行的指令的至少一個有形計算機可讀存儲介質。可執行指令可被 配置成使得計算設備獲得標識用于直接訪問現場可編程門陣列(FPGA)的存儲器的地址的 虛擬指針。此外,計算設備可啟動虛擬指針到與FPGA外部的圖形處理單元(GPU)相關聯的 GPU驅動程序的傳輸。此外,計算設備可經由FPGA外部的總線接口啟動GPU和FPGA之間數 據的直接傳輸,而無需作為中間操作來將數據存儲在中央處理單元(CPU)的存儲器中。
[0005] 根據另一方面,發起對在圖形處理單元(GPU)和現場可編程門陣列(FPGA)之間傳 輸數據的請求。數據可經由FPGA外部的總線接口在GPU和FPGA之間被直接傳輸,而無需 作為中間操作來將數據存儲在中央處理單元(CPU)的存儲器中。
[0006] 根據另一方面,系統可包括圖形處理單元(GPU)和現場可編程門陣列(FPGA)。系 統還可包括總線接口,該總線接口在FPGA的外部并被配置為直接在GPU和FPGA之間傳輸 數據,而無需作為中間操作來將數據存儲在中央處理單元(CPU)的存儲器中。
[0007] 提供本概述是為了以簡化的形式介紹將在以下詳細描述中進一步描述的概念選 擇。本概述并不旨在標識所要求保護主題的關鍵特征或必要特征,也不旨在用于限制所要 求保護主題的范圍。一個或多個實現的細節在以下的附圖和說明書中闡述。其他特征將從 說明書和附圖以及權利要求書中顯而易見。
[0008] 附圖
[0009] 圖1是用于GPU和FPGA組件之間直接通信的示例系統的框圖。
[0010] 圖2是用于GPU和FPGA組件之間間接通信的示例系統的框圖。
[0011] 圖3是用于GPU和FPGA組件之間直接通信的示例系統的框圖。
[0012] 圖4是用于GPU和FPGA組件之間直接通信的示例系統的框圖。
[0013] 圖5是示出用于GPU和FPGA組件之間直接通信的示例系統的示例操作的流程圖。
[0014] 圖6是示出用于GPU和FPGA組件之間直接通信的示例系統的示例操作的流程圖。
[0015] 圖7是示出用于GPU和FPGA組件之間直接通信的示例系統的示例操作的流程圖。
【具體實施方式】
[0016] I.介紹
[0017] 多核中央處理單元(CPU)、圖形處理單元(GPU)和現場可編程門陣列(FPGA)可被 用于填充時鐘速率和預期性能增加之間遺留的計算間隙。這些組件類型中的每一個可提供 稍微不同的屬性。例如,CPU可向編程和本地浮點支持的容易性提供復雜且麻煩的存儲器 系統以及顯著的操作系統開銷。
[0018] 例如,GPU可向細粒度單指令、多數據(SMD)處理和本機浮點提供流存儲器體系 架構和更困難的編程環境。例如,FPGA可提供處理、控制和對接方面的有利的靈活度,同時 伴有稍微麻煩的浮點支持的更高的編程困難和更低的時鐘速率。
[0019] 圖形處理單元(GPU)已經被用于圖形應用許多年,諸如游戲和計算機輔助設計。 近來,GPU已經被用于其它任務,諸如圖形處理、搜索和其它更一般的應用。現場可編程門 陣列(FPGA)已經被用于各種專用計算任務。例如,雖然FPGA和GPU兩者均可被視為專用 處理器,但是每一方可在某些事物上比其它方更好地運作。由此,例如,在兩者之間能夠實 現直接通信路徑可以是有利的,該路徑允許每一方執行其最適應的任務,并接著將計算任 務轉交到另一方以供進一步處理。
[0020] 作為另一示例,在開發過程中算法從一方移植到另一方有些時候可以是期望的, 因為計算、金錢或其它壓力影響期望的實現。因此,能夠將數據直接從一方發送到另一方, 使得移植過程可被增量式地處理可以是有利的,從而允許算法部分地在FPGA上運行并部 分地在GPU上運行。
[0021] 例如,這個傳輸可基于將主個人計算機(PC)使用為用于數據的中間停止點來被 實現。然而,這種類型的傳輸可以是相對慢的、更資源密集的且可能不能擴展到較大的系 統。在此討論的示例技術可提供直接通信,而無需必須通過主PC的主存儲器。例如,用于 提供FPGA和GPU之間直接通信的技術可提供更低的等待時間傳輸、更高的帶寬傳輸和/或 更高的聚集系統帶寬。
[0022] 在此討論的示例實施例可提供用于直接在GPU和FPGA之間通信的能力。例如, GPU可使用PCIe (快速外圍部件互連)或快速PCI來與FPGA直接通信,PCIe或快速PCI可 以是例如在PC平臺中提供高帶寬連接的總線接口。
[0023] II.示例操作環境
[0024] 在此討論的特征被提供為可用數據處理領域的技術人員所理解的多種不同方式 來實現,而不背離在此的討論的精神。這樣的特征被解釋為僅為示例實施例特征,并且不旨 在被解釋為限制到僅為那些詳細的描述。
[0025] 如進一步在此討論的,圖1是用于GPU和FPGA組件之間直接通信的系統100的框 圖。如圖1中顯示的,系統100可包括位于計算設備上的一個或多個處理器。系統100可包 括存儲可由一個或多個處理器執行的指令的至少一個有形計算機可讀存儲介質。系統100 可包括至少一個中央處理單元(CPU) 102。
[0026] 系統100可包括圖形處理單元(GPU) 104和現場可編程門陣列(FPGA) 106。系統 100還可包括總線接口 108,該總線接口 108在FPGA 106的外部并被配置為直接在GPU 104 和FPGA 106之間傳輸數據,而無需作為中間操作來將數據存儲在中央處理單元(CPU)的存 儲器110中。根據一示例實施例,總線接口 108可包括快速外圍部件互連(PCIe)接口。根 據一示例實施例,傳輸數據可包括經由PCIe交換機在GPU 104和FPGA 106之間直接傳輸 數據。例如,PCIe交換機可被包括在PCIe接口中。
[0027] 根據一示例實施例,FPGA驅動程序112可被配置成生成標識用于直接訪問FPGA 106的存儲器116的地址的虛擬指針114。例如,存儲器116可包括位于FPGA 106外部的一 個或多個存儲器設備、可內部地位于FPGA 106上的存儲器或它們的任意組合。與GPU 104 相關聯的GPU驅動程序118可被配置成經由與在FPGA 106外部的GPU 104相關聯的應用 編程接口(API) 120來獲得虛擬指針114。
[0028] 在這個上下文中,"虛擬指針"可指可表示電子設備中的地址的值。虛擬指針可被 生成為這樣一種表示,并可被解釋成(例如,用于可例如基于虛擬存儲器安排被存儲在不 連續的塊中的數據的)一個或多個物理地址。
[0029] 與GPU 104相關聯的API 120可被配置成基于虛擬指針114來生成FPGA的存儲 器116中的一個或多個位置的一個或多個物理地址122。
[0030] 根據一示例實施例,數據可基于FPGA 106中的存儲器116中的一個或多個位置的 一個或多個物理地址122被從GPU 104的存儲器124傳輸到FPGA 106的存儲器116。根據 一示例實施例,數據可基于FPGA 106中的存儲器116中的一個或多個位置的一個或多個物 理地址122被從FPGA 106的存儲器116傳輸到GPU 104的存儲器124。
[0031] 例如,存儲