張澤玉
(中船智能(上海)信息科技有限公司 上海市 201200)
在各行業自主研發的大趨勢下,國產CPU,GPU,操作系統等電子信息技術產品的技術已日趨成熟穩定。21世紀至今,國產CPU 經過幾十年的發展與積累,已經取得的長足的進步,并且大部分都已經擁有了專屬的GPU。從“十五”開始,國家的正確決策,導向及相關政策的大力扶持,自主性已經成為了國產電子產品的后幾十年的主要發展方向。泰山計劃,863 計劃等使得一批國產CPU品牌得到了快速的發展與壯大。在經歷過數十年的艱辛探索,目前,國產CPU 產業已初具規模,涌現出一批領軍企業。
FT-1500A/4 芯片集成4 個飛騰自主研發的高能效處理器內核FTC660,采用亂序四發射超標量流水線,芯片采用片上并行系統(PSoC)體系結構、高效片上網絡和高帶寬低延遲的存儲系統,兼容64 位ARMV8 指令集并支持ARM64 和ARM32 兩種執行模式。該產品適用于構建各種類型的桌面終端、便攜式終端和輕量級服務器等產品,支持商業和工業分級。
此次對比配置說明,飛騰臺式機使用FT-1500A 處理器,主頻1.8GHz,搭載銀河麒麟操作系統。龍芯臺式機使用的是LS-3A3000處理器,主頻1GHz,搭載fedora 操作系統。通過開機速度,瀏覽器性能,訪存性能,文檔打開速度及CPU 性能對比來比較兩塊市場比較穩定的處理器性能。
首先,使用主流CPU 計算能力基準工具SPEC 來進行測試,結果如圖1、圖2、圖3。

圖1:SPEC2006 單用戶測試結果圖

圖2:SPEC2000 單用戶測試結果圖

圖3:stream 測試結果圖
從SPEC2006 結果來看,飛騰各項數據占優一些,而從SPEC2000 來看兩方數據則相差不多。但是從訪存性能上來看,龍芯則更為出色。
我們也從使用計算機是更為直觀的開關機速度來體驗兩家處理器上的差異,飛騰1500A 雖然在開機速度上不及龍芯3A3000,關機速度確快于龍芯。相反,龍芯則是關機速度較慢。
JM7200 采用28nm CMOS 工藝,支持4K 超高清顯示,支持4路獨立顯示輸出,支持十屏同時輸出,提供多種豐富的外設接口,可高效完成2D、3D 圖形加速;支持H.264、VC-1、VP8、MPEG2和MPEG4 等格式高清視頻硬件解碼,將CPU 資源占用降至最低;支持對圖像及四路多格式的外輸入視頻進行縮放、旋轉、裁剪、疊加、去隔行及融合處理;提供符合OpenGL 規范的驅動程序。
在X 窗口系統中,OpenGL 渲染是通過 X 擴展的形式實現的,GLX 是 X 協議的一種擴展,用于將OpenGL 函數傳遞給擴展的 X服務器。GLX 提供一系列 API 接口供應用程序使用,這樣一來,應用程序可以直接利用 GPU 來進行 3D 渲染從而最大程度減少與Xorg 的交互。另外還提供了多個 3D 窗口和 2D 窗口交互的管理,以及幀存管理接口。
OpenGL API 層實現 OpenGL1.5 規范中的所有函數接口,包括頂點模塊、光照模塊、紋理模塊、視圖變換模塊、霧化模塊、裁剪面模塊、像素模塊、顯示列表模塊。在這一層會處理所有的錯誤信息,將對這些接口函數的調用轉化為 3D 渲染引擎中的 OpenGL 狀態,收集頂點屬性信息,并將 OpenGL 狀態跟頂點結合起來,形成繪圖上下文。
3D 圖形渲染引擎負責管理 OpenGL API 層中提交的 OpenGL 狀態,并將這些數據轉化為 GPU 可以接受的命令序列;將 OpenGL API 層提交的不規整的頂點數據、紋理數據、像素數據等處理成GPU 支持的格式;并提供繪圖上下文管理、顯示列表切換管理、紋理管理等。
銀河麒麟服務器操作系統是在“863 計劃”和國家核高基科技重大專項支持下,研制而成的高安全、高可靠、高可用國產操作系統。具有良好的兼容性,支持飛騰、龍芯、鯤鵬、兆芯、海光等國產CPU 平臺,兼容國內外主流服務器、存儲系統、板卡和外部設備。同時,支持以Oracle、DB2、MariaDB、MySQL 為代表的國際主流數據庫,以及以達夢、金倉、神通、南大通用、上容為代表的國產數據庫,支持以Weblogic、WebSphere、Tuxedo、JBOSS、Tomcat為代表的國際主流中間件,以及以東方通、中創、金蝶為代表的國產中間件,在開發環境方面,支持QtCreator、Eclipse 等開發環境,提供配套的C/C++、Java 及主流語言的編譯、測試、調優工具集。提供Python、Perl、PHP、Tcl/Tk、Shell、Go 等編程語言開發環境支持,支持軟、硬RAID,支持RAID0、RAID1、RAID5、RAID10等多種模式。支持網絡冗余,提供多模式網卡綁定功能,滿足不同場景的網絡需求。
本次項目中使用Qt 集成開發環境,在FT-1500A+JM7200+銀河麒麟下實現應用軟件的開發,軟件涉及數據庫遠程訪問,動態庫靜態庫的調用,進程間通訊,多線程并行處理,2 維3 維地圖切換,手勢識別,單雙GPU 切換,面部及智能語音識別。在大量的圖形計算及計算機I/O 頻繁交互的基礎上,FT-1500ACPU 配合JM7200GPU 表現的令人滿意。連續的大負荷的計算處理對CPU,GPU 有著嚴峻的考驗,加之銀河麒麟良好的兼容性,使應用程序在開發過程中并沒有遇到無法解決的技術性問題。Qt 憑借強大的可移植性,使得代碼開發過程中移植部分有了很大的信心。
本次銀河麒麟(x64)下Qt 的版本使用的是Qt5.7。同時也建議大家其他操作系統上安裝Qt 環境也盡量使用Qt5 以上版本,因為Qt4 安裝時,IDE 集成開發環境Qt-creator 需要單獨安裝,而且Qt5以前版本對應的MinGW 編譯器是gcc4.4.0 版本,網上也很難能夠找到相關資料。但是Qt5 之后,編譯器,調試器及Qt-creator 都集成到安裝軟件中了,不在需要源碼編譯安裝Qt 真的節省了大量的時間,加上可視化的安裝界面對用戶來說也更加的友好。
這里我安裝配置Qt5.7 后創建helloQt 程序來描述下安裝配置過程中可能遇到的問題。
首先將安裝包.run 解壓后運行。然后選擇需要安裝的組件,Qt圖表,2D 模塊,虛擬鍵盤,網頁設計等等。建議大家全部選擇安裝,需要占用大概2.3G 左右,Qt 的第三方庫及組件真的非常方便而且美觀。其中主要是Sources 源代碼占用大部分,這樣后面用任何組件的功能我們都可以直接引用。我這里因為只是編寫測試程序,其余組件我沒有選擇。Tools 則為Qt-creator 的安裝,默認是后選的,不需要再單獨安裝了。
接下來,我們可以對Qt 套件進行配置,名稱可以自定義套件名稱,編譯器默認使用/usr/bin 下的gcc 編譯器,當然后面編譯器選項中也可以重新添加或修改編譯器。調試器會自動使用安裝過程中安裝到/usr/bin 下的gdb 調試器。Qt 版本在后面Qt Version 中可以選擇,默認會自動選擇剛剛安裝的Qt5.7,構建套件相當于總體來配置Kit,其中各個選項都有對應的單獨配置的界面。
Qt 版本其實就是qmake 的版本,在上圖中可以瀏覽路徑選擇你需要的qt 版本,默認會自動選擇安裝目錄下bin 下的qmake。Qt編譯器的選擇多樣,一般GCC/g++和MinGW 編譯用的更多。這次我使用的是/usr/bin 下的g++編譯器,名稱則是使用了GCC。可以添加你想使用的編譯器,選擇編譯器的路徑即可。
Qt 調試器是使用在Qt-creator 調試代碼的應用場景中,如果你不需要Qt-creatorIDE 去編譯調試代碼,同樣可以使用qmake+源文件去編譯源代碼。默認Qt-creator 使用/usr/bin 下的gdb 調試器。同樣,你可以添加克隆和刪除指定的調試器。
配置好構建套件(Kit)后,我們就可以創建一個測試程序helloQt 了。但是構建的過程中卻出現了錯誤:Can not find –lGL。這個問題是因為qt 在發行Linux 版本時,會將libGL 庫生成在其他路徑,而不是Qt-creator 默認尋找的/usr/lib 路徑。而且不同發行版本的libGL 庫會自動帶版本號例如libGL.so.1.7.0 這樣。所以我們的思路就是先找到libGL.so 生成到哪里了,然后在/usr/lib 下創建一個libGL.so 的軟連接,具體操作如圖4。

圖4:創建libGL 鏈接圖
Qt 憑借著強大的移植性獲得了越來越多的關注,但是在國產cpu、國產操作系統下的源碼編譯安裝則需要較多的依賴。Qt5 以上的源碼編譯安裝需要gcc 版本,python 等要求較為嚴格,具體可以參考各版本源碼文檔README 文件或者官方文檔說明,加上網絡上國產cpu 下的編譯安裝可查閱的資料相對較少,還是要通過自己一步步一次次的實踐解決不同的問題。以上就是我們在銀河麒麟安裝配置Qt 環境,且創建應用程序的運行與開發。
通過對FT-1500A+JM7200 的CPU+GPU 組合的較為深入的測試與使用,我們能夠從用戶的角度很好的體驗這套組合的高性能與高實用性,在應用軟件的開發過程中,飛騰和景嘉微很好的契合麒麟操作系統,加上Qt 集成開發IDE,完整的實現了我們所需的所有功能開發。并且在高密度,高強度的計算與圖形處理的壓力下,飛騰和景嘉的表現讓人滿意,也讓我們對國產CPU,GPU 以及操作系統產生了強大的信心。