張澤玉
(中船智能(上海)信息科技有限公司 上海市 201200)
在各行業(yè)自主研發(fā)的大趨勢下,國產(chǎn)CPU,GPU,操作系統(tǒng)等電子信息技術(shù)產(chǎn)品的技術(shù)已日趨成熟穩(wěn)定。21世紀至今,國產(chǎn)CPU 經(jīng)過幾十年的發(fā)展與積累,已經(jīng)取得的長足的進步,并且大部分都已經(jīng)擁有了專屬的GPU。從“十五”開始,國家的正確決策,導(dǎo)向及相關(guān)政策的大力扶持,自主性已經(jīng)成為了國產(chǎn)電子產(chǎn)品的后幾十年的主要發(fā)展方向。泰山計劃,863 計劃等使得一批國產(chǎn)CPU品牌得到了快速的發(fā)展與壯大。在經(jīng)歷過數(shù)十年的艱辛探索,目前,國產(chǎn)CPU 產(chǎn)業(yè)已初具規(guī)模,涌現(xiàn)出一批領(lǐng)軍企業(yè)。
FT-1500A/4 芯片集成4 個飛騰自主研發(fā)的高能效處理器內(nèi)核FTC660,采用亂序四發(fā)射超標量流水線,芯片采用片上并行系統(tǒng)(PSoC)體系結(jié)構(gòu)、高效片上網(wǎng)絡(luò)和高帶寬低延遲的存儲系統(tǒng),兼容64 位ARMV8 指令集并支持ARM64 和ARM32 兩種執(zhí)行模式。該產(chǎn)品適用于構(gòu)建各種類型的桌面終端、便攜式終端和輕量級服務(wù)器等產(chǎn)品,支持商業(yè)和工業(yè)分級。
此次對比配置說明,飛騰臺式機使用FT-1500A 處理器,主頻1.8GHz,搭載銀河麒麟操作系統(tǒng)。龍芯臺式機使用的是LS-3A3000處理器,主頻1GHz,搭載fedora 操作系統(tǒng)。通過開機速度,瀏覽器性能,訪存性能,文檔打開速度及CPU 性能對比來比較兩塊市場比較穩(wěn)定的處理器性能。
首先,使用主流CPU 計算能力基準工具SPEC 來進行測試,結(jié)果如圖1、圖2、圖3。
圖1:SPEC2006 單用戶測試結(jié)果圖
圖2:SPEC2000 單用戶測試結(jié)果圖
圖3:stream 測試結(jié)果圖
從SPEC2006 結(jié)果來看,飛騰各項數(shù)據(jù)占優(yōu)一些,而從SPEC2000 來看兩方數(shù)據(jù)則相差不多。但是從訪存性能上來看,龍芯則更為出色。
我們也從使用計算機是更為直觀的開關(guān)機速度來體驗兩家處理器上的差異,飛騰1500A 雖然在開機速度上不及龍芯3A3000,關(guān)機速度確快于龍芯。相反,龍芯則是關(guān)機速度較慢。
JM7200 采用28nm CMOS 工藝,支持4K 超高清顯示,支持4路獨立顯示輸出,支持十屏同時輸出,提供多種豐富的外設(shè)接口,可高效完成2D、3D 圖形加速;支持H.264、VC-1、VP8、MPEG2和MPEG4 等格式高清視頻硬件解碼,將CPU 資源占用降至最低;支持對圖像及四路多格式的外輸入視頻進行縮放、旋轉(zhuǎn)、裁剪、疊加、去隔行及融合處理;提供符合OpenGL 規(guī)范的驅(qū)動程序。
在X 窗口系統(tǒng)中,OpenGL 渲染是通過 X 擴展的形式實現(xiàn)的,GLX 是 X 協(xié)議的一種擴展,用于將OpenGL 函數(shù)傳遞給擴展的 X服務(wù)器。GLX 提供一系列 API 接口供應(yīng)用程序使用,這樣一來,應(yīng)用程序可以直接利用 GPU 來進行 3D 渲染從而最大程度減少與Xorg 的交互。另外還提供了多個 3D 窗口和 2D 窗口交互的管理,以及幀存管理接口。
OpenGL API 層實現(xiàn) OpenGL1.5 規(guī)范中的所有函數(shù)接口,包括頂點模塊、光照模塊、紋理模塊、視圖變換模塊、霧化模塊、裁剪面模塊、像素模塊、顯示列表模塊。在這一層會處理所有的錯誤信息,將對這些接口函數(shù)的調(diào)用轉(zhuǎn)化為 3D 渲染引擎中的 OpenGL 狀態(tài),收集頂點屬性信息,并將 OpenGL 狀態(tài)跟頂點結(jié)合起來,形成繪圖上下文。
3D 圖形渲染引擎負責管理 OpenGL API 層中提交的 OpenGL 狀態(tài),并將這些數(shù)據(jù)轉(zhuǎn)化為 GPU 可以接受的命令序列;將 OpenGL API 層提交的不規(guī)整的頂點數(shù)據(jù)、紋理數(shù)據(jù)、像素數(shù)據(jù)等處理成GPU 支持的格式;并提供繪圖上下文管理、顯示列表切換管理、紋理管理等。
銀河麒麟服務(wù)器操作系統(tǒng)是在“863 計劃”和國家核高基科技重大專項支持下,研制而成的高安全、高可靠、高可用國產(chǎn)操作系統(tǒng)。具有良好的兼容性,支持飛騰、龍芯、鯤鵬、兆芯、海光等國產(chǎn)CPU 平臺,兼容國內(nèi)外主流服務(wù)器、存儲系統(tǒng)、板卡和外部設(shè)備。同時,支持以O(shè)racle、DB2、MariaDB、MySQL 為代表的國際主流數(shù)據(jù)庫,以及以達夢、金倉、神通、南大通用、上容為代表的國產(chǎn)數(shù)據(jù)庫,支持以Weblogic、WebSphere、Tuxedo、JBOSS、Tomcat為代表的國際主流中間件,以及以東方通、中創(chuàng)、金蝶為代表的國產(chǎn)中間件,在開發(fā)環(huán)境方面,支持QtCreator、Eclipse 等開發(fā)環(huán)境,提供配套的C/C++、Java 及主流語言的編譯、測試、調(diào)優(yōu)工具集。提供Python、Perl、PHP、Tcl/Tk、Shell、Go 等編程語言開發(fā)環(huán)境支持,支持軟、硬RAID,支持RAID0、RAID1、RAID5、RAID10等多種模式。支持網(wǎng)絡(luò)冗余,提供多模式網(wǎng)卡綁定功能,滿足不同場景的網(wǎng)絡(luò)需求。
本次項目中使用Qt 集成開發(fā)環(huán)境,在FT-1500A+JM7200+銀河麒麟下實現(xiàn)應(yīng)用軟件的開發(fā),軟件涉及數(shù)據(jù)庫遠程訪問,動態(tài)庫靜態(tài)庫的調(diào)用,進程間通訊,多線程并行處理,2 維3 維地圖切換,手勢識別,單雙GPU 切換,面部及智能語音識別。在大量的圖形計算及計算機I/O 頻繁交互的基礎(chǔ)上,F(xiàn)T-1500ACPU 配合JM7200GPU 表現(xiàn)的令人滿意。連續(xù)的大負荷的計算處理對CPU,GPU 有著嚴峻的考驗,加之銀河麒麟良好的兼容性,使應(yīng)用程序在開發(fā)過程中并沒有遇到無法解決的技術(shù)性問題。Qt 憑借強大的可移植性,使得代碼開發(fā)過程中移植部分有了很大的信心。
本次銀河麒麟(x64)下Qt 的版本使用的是Qt5.7。同時也建議大家其他操作系統(tǒng)上安裝Qt 環(huán)境也盡量使用Qt5 以上版本,因為Qt4 安裝時,IDE 集成開發(fā)環(huán)境Qt-creator 需要單獨安裝,而且Qt5以前版本對應(yīng)的MinGW 編譯器是gcc4.4.0 版本,網(wǎng)上也很難能夠找到相關(guān)資料。但是Qt5 之后,編譯器,調(diào)試器及Qt-creator 都集成到安裝軟件中了,不在需要源碼編譯安裝Qt 真的節(jié)省了大量的時間,加上可視化的安裝界面對用戶來說也更加的友好。
這里我安裝配置Qt5.7 后創(chuàng)建helloQt 程序來描述下安裝配置過程中可能遇到的問題。
首先將安裝包.run 解壓后運行。然后選擇需要安裝的組件,Qt圖表,2D 模塊,虛擬鍵盤,網(wǎng)頁設(shè)計等等。建議大家全部選擇安裝,需要占用大概2.3G 左右,Qt 的第三方庫及組件真的非常方便而且美觀。其中主要是Sources 源代碼占用大部分,這樣后面用任何組件的功能我們都可以直接引用。我這里因為只是編寫測試程序,其余組件我沒有選擇。Tools 則為Qt-creator 的安裝,默認是后選的,不需要再單獨安裝了。
接下來,我們可以對Qt 套件進行配置,名稱可以自定義套件名稱,編譯器默認使用/usr/bin 下的gcc 編譯器,當然后面編譯器選項中也可以重新添加或修改編譯器。調(diào)試器會自動使用安裝過程中安裝到/usr/bin 下的gdb 調(diào)試器。Qt 版本在后面Qt Version 中可以選擇,默認會自動選擇剛剛安裝的Qt5.7,構(gòu)建套件相當于總體來配置Kit,其中各個選項都有對應(yīng)的單獨配置的界面。
Qt 版本其實就是qmake 的版本,在上圖中可以瀏覽路徑選擇你需要的qt 版本,默認會自動選擇安裝目錄下bin 下的qmake。Qt編譯器的選擇多樣,一般GCC/g++和MinGW 編譯用的更多。這次我使用的是/usr/bin 下的g++編譯器,名稱則是使用了GCC??梢蕴砑幽阆胧褂玫木幾g器,選擇編譯器的路徑即可。
Qt 調(diào)試器是使用在Qt-creator 調(diào)試代碼的應(yīng)用場景中,如果你不需要Qt-creatorIDE 去編譯調(diào)試代碼,同樣可以使用qmake+源文件去編譯源代碼。默認Qt-creator 使用/usr/bin 下的gdb 調(diào)試器。同樣,你可以添加克隆和刪除指定的調(diào)試器。
配置好構(gòu)建套件(Kit)后,我們就可以創(chuàng)建一個測試程序helloQt 了。但是構(gòu)建的過程中卻出現(xiàn)了錯誤:Can not find –lGL。這個問題是因為qt 在發(fā)行Linux 版本時,會將libGL 庫生成在其他路徑,而不是Qt-creator 默認尋找的/usr/lib 路徑。而且不同發(fā)行版本的libGL 庫會自動帶版本號例如libGL.so.1.7.0 這樣。所以我們的思路就是先找到libGL.so 生成到哪里了,然后在/usr/lib 下創(chuàng)建一個libGL.so 的軟連接,具體操作如圖4。
圖4:創(chuàng)建libGL 鏈接圖
Qt 憑借著強大的移植性獲得了越來越多的關(guān)注,但是在國產(chǎn)cpu、國產(chǎn)操作系統(tǒng)下的源碼編譯安裝則需要較多的依賴。Qt5 以上的源碼編譯安裝需要gcc 版本,python 等要求較為嚴格,具體可以參考各版本源碼文檔README 文件或者官方文檔說明,加上網(wǎng)絡(luò)上國產(chǎn)cpu 下的編譯安裝可查閱的資料相對較少,還是要通過自己一步步一次次的實踐解決不同的問題。以上就是我們在銀河麒麟安裝配置Qt 環(huán)境,且創(chuàng)建應(yīng)用程序的運行與開發(fā)。
通過對FT-1500A+JM7200 的CPU+GPU 組合的較為深入的測試與使用,我們能夠從用戶的角度很好的體驗這套組合的高性能與高實用性,在應(yīng)用軟件的開發(fā)過程中,飛騰和景嘉微很好的契合麒麟操作系統(tǒng),加上Qt 集成開發(fā)IDE,完整的實現(xiàn)了我們所需的所有功能開發(fā)。并且在高密度,高強度的計算與圖形處理的壓力下,飛騰和景嘉的表現(xiàn)讓人滿意,也讓我們對國產(chǎn)CPU,GPU 以及操作系統(tǒng)產(chǎn)生了強大的信心。