本發明涉及異構計算領域,特別是涉及一種fpga異構計算加速系統及方法。
背景技術:
:隨著高性能計算和人工智能技術的快速發展以及大數據的爆發式增長,傳統處理器芯片在提升性能功耗比方面遇到了極大挑戰。fpga(field-programmablegatearray,現場可編程門陣列)芯片作為一種新型的處理器芯片介于專用芯片和通用芯片之間,具有一定的可編程性,在加速計算、壓縮、解壓縮、人工智能等領域都體現出了其高效性。一般的,fpga異構計算加速系統由cpu和fpga卡組成,其中,fpga卡是由fpga芯片、cpld(complexprogarmmablelogicdevice,復雜可編程邏輯器件)模塊、ddr4(doubledatarate4,ddr4存儲器)模塊、時鐘模塊、電源模塊等部件組成。在大規模的數據中心中,單2u服務器需要2~4張fpga卡,單個機柜需要80~160張fpga卡,整個數據中心可能需要上萬張fpga卡,且每張卡處于正常工作狀態的功耗一般在35w~75w之間。在現有技術中,當數據中心部署fpga加速計算系統時,會使系統中所有的fpga卡均處于正常工作狀態,而在一些特定的場景下,可能并不需要使用全部的fpga卡,也就是說,此時盡管有一部分fpga卡處于正常工作狀態,但是并未被使用,造成了大量資源浪費。因此如何提供一種解決上述技術問題的方案是本領域技術人員目前需要解決的問題。技術實現要素:本發明的目的是提供一種fpga異構計算加速系統,從兩方面節省了fpga卡的功耗,可以做到在特定的場景下根據實際需要投入使用不同數量的fpga卡,降低了整個系統的耗電量,節約了資源。本發明的另一目的是提供一種fpga異構計算加速方法。為解決上述技術問題,本發明提供了一種fpga異構計算加速系統,包括:現場可編程門陣列fpga芯片;控制模塊,用于確定待降低功耗的fpga卡,并生成與各個待降低功耗的fpga卡對應的控制指令;與所述fpga芯片一一對應的控制寄存器,用于接收與自身對應的所述控制指令,并根據所述控制指令控制與所述fpga芯片對應的電源模塊的開關狀態和/或控制所述fpga芯片的工作狀態。優選的,所述控制寄存器為復雜可編程邏輯器件cpld中的控制寄存器。優選的,所述控制指令為待工作指令,則所述控制寄存器具體用于將所述待工作指令賦予第一預設值以控制所述fpga芯片處于待工作狀態。優選的,該系統還包括存儲模塊,用于存儲數據,并進行數據傳輸。優選的,所述控制指令為睡眠指令,則所述控制寄存器用于控制與所述存儲模塊對應的電源模塊關斷,并將所述睡眠指令賦予第二預設值以控制所述fpga芯片處于睡眠狀態。優選的,所述控制指令為深睡眠指令,則所述控制寄存器用于控制與所述fpga芯片對應的電源模塊關斷,還用于控制與所述存儲模塊對應的電源模塊關斷,以控制所述fpga芯片處于深睡眠狀態。優選的,所述控制寄存器還用于控制fpga卡上其他各個模塊的上電順序。優選的,所述fpga芯片對應的電源模塊和所述存儲模塊對應的電源模塊之前,該系統還包括電壓轉換模塊,用于對總輸入電壓進行降壓處理,并將降壓后的總輸入電壓分別輸出至所述fpga芯片對應的電源模塊和所述存儲模塊對應的電源模塊。為解決上述技術問題,本發明還提供了一種fpga異構計算加速方法,包括:控制模塊確定待降低功耗的現場可編程門陣列fpga卡,并生成與各個待降低功耗的fpga卡對應的控制指令;與所述fpga芯片一一對應的控制寄存器接收與自身對應的所述控制指令,并根據所述控制指令控制與所述fpga芯片對應的電源模塊的開關狀態和/或控制所述fpga芯片的工作狀態。優選的,所述控制模塊生成并發送控制指令之前,該方法還包括:控制寄存器控制fpga卡上其他各個模塊的上電順序。本發明提供了一種fpga異構計算加速系統,包括現場可編程門陣列fpga芯片;控制模塊,用于確定待降低功耗的fpga卡,并生成與各個待降低功耗的fpga卡對應的控制指令;與fpga芯片一一對應的控制寄存器,用于接收與自身對應的控制指令,并根據控制指令控制與fpga芯片對應的電源模塊的開關狀態和/或控制fpga芯片的工作狀態。可見,在數據中心部署fpga加速計算系統時,應用本發明的方案,可以實現通過控制模塊對多張fpga卡的功耗進行控制,具體的,控制模塊控制待降低功耗的fpga卡中與fpga芯片對應的電源模塊關斷和/或控制fpga芯片處于不同的工作狀態,從兩方面節省了fpga卡的功耗,可以做到在特定的場景下根據實際需要投入使用不同數量的fpga卡,降低了整個系統的耗電量,節約了資源。本發明還提供了一種fpga異構計算加速方法,具有如上述加速系統相同的有益效果。附圖說明為了更清楚地說明本發明實施例中的技術方案,下面將對現有技術和實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。圖1為本發明所提供的一種fpga異構計算加速系統的結構示意圖;圖2為本發明所提供的一種fpga異構計算加速方法的流程圖。具體實施方式本發明的核心是提供一種fpga異構計算加速系統,從兩方面節省了fpga卡的功耗,可以做到在特定的場景下根據實際需要投入使用不同數量的fpga卡,降低了整個系統的耗電量,節約了資源。本發明的另一核心是提供一種fpga異構計算加速方法。為使本發明實施例的目的、技術方案和優點更加清楚,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。請參照圖1,圖1為本發明所提供的一種fpga異構計算加速系統的結構示意圖,包括:現場可編程門陣列fpga芯片3;具體的,設置于fpga卡內部的fpga芯片3具有高可靠性、開發方便、使用靈活、可在線編程等優點,控制模塊1通過對fpga芯片3進行控制即可改變fpga卡的工作狀態。控制模塊1,用于確定待降低功耗的fpga卡,并生成與各個待降低功耗的fpga卡對應的控制指令;具體的,位于服務器中的控制模塊1可以對數據中心中所有fpga卡的工作狀態進行控制,且控制模塊1與服務器中的pcie(peripheralcomponentinterconnectexpress,高速串行計算機擴展總線標準)連接器同各個fpga卡之間通過smbus協議進行通信,根據獲取的fpga卡的地址信息,確定待降低功耗的fpga卡,向其發送控制指令,為實現在特定場景下根據實際需要投入使用不同數量的fpga卡提供了基礎。與fpga芯片3一一對應的控制寄存器,用于接收與自身對應的控制指令,并根據控制指令控制與fpga芯片3對應的電源模塊的開關狀態和/或控制fpga芯片3的工作狀態。具體的,fpga芯片與控制寄存器2一一對應,當控制寄存器2接收到控制單元發出的控制指令時,一方面可以通過控制與fpga芯片3對應的電源模塊的開關狀態,來減少fpga卡的靜態功耗,另一方面可以通過控制fpga芯片3的工作狀態,來降低fpga卡的運行速度以降低fpga卡的功耗,此外,還可以通過對上述兩方面進行綜合控制來降低fpga卡的功耗,從而降低了整個系統的耗電量,節約了資源。本發明提供了一種fpga異構計算加速系統,包括現場可編程門陣列fpga芯片;控制模塊,用于確定待降低功耗的fpga卡,并生成與各個待降低功耗的fpga卡對應的控制指令;與fpga芯片一一對應的控制寄存器,用于接收與自身對應的控制指令,并根據控制指令控制與fpga芯片對應的電源模塊的開關狀態和/或控制fpga芯片的工作狀態。可見,在數據中心部署fpga加速計算系統時,應用本發明的方案,可以實現通過控制模塊對多張fpga卡的功耗進行控制,具體的,控制模塊控制待降低功耗的fpga卡中與fpga芯片對應的電源模塊關斷和/或控制fpga芯片處于不同的工作狀態,從兩方面節省了fpga卡的功耗,可以做到在特定的場景下根據實際需要投入使用不同數量的fpga卡,降低了整個系統的耗電量,節約了資源。在上述實施例的基礎上:作為一種優選的實施例,控制寄存器2為復雜可編程邏輯器件cpld中的控制寄存器。具體的,而采用本發明的方案,通過處于同一個fpga卡上的cpld中的控制寄存器2來控制fpga芯片3,可以保證控制的準確性,且cpld運行功耗很小,進一步降低了fpga卡的功耗。作為一種優選的實施例,控制指令為待工作指令,則控制寄存器2具體用于將待工作指令賦予第一預設值以控制fpga芯片3處于待工作狀態。具體的,通過控制模塊1控制待降低功耗的fpga卡處于待工作狀態,即保持fpga芯片3對應的電源模塊正常供電,并按照第一預設值控制fpga芯片3處于待工作狀態,通過降低fpga芯片3的運行頻率來降低fpga卡的功耗,此時fpga卡功耗在20w以下,其中,第一預設值為保證fpga芯片3的時鐘頻率處于1mhz以下的任何值,本發明在此不做限定。作為一種優選的實施例,該系統還包括存儲模塊,用于存儲數據,并進行數據傳輸。具體的,在fpga異構加速系統正常工作時,fpga卡需要對cpu下達的數據和指令進行計算,fpga卡上的存儲模塊用于緩沖上述數據,并進行傳輸。作為一種優選的實施例,控制指令為睡眠指令,則控制寄存器2用于控制與存儲模塊對應的電源模塊關斷,并將睡眠指令賦予第二預設值以控制fpga芯片3處于睡眠狀態。具體的,通過控制模塊1控制待降低功耗的fpga卡處于睡眠狀態,即保持fpga芯片3對應的電源模塊正常供電,將存儲模塊所對應的電源模塊關斷,并按照第二預設值控制fpga芯片3處于睡眠狀態,控制單元通過對存儲模塊所對應的電源模塊的開關狀態以及fpga芯片3的工作狀態進行綜合控制,降低了fpga芯片3的運行速度,從而降低fpga卡的功耗,此時fpga卡功耗在10w以下,其中,第二預設值為保證使fpga芯片3處于復位狀態的任何值,本發明在此不做限定。作為一種優選的實施例,控制指令為深睡眠指令,則控制寄存器2用于控制與fpga芯片3對應的電源模塊關斷,還用于控制與存儲模塊對應的電源模塊關斷,以控制fpga芯片3處于深睡眠狀態。具體的,控制模塊1控制待降低功耗的fpga卡處于深睡眠狀態,即將fpga芯片3對應的電源模塊和以及存儲模塊對應的電源模塊均關斷,通過將各個模塊對應的電源模塊的關斷,使fpga芯片3以及存儲模塊的停止運行來降低fpga卡的靜態功耗,此時fpga卡功耗在1w以下。作為一種優選的實施例,控制寄存器2還用于控制fpga卡上其他各個模塊的上電順序。具體的,fpga卡的開機浪涌電流很大,可能會造成系統在啟動初期不穩定,所以本發明對fpga卡上的各個模塊進行上電序化,各個模塊相繼啟動,減少開機浪涌電流,降低了fpga卡的功耗。具體的,上電順序可以為:首先打開cpld對應的電源模塊,使cpld開始工作;接著打開fpga芯片3對應的第一電源模塊,使fpga芯片3內核開始工作,然后打開fpga芯片3對應的第二電源模塊,使fpga芯片3內核的部分io開始工作;最后打開存儲模塊對應的電源模塊,使fpga芯片3可以訪問電源模塊。作為一種優選的實施例,fpga芯片3對應的電源模塊和存儲模塊對應的電源模塊之前,該系統還包括電壓轉換模塊,用于對總輸入電壓進行降壓處理,并將降壓后的總輸入電壓分別輸出至fpga芯片3對應的電源模塊和存儲模塊對應的電源模塊。具體的,本發明對總輸入電壓進行多級轉換,提升了總輸入電壓輸出至fpga芯片3對應的電源模塊和存儲模塊對應的電源模塊時的轉換效率,從而降低了fpga卡的功耗。具體的,請參照下表1,表1為以總輸入電壓輸出至fpga芯片3對應的電源模塊為例,得到的電壓轉換效率表。表1fpga異構計算加速系統的電壓轉換效率表輸入電壓輸出電壓轉換效率12v0.95v85%12v3.3v95%3.3v0.95v94%3.3v1.8v95%具體的,如上表所示,總輸入電壓為12v,則fpga芯片3對應的電源模塊后的輸入電壓為12v,輸出電壓為0.95v,轉換效率為85%,系統損耗15%;如果首先通過電壓轉換模塊,用于對總輸入電壓進行降壓處理,從12v轉為3.3v,轉換效率為95%,此時將降壓后的總輸入電壓輸出至fpga芯片3對應的電源模塊,即fpga芯片3對應的電源模塊輸入電壓為3.3v輸出電壓為0.95v,轉換效率為94%,應用本發明的方法,對總輸入電壓進行多級轉換后,得到的轉換效率為89.3%,系統損耗10.7%,利用率提高5%,從而降低了fpga卡的功耗。請參照圖2,圖2為本發明所提供的一種fpga異構計算加速方法的流程圖,包括:步驟1:控制模塊確定待降低功耗的現場可編程門陣列fpga卡,并生成與各個待降低功耗的fpga卡對應的控制指令;步驟2:與fpga芯片一一對應的控制寄存器接收與自身對應的控制指令,并根據控制指令控制與fpga芯片對應的電源模塊的開關狀態和/或控制fpga芯片的工作狀態。作為一種優選的實施例,控制模塊生成并發送控制指令之前,該方法還包括:控制寄存器控制fpga卡上其他各個模塊的上電順序。對于本發明所提供的一種fpga異構計算加速方法的介紹,請參照上述實施例,本發明在此不再贅述。本發明還提供了一種fpga異構計算加速方法,具有如上述加速系統相同的有益效果。本說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。對于實施例公開的裝置而言,由于其與實施例公開的方法相對應,所以描述的比較簡單,相關之處參見方法部分說明即可。對所公開的實施例的上述說明,使本領域專業技術人員能夠實現或使用本發明。對這些實施例的多種修改對本領域的專業技術人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發明的精神或范圍的情況下,在其他實施例中實現。因此,本發明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。當前第1頁12