1. 程式人生 > >揭開Altera公司支援OpenCL的設計工具的神祕面紗

揭開Altera公司支援OpenCL的設計工具的神祕面紗

將程式中處理負荷較大的工作分配給加速器LSI的“異構計算(Heterogeneous Computing)”將踏出嶄新的一步。美國Altera公司將於2013年內開始面向普通使用者提供可自動由按照異構計算標準規格“Open-CL”編寫的程式生成FPGA專用電路的工具“Altera SDK forOpenCL”。

  將微處理器(CPU)、圖形處理器(GPU)及訊號處理器(DSP)等結合在一起,並將這些處理器當做加速器使用的環境一直在不斷完善。具體而言,半導體廠商主導成立的業界團體Khronos Group制定了OpenCL標準,GPU廠商美國英偉達提供了軟體開發及執行環境“CUDA”。美國英特爾也於2012年11月釋出了配備眾核型處理器的加速器板卡“Xeon Phi”(開發程式碼名:KnightsCorner)的首款產品。按照用途使用不同架構處理器的異構計算正在穩步普及。SDK for OpenCL支援的FPGA板卡如下圖,Nallatech公司的產品(上)和BitWare公司的產品(下)

  SDK for OpenCL支援的FPGA板卡如下圖,Nallatech公司的產品(上)和BitWare公司的產品(下)

  由程式生成電路

  Altera的SDK for OpenCL與傳統工具的不同之處是,使用者開發的程式並不是在固定架構處理器上執行的,而是由這些程式生成FPGA上的邏輯電路。在處理能力及功耗等方面,有望獲得與製作專用硬體時接近的效能。

  具體而言,可將按照OpenCL標準開發的程式中的加速器用程式(在OpenCL中稱為“核心”程式)轉換成FPGA上的邏輯電路,並將其作為FPGA的配置資料輸出(圖1)。執行時,主機端的程式會通過OpenCL用執行庫,要求已被寫入這些配置資料的FPGA進行核心處理。

  該工具的最大優點是,程式設計師可在不具備硬體設計知識的情況下生成FPGA的配置資料。使用以前提供的開發工具,也能將以C語言編寫的程式轉換成FPGA上的邏輯電路。但是,要讓邏輯電路完成資料處理工作,需要由CPU通過某些通訊介面收發資料,而且為FPGA連線外部儲存器的話,還必須設定儲存器控制器等。因此,程式設計師需要具備可設計具備各種外圍電路的系統LSI的知識。

  圖1 可自動由C語言程式生成FPGA內的電路

  圖1 可自動由C語言程式生成FPGA內的電路

  使用Altera“SDK for OpenCL”的設計流程。可將根據OpenCL的規定編寫的外部裝置用核心程式轉換成FPGA上的邏輯電路。

  追加固定的外圍電路

  Altera採用的方法是未降低FPGA本身所具備的靈活性,而是提高了方便性。SDK for OpenCL可在由核心程式轉換而來的邏輯電路上,自動追加用來與主機處理器通訊的PCI Express介面、外部儲存器控制器、內部互聯等固定電路(圖2)。由此,能夠以最終形成系統LSI的形式輸出配置資料。

圖2 自動追加介面電路  

  圖2 自動追加介面電路

  只將核心程式轉換成新的邏輯電路。關於用來和主機交換資料的介面電路、儲存器互聯電路等,均會自動追加固定電路。

  但是這樣做就無法修改電路,比如使用其他介面電路,或者採用不同的互聯電路等。目前支援的FPGA板卡也十分有限。可以說這套系統優先考慮的是為軟體開發者創造出可以使用FPGA的條件。

  如果軟體開發者預先按照OpenCL規格編好程式,就能輕鬆比較出“使用GPU還是FPGA作為加速器才能獲得高效能”等。OpenCL消除異構計算中程式與硬體架構的依賴關係的目標正在不斷實現。

  Altera公司已向參加優先體驗計劃的數十家企業提供了SDK for OpenCL。目前支援的是主機處理器使用x86架構CPU、以PCI Express介面與Altera公司的FPGA通訊的系統。

  2013年面向普通使用者提供時,Altera公司還計劃使其支援整合有CPU核心“Cortex-A9”和外部介面等外圍電路的“SoC FPGA”。SoC FPGA可利用Cortex-A9作為主機處理器,在FPGA區域構建加速器電路。其優點是,能夠利用比PCI Express頻寬大、延遲小的介面進行主機處理器和加速器電路之間的通訊。