• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于容器技術(shù)的水文水動力模型軟硬件適配方法

    2024-02-18 04:59:09張海嘉劉家宏梅超王佳高希超
    計算機應(yīng)用研究 2024年1期

    張海嘉 劉家宏 梅超 王佳 高希超

    摘 要:隨著國產(chǎn)化軟硬件系統(tǒng)的發(fā)展和普及,將現(xiàn)行的計算程序適配到國產(chǎn)硬件和操作系統(tǒng)上是科學(xué)研究和業(yè)務(wù)化應(yīng)用的關(guān)鍵,亟待探索提出專業(yè)計算模型的軟硬件適配方法?,F(xiàn)有關(guān)于專業(yè)計算模型的軟硬件適配方法存在缺乏通用性、硬件依賴性強等問題。鑒于此,系統(tǒng)解析了國產(chǎn)化適配需要解決的關(guān)鍵問題,并對比了現(xiàn)行的軟件適配技術(shù),篩選出容器技術(shù)作為水文水動力模型的國產(chǎn)適配技術(shù)。容器技術(shù)可將應(yīng)用程序打包成獨立的運行環(huán)境,擺脫對底層架構(gòu)和操作系統(tǒng)的依賴。以水文水動力模型TELEMAC為例,詳細(xì)說明了Docker鏡像構(gòu)成原理,并通過Dockerfile文件構(gòu)建了TELEMAC鏡像環(huán)境,開展了計算案例的驗證。結(jié)果表明TELEMAC鏡像能夠安全運行在以鯤鵬920處理器為核心的openEuler和麒麟V10等國產(chǎn)軟硬件平臺上,且案例計算結(jié)果與標(biāo)準(zhǔn)結(jié)果相一致,模型計算效率高,實現(xiàn)了專業(yè)科學(xué)計算模型的國產(chǎn)化軟硬件適配,該研究可為其他軟件國產(chǎn)化適配提供參考借鑒。

    關(guān)鍵詞:水文水動力模型;國產(chǎn)化適配;TELEMAC軟件;鏡像環(huán)境;Docker技術(shù)

    中圖分類號:TV122?? 文獻(xiàn)標(biāo)志碼:A?? 文章編號:1001-3695(2024)01-028-0188-05

    doi:10.19734/j.issn.1001-3695.2023.05.0200

    Software and hardware adaptation method of hydrodynamic model based on container technologies

    Abstract:With the development and popularity of advanced RISC machines(ARM),adapting the X86-based scientific computing software to ARM-based computing platforms is one of the key issues for scientific research and operational applications.It is urgent to explore the software-hardware-adaptation methods of advanced RISC machines for professional computational models.This paper systematically analysed the key points for software hardware adaptation of ARM.By comparing the existing software adaptation technologies,it selected container technology to enable the hydrodynamic model to run on ARM-based computing platforms.Container technology could package the application software and its dependencies into a portable container,which made the suggested software run freely without any dependency on the underlying architecture and operating system.Taking the hydrological hydrodynamic model,TELEMAC,as an example,it explained the principle of Docker image composition in detail,and built the TELEMAC image environment through Dockerfile.The method was verified by carrying out the computational cases.The results show that the TELEMAC image can run safely on the Kunpeng 920 processor-based openEuler and Kirin V10.The case calculation results are consistent with the standard results,and the model calculation efficiency is high.The proposed method realizes the adaptation from an X86-based platform to ARM-based computing platforms for professional scientific computing models.This study can also provide a reference for the localization adaptation of other software.

    Key words:hydrodynamic model;local adaptation;TELEMAC software;mirror environment;Docker technology

    隨著國家的大力支持,國產(chǎn)操作系統(tǒng)的研發(fā)取得了巨大的進(jìn)步。國產(chǎn)操作系統(tǒng)是基于安全穩(wěn)定且源碼公開的Linux內(nèi)核上進(jìn)行研發(fā)的,增強了自主可控性,是我國的信息安全的重要保障。然而,國產(chǎn)操作系統(tǒng)的軟件生態(tài)是當(dāng)前重點關(guān)注的問題,盡管常用的生活與辦公軟件已能夠在國產(chǎn)硬件和操作系統(tǒng)上適配,但用戶群體存在局限性。幾乎所有的專業(yè)性科學(xué)計算軟件均無法完全適配,繼續(xù)擴大軟件生態(tài)圈是加快國產(chǎn)操作系統(tǒng)推廣、擴展用戶群體的重要途徑[1]。舍棄原有的軟件成果,在新環(huán)境下重新開發(fā)新產(chǎn)品,將極大增加人力、時間和資金的投入。因此,擴展國產(chǎn)操作系統(tǒng)的軟件資源庫,完善其軟件生態(tài),行之有效的途徑之一就是將現(xiàn)有的開源計算軟件進(jìn)行國產(chǎn)化適配,使其能夠運行在國產(chǎn)操作系統(tǒng)上。

    1 國產(chǎn)化適配

    1.1 軟硬件適配

    1.1.1 ARM架構(gòu)處理器

    幾十年來,Intel和AMD支持的X86架構(gòu)處理器市場占有率高達(dá)90%,導(dǎo)致現(xiàn)行的專業(yè)計算軟件均是基于X86架構(gòu)進(jìn)行開發(fā)的。X86指令集采用的是復(fù)雜指令集計算機(CISC)體系結(jié)構(gòu),這使得X86處理器設(shè)計和制造成本較高,而且容易出現(xiàn)設(shè)計缺陷和漏洞。指令集復(fù)雜也導(dǎo)致執(zhí)行指令的效率較低、功耗較高、不夠靈活,在嵌入式系統(tǒng)、移動設(shè)備、物聯(lián)網(wǎng)設(shè)備等應(yīng)用場景中會受到一定的限制[2]。與之相比,ARM架構(gòu)處理器采用精簡指令集計算機(RISC)處理器,指令數(shù)量相對較少,但可以通過組合實現(xiàn)復(fù)雜的計算和操作。這一做法不僅提高了指令運行速度,也最大限度地減少了功耗。ARM架構(gòu)展示的高性能、低功耗的優(yōu)勢,使其正在迅速成為與X86競爭的強勁對手[3,4]。高效高性能的RISC是“將來時”,過于復(fù)雜的CISC即將成為是“過去時”,過去幾十年時間內(nèi),蘋果公司曾在CISC和RISC之間反復(fù)輾轉(zhuǎn),最終在2020年放棄了X86架構(gòu)而改用基于ARM架構(gòu)的芯片就是一個強有力的證明。高通也與惠普、聯(lián)想和華碩等電腦廠商合作推出了基于ARM架構(gòu)的電腦。國內(nèi)飛騰、鯤鵬等廠商也已經(jīng)能夠?qū)崿F(xiàn)ARM架構(gòu)處理器的自主生產(chǎn),并適配國產(chǎn)操作系統(tǒng),在可預(yù)見的未來,將大量的軟件遷移到ARM架構(gòu)上是軟硬件國產(chǎn)化的主要途徑。當(dāng)前常用的國產(chǎn)化適配方法包括代碼重構(gòu)、中間層代碼移植和容器技術(shù)等,國產(chǎn)化軟硬件包括自主研發(fā)的芯片和操作系統(tǒng),因此在與現(xiàn)有開源計算軟件進(jìn)行適配時,解決的主要問題是軟硬件兼容性問題。這既要保證國產(chǎn)化硬件能夠正確地識別和運行開源計算軟件,又要使國產(chǎn)化操作系統(tǒng)能夠正確地支持開源計算軟件的功能。

    1.1.2 硬件適配

    專業(yè)計算軟件國產(chǎn)化適配主要解決的就是硬件(底層架構(gòu))和操作系統(tǒng)不適配的問題,硬件適配是實現(xiàn)國產(chǎn)化適配的第一步,也是實現(xiàn)高性能計算的有效途徑,但ARM架構(gòu)處理器精簡指令集與X86復(fù)雜指令集并不兼容,眾多專業(yè)性科學(xué)計算軟件如何向ARM架構(gòu)平臺遷移成為當(dāng)前研究者們面臨的關(guān)鍵難題[5]。主要困難包括:a)不同底層架構(gòu)的處理器采用不同的指令集,在應(yīng)用程序跨架構(gòu)適配時,需要將應(yīng)用程序中使用的指令集進(jìn)行相應(yīng)的轉(zhuǎn)換,確保應(yīng)用程序能夠在新的底層架構(gòu)上正常運行;b)不同底層架構(gòu)的處理器采用不同的數(shù)據(jù)類型,例如,X86底層架構(gòu)的處理器使用的是little-endian字節(jié)序,而ARM底層架構(gòu)的處理器使用的是big-endian字節(jié)序,在應(yīng)用程序跨架構(gòu)適配時,需要對數(shù)據(jù)類型進(jìn)行轉(zhuǎn)換,確保應(yīng)用程序能夠正確地讀取和處理數(shù)據(jù);c)不同底層架構(gòu)的處理器使用不同的庫文件,例如,X86架構(gòu)的處理器使用的是Windows DLL文件,而ARM底層架構(gòu)的處理器使用的是Linux SO文件,在應(yīng)用程序跨架構(gòu)適配時,需將應(yīng)用程序中使用的庫文件進(jìn)行轉(zhuǎn)換,確保應(yīng)用程序能夠在新的底層架構(gòu)上正常運行。

    1.1.3 操作系統(tǒng)適配

    國產(chǎn)硬件是支持國產(chǎn)操作系統(tǒng)運行的基礎(chǔ),如openEuler、銀河麒麟和中標(biāo)麒麟等都基于國產(chǎn)ARM架構(gòu)處理器。國產(chǎn)化適配不僅限于硬件適配,操作系統(tǒng)適配才是國產(chǎn)化最終目的,也是保障國家信息安全和實現(xiàn)關(guān)鍵軟件自主可控的重要前提。

    操作系統(tǒng)國產(chǎn)化適配過程亦存在許多問題,例如,不同操作系統(tǒng)使用的應(yīng)用程序格式不同,Windows使用的是.exe格式,而國產(chǎn)操作系統(tǒng)是基于Linux內(nèi)核進(jìn)行研發(fā)的,使用的是rpm格式。因此,需要將應(yīng)用程序從一種格式轉(zhuǎn)換為另一種格式,才能在另一種操作系統(tǒng)上運行。其他不兼容問題還包括:a)不同操作系統(tǒng)的內(nèi)核使用不同的系統(tǒng)調(diào)用,Windows操作系統(tǒng)的內(nèi)核使用的是WinAPI,而Linux操作系統(tǒng)的內(nèi)核使用的是POSIX API,在應(yīng)用程序跨系統(tǒng)適配時,需要將應(yīng)用程序中使用的系統(tǒng)調(diào)用進(jìn)行轉(zhuǎn)換,才能保證應(yīng)用程序能夠在國產(chǎn)操作系統(tǒng)上正常運行;b)不同操作系統(tǒng)的文件系統(tǒng)具有不同的特性,例如,Windows操作系統(tǒng)的文件系統(tǒng)使用的是NTFS或FAT32,而Linux操作系統(tǒng)的文件系統(tǒng)使用的是ext4或XFS,在應(yīng)用程序跨系統(tǒng)適配時,需要對文件系統(tǒng)進(jìn)行轉(zhuǎn)換,確保應(yīng)用程序能夠正確地讀取和處理文件;c)不同操作系統(tǒng)的設(shè)備驅(qū)動程序不同,例如,Windows操作系統(tǒng)的設(shè)備驅(qū)動程序使用的是WDM,而Linux操作系統(tǒng)的設(shè)備驅(qū)動程序使用的是內(nèi)核模塊,在應(yīng)用程序跨系統(tǒng)適配時,需要對設(shè)備驅(qū)動程序進(jìn)行轉(zhuǎn)換,確保應(yīng)用程序能夠正確地訪問硬件設(shè)備。

    1.2 軟件適配方法

    實現(xiàn)應(yīng)用程序的國產(chǎn)化軟硬件適配是一個復(fù)雜的過程,采用的關(guān)鍵技術(shù)主要是硬件兼容適配技術(shù)和軟件功能適配技術(shù)等手段,確保應(yīng)用程序能夠適配國產(chǎn)化軟硬件和操作系統(tǒng),同時保證計算模型功能能夠滿足專業(yè)計算需求。主要的技術(shù)方法包括代碼重構(gòu)、中間層代碼移植和容器技術(shù)等。

    1.2.1 代碼重構(gòu)

    代碼重構(gòu)技術(shù)需要對應(yīng)用程序源碼進(jìn)行深入剖析,識別出需要進(jìn)行重構(gòu)的部分,然后對其進(jìn)行修改和擴展,使其適配于新的底層架構(gòu)和操作系統(tǒng)。常用方法包括:a)基于源碼修改是將待適配應(yīng)用程序的源代碼進(jìn)行重構(gòu),使之適應(yīng)新的平臺。例如,以C、C++、Go等編譯型語言開發(fā)的應(yīng)用程序,從X86架構(gòu)處理器遷移到ARM架構(gòu)處理器時無法直接適配,則需要進(jìn)行重新編譯;b)基于語言轉(zhuǎn)換是將一種語言的源碼轉(zhuǎn)換成另一種與平臺無關(guān)的語言(如Java、C#語言等),使軟件具有可適配性;c)逆向重構(gòu)是針對無法獲取源代碼的應(yīng)用程序,通過逆向分析工具,對應(yīng)用程序進(jìn)行分析、提取相應(yīng)的編譯文件,然后在目標(biāo)平臺上采用特定編譯技術(shù)對應(yīng)用程序進(jìn)行重構(gòu)。

    1.2.2 中間層代碼移植

    中間層是指應(yīng)用程序與操作系統(tǒng)之間的接口層,其作用是將應(yīng)用程序的請求轉(zhuǎn)換成操作系統(tǒng)可以理解的指令。中間層代碼移植技術(shù)是將現(xiàn)有的應(yīng)用程序中的某些功能代碼獨立出來,形成一個中間層,實現(xiàn)方法包括虛擬機技術(shù)、API模擬技術(shù)和模塊技術(shù)等。a)虛擬機技術(shù)是在國產(chǎn)操作系統(tǒng)上搭建一個虛擬機來運行不同操作系統(tǒng)的應(yīng)用程序(如Windows),但是這一技術(shù)從本質(zhì)上來講,就是在虛擬機上運行另一種操作系統(tǒng),不能使應(yīng)用程序擺脫對操作系統(tǒng)的依賴,本質(zhì)上不屬于國產(chǎn)化適配。b)API模擬技術(shù)是在國產(chǎn)操作系統(tǒng)上構(gòu)建一層類似Windows程序運行所需要的應(yīng)用程序接口(API),模擬應(yīng)用程序源代碼調(diào)用Windows API 的方式,使得國產(chǎn)系統(tǒng)獲得Windows API相同或相似的功能。c)模塊重構(gòu)的是將應(yīng)用程序與運行環(huán)境相關(guān)的部分從軟件中分離出來,將軟件分為兩部分:一是與目標(biāo)環(huán)境無關(guān)的實現(xiàn)自身功能的部分,二是目標(biāo)環(huán)境和軟件主體接口的適配層。

    1.2.3 容器技術(shù)

    容器技術(shù)又稱為容器虛擬化,利用容器技術(shù)把第三方GUI應(yīng)用程序及其運行環(huán)境打包成獨立的容器鏡像,使其能夠在不同的硬件平臺和操作系統(tǒng)上運行??梢院唵蔚貙⑵淅斫鉃橐粋€沙盒,它不依賴于任何語言、框架、系統(tǒng),每個容器是獨立的[6]。相較于其他主流虛擬化技術(shù),如KVM和WMware,容器內(nèi)的應(yīng)用程序直接運行在宿主機的內(nèi)核上,容器內(nèi)沒有自己的內(nèi)核,也沒有對硬件進(jìn)行虛擬化,因此容器比起虛擬機啟動速度更快、占用體積更小[7]。其中,Docker是最受關(guān)注容器技術(shù),通過Docker技術(shù)可以將應(yīng)用程序的代碼、依賴庫、環(huán)境變量和配置文件等打包成鏡像組件。圖1是Docker容器的運行原理,Docker引擎可以運行多個容器,每個容器都是一個獨立的、隔離的應(yīng)用環(huán)境。每個容器都運行著自己的應(yīng)用程序,并且可以訪問自己的文件系統(tǒng)、系統(tǒng)庫等[8],從而擺脫對底層架構(gòu)和操作系統(tǒng)的依賴,實現(xiàn)應(yīng)用程序的適配。

    1.2.4 適配方法對比

    對比上述應(yīng)用程序適配技術(shù),代碼重構(gòu)方法具有較高的難度,不同應(yīng)用程序的源代碼使用的編程語言各不相同,代碼重構(gòu)技術(shù)不僅需要熟悉各種編程語言,還要充分了解應(yīng)用程序的功能,才能對應(yīng)用程序源代碼進(jìn)行拆分和重構(gòu),在實現(xiàn)國產(chǎn)化適配的同時獲得滿足功能要求的應(yīng)用程序。對于中間層代碼移植方法,由于Windows是非開源的,應(yīng)用程序調(diào)用無法完全實現(xiàn)和Windows一樣的功能,另外Windows中存在一些未被文檔化的函數(shù),這些函數(shù)目前也沒有實現(xiàn)的方法。

    容器技術(shù)是一種方法,對編程開發(fā)能力要求較低,但是容器技術(shù)可以將應(yīng)用程序所需要的運行環(huán)境進(jìn)行打包,實現(xiàn)應(yīng)用程序的跨平臺遷移。容器技術(shù)還具有以下優(yōu)點:基礎(chǔ)設(shè)施可以是個人電腦或遠(yuǎn)程服務(wù)器;開發(fā)平臺容易搭建,操作系統(tǒng)可以是適配Docker引擎的Windows或Linux,方便開發(fā)人員上手操作;容器之間可以共享主機的資源,如CPU、內(nèi)存、網(wǎng)絡(luò)等,也可以通過卷(volume)來共享數(shù)據(jù),占用宿主機資源少。

    2 軟件適配技術(shù)方案

    實現(xiàn)軟件適配需要解決的主要問題包括操作系統(tǒng)、硬件設(shè)備等方面的兼容性問題,使計算軟件能夠滿足專業(yè)計算的功能需求;還需要考慮國產(chǎn)化硬件的性能特點和優(yōu)勢,充分利用硬件的性能問題;最后,保證適配后的應(yīng)用軟件不能影響宿主機和其他應(yīng)用。針對上述問題,Docker 利用操作系統(tǒng)級別的虛擬化技術(shù),將應(yīng)用程序和其依賴項包裝在一個容器中,可以在不同的環(huán)境中運行,保證計算模型功能在國產(chǎn)化適配后不發(fā)生改變。還可以共享宿主機內(nèi)核的資源,發(fā)揮國產(chǎn)硬件高性能的優(yōu)勢。Docker 容器還提供了良好的隔離性和安全性,可以保護(hù)應(yīng)用程序和其依賴項的安全性,同時也可以將容器作為安全性的邊界來保護(hù)宿主機和其他軟件。

    因此,本文采用Docker跨平臺構(gòu)建鏡像技術(shù),以水文水動力學(xué)計算軟件TELEMAC為例,構(gòu)建Docker容器鏡像,進(jìn)行軟件適配研究。在Dockerfile中對TELEMAC源代碼進(jìn)行編譯和運行環(huán)境設(shè)置,構(gòu)建包含TELEMAC軟件和相關(guān)運行環(huán)境的容器鏡像,使其能夠獨立運行在國產(chǎn)硬件和操作系統(tǒng)上。

    2.1 TELEMAC軟件

    隨著快速城鎮(zhèn)化進(jìn)程和全球氣候變化,我國城市區(qū)域極端降水特征發(fā)生顯著改變,城市極端暴雨頻繁發(fā)生,造成了巨大的社會經(jīng)濟和生命財產(chǎn)損失[9]。數(shù)值模擬是研究城市內(nèi)澇形成機理和演進(jìn)規(guī)律的一種重要方法,通過模擬可以還原極端暴雨事件的雨情、水情和受災(zāi)過程,為構(gòu)建城市防洪減災(zāi)體系提供理論和技術(shù)參考[10~12]。

    TELEMAC軟件可以構(gòu)建1D、2D和3D水動力學(xué)模型以解決波浪傳播、水質(zhì)污染、地表水文、泥沙遷移等問題。二維水動力模塊(TELEMAC-2D)被廣泛應(yīng)用于河流、河口、海岸、洪泛區(qū)的水動力過程模擬,并取得了較好的效果[13,14]。近年來,國內(nèi)學(xué)者使用TELEMAC軟件對城市內(nèi)澇進(jìn)行了大量研究,劉家宏等人[15]基于TELEMAC-2D模型,模擬了廈門島不同重現(xiàn)期和不同雨峰系數(shù)內(nèi)澇積水情況,初步揭示廈門島城市內(nèi)澇的基本規(guī)律。邵蕊等人[16]基于TELEMAC-2D模型對城市暴雨洪澇的應(yīng)急響應(yīng)能力進(jìn)行評估,為城市精細(xì)化應(yīng)急管理提供科學(xué)支撐。都利亞等人[17]采用TELEMAC-2D模型,開展了龍洞水庫的二維潰壩洪水演進(jìn)模擬,為相關(guān)防洪減災(zāi)工作提供科學(xué)依據(jù)。

    文獻(xiàn)綜述表明TELEMAC軟件在城市內(nèi)澇模擬和城市防災(zāi)減災(zāi)規(guī)劃中應(yīng)用廣泛,但TELEMAC軟件僅適配于基于X86架構(gòu)的Windows和大部分Linux發(fā)行版系統(tǒng),無法在ARM架構(gòu)的國產(chǎn)操作系統(tǒng)上運行,因此采用Docker容器技術(shù)對TELEMAC軟件進(jìn)行跨架構(gòu)鏡像構(gòu)建,使其能夠適配于國產(chǎn)軟硬件系統(tǒng)。

    2.2 Docker引擎適配情況

    在進(jìn)行鏡像構(gòu)建之前,分析了Docker引擎國產(chǎn)化適配情況,結(jié)果表明幾乎所有的國產(chǎn)系統(tǒng)均能夠適配Docker引擎,并在官方文檔提供了關(guān)于Docker引擎適配情況的詳細(xì)信息,供用戶參考。國產(chǎn)深度操作系統(tǒng)(Deepin)和統(tǒng)信操作系統(tǒng)(UOS)系統(tǒng)默認(rèn)支持Docker,可以通過“apt-get”命令安裝Docker引擎;銀河麒麟操作系統(tǒng)(Kylin)和中標(biāo)麒麟操作系統(tǒng)(NeoKylin)可以通過添加第三方軟件源或手動安裝Docker引擎。華為鯤鵬通過虛擬化套件實現(xiàn)了基于鯤鵬920處理器和openEuler操作系統(tǒng)的Docker引擎適配,也是本文使用的軟硬件測試環(huán)境,適配條件如表1所示。

    2.3 軟件適配方案

    本文依托表1中的軟硬件環(huán)境,構(gòu)建能夠適配于鯤鵬920處理器(ARM架構(gòu))的鏡像,實現(xiàn)底層架構(gòu)適配。在鏡像中對TELEMAC軟件進(jìn)行編譯,并進(jìn)行環(huán)境變量配置,使其能夠順利運行在openEuler操作系統(tǒng)上,同時保證軟件功能不發(fā)生改變,實現(xiàn)操作系統(tǒng)適配。

    2.3.1 底層架構(gòu)適配

    底層架構(gòu)的區(qū)別也使得國產(chǎn)操作系統(tǒng)和Windows等操作系統(tǒng)在體系結(jié)構(gòu)、核心機制等方面存在較大的差異,基于不同底層架構(gòu)的應(yīng)用程序的內(nèi)部機制也不同。因此,要使得軟件能夠?qū)崿F(xiàn)國產(chǎn)化適配,就要解決軟件底層與底層架構(gòu)不適配的問題。Docker鏡像雖然能直接運行在Docker引擎上,但是卻不能忽視底層架構(gòu)的區(qū)別。因此,TELEMAC軟件要實現(xiàn)國產(chǎn)硬件適配,需要編譯能運行在ARM架構(gòu)的鏡像文件。本文通過Docker構(gòu)建工具包擴展構(gòu)建功能解決底層架構(gòu)差異問題,在鏡像內(nèi)部采用類似虛擬化的機制,將應(yīng)用程序和依賴打包在一個獨立的容器環(huán)境中,使TELEMAC軟件的運行環(huán)境與底層架構(gòu)隔離。在Dockerfile文件構(gòu)建鏡像的過程,使用TARGETARCH命令表示目標(biāo)平臺的底層架構(gòu),并設(shè)置包含目標(biāo)平臺底層架構(gòu)信息的環(huán)境變量TARGETPLATFORM。最后使用“buildx”命令構(gòu)建鏡像,該命令將自動檢測當(dāng)前系統(tǒng)底層架構(gòu)并生成對應(yīng)架構(gòu)的鏡像,實現(xiàn)Docker鏡像跨底層架構(gòu)的適配。

    2.3.2 操作系統(tǒng)適配

    為了解決異構(gòu)運行環(huán)境不兼容的問題,Docker采用Linux命名空間和聯(lián)合文件系統(tǒng)兩項技術(shù)。利用Linux命名空間技術(shù)將每個容器的進(jìn)程、網(wǎng)絡(luò)、文件系統(tǒng)、用戶等資源隔離開來,形成一個獨立的虛擬環(huán)境,使應(yīng)用程序在一個獨立的操作系統(tǒng)環(huán)境中運行,使待適配軟件TELEMAC擺脫了對操作系統(tǒng)的依賴,運行在openEuler操作系統(tǒng)上。這一技術(shù)還可以解決國產(chǎn)操作系統(tǒng)軟件依賴庫不足,無法運行其他操作系統(tǒng)應(yīng)用程序的難題,同時還可以將所構(gòu)建的鏡像一鍵運行在所有支持Docker容器技術(shù)的國產(chǎn)操作系統(tǒng)上[18],使所構(gòu)建的Docker鏡像具有快速遷移和部署的特點[19]。通過聯(lián)合文件系統(tǒng)技術(shù),將TELEMAC源代碼、數(shù)據(jù)庫、依賴項的下載指令和環(huán)境變量的設(shè)置指令寫入Dockerfile文件,運行Dockerfile文件構(gòu)建鏡像。鏡像分為多個層次,每個層次都是一個只讀文件系統(tǒng),每個文件系統(tǒng)層都是基于前一個層次構(gòu)建而來,最后這些不同的層次被聯(lián)合在一起形成完整的容器鏡像。這一技術(shù)使得Docker鏡像的構(gòu)建和管理更加高效靈活,在不同操作系統(tǒng)之間進(jìn)行遷移也更加容易。

    3 TELEMAC鏡像構(gòu)建

    3.1 鏡像構(gòu)建原理

    Dockerfile是用來構(gòu)建Docker鏡像的文本文件,是由一條條構(gòu)建鏡像所需的指令和參數(shù)構(gòu)成。Docker鏡像的構(gòu)建是一個自上而下過程,如圖2所示,每一條命令的執(zhí)行都是分層構(gòu)建的過程。鏡像的構(gòu)建過程如下:首先選擇一個基礎(chǔ)鏡像作為基礎(chǔ)進(jìn)行新鏡像構(gòu)建,執(zhí)行第一個Dockerfile指令對基礎(chǔ)鏡像所生成的容器進(jìn)行修改,添加環(huán)境變量和軟件運行的必要庫;然后執(zhí)行類似“docker commit”的操作,將更改后的容器提交為一個新的鏡像層;最后以所構(gòu)建的新鏡像為基礎(chǔ)鏡像,運行一個新容器繼續(xù)執(zhí)行下一條命令。以此方式依次執(zhí)行Dockerfile中的每一條指令直至所有指令執(zhí)行完畢。

    3.2 TELEMAC鏡像構(gòu)建

    TELEMAC鏡像的構(gòu)建通過Dockerfile文件完成,Dockerfile文件將整個鏡像進(jìn)行了概括,其中包含了所構(gòu)建鏡像軟件的環(huán)境變量配置、軟件依賴安裝、軟件下載安裝的操作指令等[20]。本文采用的Docker版本為23.0.1,圖3為telemac:v8p4版本鏡像的分層構(gòu)建步驟。

    3.3 案例測試

    為了驗證生成的TELEMAC鏡像的功能,運行鏡像生成容器,選擇TELEMAC官方給出的計算案例進(jìn)行測試,測試過程如圖4所示。案例測試選擇TELEMAC-2D模塊中提供的二維淹沒模型(t2d_pluie_cn_geo_hyetograph)進(jìn)行地表淹沒模擬測試。案例所用模型是一個邊長為100 m的正方形,整個區(qū)域高程為0 m,由5 412個三角形網(wǎng)格組成,如圖5所示。TELEMAC-2D中的徑流模塊基于簡單的曲線數(shù)(CN)方法,其中CN值定義了土壤的滲透性。將計算區(qū)域分為Z1,Z2,Z3和Z4四個部分。CN值分別為85、95、80和90,如圖6所示。模型為閉合邊界,徑流將不會離開且在研究區(qū)域內(nèi)累積,計算區(qū)域的初始水深均為零。

    降雨使用關(guān)鍵字定義為100 mm/d,持續(xù)6 h,因此總降雨深度為25 mm。模擬時長為8 h,時間步長為60 s,流場和水深變化如圖7所示。從降雨開始到模擬結(jié)束,從水深變化可以看出,在第3 h時刻,Z2區(qū)域最先出現(xiàn)積水,隨著模擬時間的增加,Z4和Z3區(qū)域分別出現(xiàn)不同程度的積水現(xiàn)象,但積水深度均比Z2區(qū)域小,這與不同區(qū)域CN值的分布情況相一致。流場變化呈現(xiàn)從Z2區(qū)域流向Z3區(qū)域的趨勢,這是由于試算區(qū)域高程均為0 m,Z2區(qū)域CN值最大,產(chǎn)流量最大,地面出現(xiàn)積水最深,而Z3區(qū)域恰好相反,所以流場出現(xiàn)圖7中的變化趨勢,表明流場和水深的變化與CN值的分布相符合。同時,將計算結(jié)果與TELEMAC官網(wǎng)結(jié)果進(jìn)行對比,本案例最終的結(jié)果與Ligier[21]相一致。上述分析表明本研究實現(xiàn)了TELEMAC軟件的國產(chǎn)化適配且計算功能沒有發(fā)生改變。

    為了驗證本研究的通用性,進(jìn)一步將所構(gòu)建的TELEMAC鏡像在麒麟V10國產(chǎn)操作系統(tǒng)上進(jìn)行了移植實驗,運行鏡像計算相同測試案例,結(jié)果與上述分析相同。這意味著本研究不僅實現(xiàn)了國產(chǎn)化適配目標(biāo),且在適配Docker引擎的國產(chǎn)系統(tǒng)上均能實現(xiàn)TELEMAC軟件適配,且所構(gòu)建的TELEMAC鏡像不會因操作系統(tǒng)的改變而發(fā)生變化,具有很強的穩(wěn)定性和跨系統(tǒng)遷移性。

    4 結(jié)束語

    為了完善國產(chǎn)操作系統(tǒng)的軟件生態(tài)環(huán)境,本文采用Docker容器技術(shù)對水文水動力學(xué)計算軟件TELEMAC進(jìn)行鏡像構(gòu)建,使其能適配于國產(chǎn)硬件和操作系統(tǒng),并進(jìn)行了相關(guān)測試,主要結(jié)論如下:

    a)采用Docker跨平臺鏡像技術(shù)構(gòu)建了TELEMAC鏡像文件,經(jīng)測試所構(gòu)建的TELEMAC鏡像能夠在以鯤鵬920處理器為核心的openEuler和麒麟V10等國產(chǎn)操作系統(tǒng)上運行。這實現(xiàn)了TELEMAC軟件跨架構(gòu)和系統(tǒng)的遷移,做到了水文水動力學(xué)科學(xué)計算軟件的國產(chǎn)化適配,且計算功能沒有發(fā)生改變。

    b)Docker鏡像中包含了軟件的代碼、依賴庫、環(huán)境變量和配置文件,避免了軟件之間相互沖突問題,能夠?qū)崿F(xiàn)TELEMAC軟件的快速遷移和部署。在麒麟V10操作系統(tǒng)上的測試表明,構(gòu)建的TELEMAC鏡像功能不會因操作系統(tǒng)的改變而發(fā)生變化,具有穩(wěn)定性和可移植性,在所有適配Docker引擎的國產(chǎn)系統(tǒng)上均能實現(xiàn)TELEMAC軟件適配,相較于代碼重構(gòu)、中間層代碼移植技術(shù),本文研究技術(shù)具有普適性的優(yōu)點。

    c)TELEMAC鏡像是以源代碼為基礎(chǔ)進(jìn)行的鏡像構(gòu)建,做到了關(guān)鍵代碼自主可控,有利于軟件的二次開發(fā)和版本更新。同時,由于鏡像具有可加性,可以將telemac:v8p4鏡像作為基礎(chǔ)鏡像進(jìn)行二次鏡像構(gòu)建,在現(xiàn)有鏡像的基礎(chǔ)上添加其他計算功能,實現(xiàn)耦合計算,完成TELEMAC軟件基于國產(chǎn)系統(tǒng)的深度開發(fā)。

    本研究對TELEMAC軟件進(jìn)行了完整代碼的鏡像構(gòu)建,鏡像量級較大,后續(xù)研究將對TELEMAC軟件的源代碼進(jìn)行拆解,構(gòu)建滿足不同計算需求的模塊鏡像,以降低鏡像量級。適配TELEMAC軟件到ARM架構(gòu)可以提高其計算性能,但具體的性能提升數(shù)值需要進(jìn)一步研究和評估。

    參考文獻(xiàn):

    [1]綦志勇,常排排.國產(chǎn)操作系統(tǒng)的機遇與挑戰(zhàn)[J].電腦知識與技術(shù):學(xué)術(shù)版,2020,16(14):246-247.(Qi Zhiyong,Chang Paipai.Opportunities and challenges of domestic operating systems[J].Computer Knowledge and Technology,2020,16(14):246-247.)

    [2]Kaiser S,Haq M S,Tosun A S,et al.Container technologies for ARM architecture:a comprehensive survey of the state-of-the-art[J].IEEE Access,2023,10:84853-84881.

    [3]金育妍,余天豪,王松波,等.ARM架構(gòu)云服務(wù)器的CPU功耗模型研究[J].計算機科學(xué),2022,49(10):59-65.(Jin Yuyan,Yu Tianhao,Wang Songbo.et al.CPU power model for ARM architecture cloud servers[J].Computer Science,2022,49(10):59-65.)

    [4]Blake W F,Apan Q,Jelena T,et al.Migrating software from x86 to ARM architecture:an instruction prediction approach[C]//Proc of IEEE International Conference on Networking,Architecture and Sto-rage.2021.)

    [5]曹人之.氣象學(xué)應(yīng)用在鯤鵬集群上的移植及性能優(yōu)化研究[D].蘭州:蘭州大學(xué),2022.(Cao Renzhi.Research on migration and performance optimization of meteorological application in Kunpeng cluster[D].Lanzhou:Lanzhou University,2022.)

    [6]吳逸文,張洋,王濤,等.從Docker容器看容器技術(shù)的發(fā)展:一種系統(tǒng)文獻(xiàn)綜述的視角[J].軟件學(xué)報,2023,34(12):5527-5551.(Wu Yiwen,Zhang Yang,Wang Tao.et al.Development exploration of container technology through docker containers:a systematic literature review perspective[J].Journal of Software,2023,34(12):5527-5551.)

    [7]易升海,彭江強,卿勇軍.等.淺析Docker容器技術(shù)的發(fā)展前景[J].電信工程技術(shù)與標(biāo)準(zhǔn)化,2018,31(6):88-91.(Yi Shenghai,Peng Jiangqiang,Qing Yongjun.et al.Analysis on the development of Docker container technology[J].Telecom Engineering Technics and Standardization,2018,31(6):88-91.)

    [8]董子奇,劉淇,高原,等.基于容器技術(shù)的微服務(wù)部署研究[J].信息技術(shù)與標(biāo)準(zhǔn)化,2023(Z1):93-98.(Dong Ziqi,Liu Qi,Gao Yuan.et al.Research of microservice deployment based on container technology[J].Information Technology & Standardization,2023(Z1):93-98.)

    [9]張建云,宋曉猛,王國慶,等.變化環(huán)境下城市水文學(xué)的發(fā)展與挑戰(zhàn):I.城市水文效應(yīng)[J].水科學(xué)進(jìn)展,2014,25(4):594-605.(Zhang Jianyun,Song Xiaomeng,Wang Guoqing.et al.Development and challenges of urban hydrology in a changing environment:I.hydrological response to urbanization[J].Advances in Water Science,2014,25(4):594-605.)

    [10]徐宗學(xué),葉陳雷.城市暴雨洪澇模擬:原理,模型與展望[J].水利學(xué)報,2021,52(4):381-392.(Xu Zongxue,Ye Chenlei.Simulation of urban flooding/waterlogging processes:principle,models and prospects[J].Journal of Hydraulic Engineering,2021,52(4):381-392.)

    [11]臧文斌,趙雪,李敏,等.城市洪澇模擬技術(shù)研究進(jìn)展及發(fā)展趨勢[J].中國防汛抗旱,2020,30(11):1-13.(Zang Wenbin,Zhao Xue,Li Min,et al.Research progress and development trend of urban flood simulation technology[J].China Flood & Drought Management,2020,30(11):1-13.)

    [12]Zhou Qianqian,Mikkelsen P S,Halsns K.et al.Framework for economic pluvial flood risk assessment considering climate change effects and adaptation benefits[J].Journal of Hydrology,2012,414-415:539-549.

    [13]Horritt M S,Bates P D.Evaluation of 1D and 2D numerical models for predicting river flood inundation[J].Journal of Hydrology,2002,268(1):87-99.

    [14]Pinel S,Bonnet M P,Silva J.et al.Flooding dynamics within an Amazonian floodplain:water circulation patterns and inundation duration[J].Water Resources Research,2020,56(1):e2019WR026081.

    [15]劉家宏,李澤錦,梅超,等.基于TELEMAC-2D的不同設(shè)計暴雨下廈門島城市內(nèi)澇特征分析[J].科學(xué)通報,2019,64(19):2055-2066.(Liu Jiahong,Li Zejin,Mei Chao.et al.Urban flood analysis for different design storm hyetographs in Xiamen Island based on TELEMAC-2D[J].Chinese Science Bulletin,2019,64(19):2055-2066.)

    [16]邵蕊,邵薇薇,蘇鑫,等.基于TELEMAC-2D模型分析不同洪澇情景對城市應(yīng)急響應(yīng)時間的影響[J].清華大學(xué)學(xué)報:自然科學(xué)版,2022,62(1):60-69.(Shao Rui,Shao Weiwei,Su Xin.et al.Impact of various flood scenarios on urban emergency responses times based on the TELEMAC-2D model[J].Journal of Tsinghua University:Science and Technology,2022,62(1):60-69.)

    [17]都利亞,王兆禮,祁旭陽,等.基于TELE MAC-2D模型的城區(qū)水庫潰壩洪水?dāng)?shù)值模擬——以廣州市龍洞水庫為例[J].地球科學(xué)與環(huán)境學(xué)報,2022,44(5):850-859.(Du Liya,Wang Zhaoli,Qi Xu-yang.et al.Numerical simulation of dam-break flood in urban area based on TELEMAC-2D model-a case study for Longdong Reservoir in Guangzhou,China[J].Journal of Earth Sciences and Environment,2022,44(5):850-859.)

    [18]Boettiger C.An introduction to Docker for reproducible research,with examples from the R environment[J].ACM SIGOPS Operating Systems Review,2014,49(1):71-79.

    [19]田際,王大鵬,劉希念,等.基于Docker的發(fā)電企業(yè)私有云一體化信息管理平臺開發(fā)[J].物聯(lián)網(wǎng)技術(shù),2021,11(5):51-54.(Tian Ji,Wang Dapeng,Liu Xinian.et al.Development of integrated information management platform for private cloud for power generation enterprises based on Docker[J].Internet of Things Technologies,2021,11(5):51-54.)

    [20]徐棚.容器技術(shù)在國產(chǎn)操作系統(tǒng)環(huán)境中軟件部署研究[D].石家莊:石家莊鐵道大學(xué),2021.(Xu Peng.Research on software deployment of container technology in domestic operating system environment[D].Shijiazhuang:Shijiazhuang Tiedao University,2021.)

    [21]Ligier P L.Implementation of a rainfall-runoff model in TELEMAC-2D[C]//Proc of the 23rd TELEMAC-MASCARET User Conference.2016.

    泸西县| 金湖县| 武义县| 大宁县| 大化| 松桃| 石台县| 榆中县| 桦南县| 温宿县| 锡林浩特市| 楚雄市| 鄢陵县| 林口县| 陆河县| 台中市| 遵化市| 泰州市| 龙口市| 马尔康县| 深水埗区| 东乌珠穆沁旗| 大冶市| 鹤山市| 若尔盖县| 苏尼特右旗| 晋宁县| 甘德县| 大厂| 朝阳县| 阜南县| 芦溪县| 庆云县| 静宁县| 聂拉木县| 云安县| 博罗县| 壤塘县| 岑巩县| 株洲县| 桦川县|