小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

工業(yè)軟件研發(fā)中處理超大模型(7)--文件處理

 多物理場仿真 2023-01-25 發(fā)布于上海

工業(yè)軟件研發(fā)中處理超大模型(1)

工業(yè)軟件研發(fā)中處理超大模型(2)

工業(yè)軟件研發(fā)中處理超大模型(3)

工業(yè)軟件研發(fā)中處理超大模型(4)

工業(yè)軟件研發(fā)中處理超大模型(5)--求解器通用篇

工業(yè)軟件研發(fā)中處理超大模型(6)--有限元求解器


在以前的文章中稍微介紹了一下工業(yè)軟件中超大文件的處理方法,本文再系統(tǒng)的介紹的一些通用的處理方法。閱讀對象主要定位于軟件研發(fā)人員。

常用術(shù)語:

文本格式:基于字節(jié)編碼,即可以使用類似記事本打開,可以明文編輯的文件格式

二進(jìn)制格式:基于值的編碼,使用記事本打開是亂碼,無法編輯,按數(shù)值定義字節(jié)保存長度

工程文件:工業(yè)軟件自定義的文件格式

幾何文件:常用的CAD數(shù)據(jù)文件,比如*.step,  *.igs, *.x_t, *.jt,*.dxf等

渲染文件:用于顯示的數(shù)據(jù)文件,比如VTK數(shù)據(jù)

網(wǎng)格文件:常用作求解器計(jì)算的輸入文件,比如*.bdf, *.inp,*.cas,*.cdb等

結(jié)果文件:仿真之后用于保存結(jié)果的文件

中間文件:在軟件使用過程中保存的臨時(shí)文件,通常不對用戶開放

序列化和反序列化:通俗講就是將內(nèi)存中的數(shù)據(jù)以二進(jìn)制保存(序列化)和加載(反序列化)

在軟件研發(fā)中,最容易生成超大文件的幾個(gè)數(shù)據(jù)

  1. 三維幾何數(shù)據(jù)

  2. 網(wǎng)格數(shù)據(jù)

  3. 渲染數(shù)據(jù)

  4. 求解器中間數(shù)據(jù)

  5. 結(jié)果文件

處理超大模型文件的一些策略:

策略一:避免使用B-Rep幾何數(shù)據(jù)

空間中任意一個(gè)長方形,使用參數(shù)描述,只需要兩個(gè)頂點(diǎn)+旋轉(zhuǎn)平移矩陣數(shù)據(jù)即可表達(dá),而使用B-Rep至少需要200行的拓?fù)?幾何數(shù)據(jù)文件存儲。對于幾何造型要求不高的幾何數(shù)據(jù),盡量使用參數(shù)描述,而不要使用B-Rep。比如建筑里的實(shí)體框架結(jié)構(gòu),給出框架每個(gè)結(jié)點(diǎn)坐標(biāo)和柱的截面長寬,即可表達(dá)。做框架整體結(jié)構(gòu)分析主要以桿梁索單元為主,不太需要實(shí)體結(jié)構(gòu)。類似,IC設(shè)計(jì)中的走線,通過線的轉(zhuǎn)彎節(jié)點(diǎn)和走線寬度高度或截面(梯形)即可定義,不需要復(fù)雜的實(shí)體結(jié)構(gòu)。實(shí)際測試表明,使用參數(shù)存儲三維結(jié)構(gòu)數(shù)據(jù)文件,其大小通常只有B-Rep結(jié)構(gòu)的5%-10%,甚至更少。

策略二:使用二進(jìn)制格式代替文本格式

二進(jìn)制格式的讀寫性能要好于文本格式,這種性能提升在超大模型讀寫時(shí)非常明顯?,F(xiàn)在固態(tài)硬盤的讀寫速率已經(jīng)達(dá)到了500M/秒,所以在硬件讀寫上基本沒有太大瓶頸,性能瓶頸主要在數(shù)據(jù)讀取之后的處理上。

文本格式的好處是,如果使用壓縮算法存儲,壓縮比可以非常高,在一些有傳輸瓶頸的場景有優(yōu)勢,比如網(wǎng)絡(luò)傳輸(百度如何傳輸400T)。隨著存儲硬件越來越便宜,在實(shí)際應(yīng)用中,大文件存儲并不是太大的問題,而文件的讀寫性能是比較關(guān)注的。

策略三:內(nèi)存映射文件

內(nèi)存映射文件,是由一個(gè)文件到一塊內(nèi)存的映射。內(nèi)存映射文件與虛擬內(nèi)存有些類似,通過內(nèi)存映射文件可以保留一個(gè)地址空間的區(qū)域,同時(shí)將物理存儲器提交給此區(qū)域,內(nèi)存文件映射的物理存儲器來自一個(gè)已經(jīng)存在于磁盤上的文件,不需要再對文件執(zhí)行I/O操作,從而解決內(nèi)存開銷,讀寫瓶頸等問題。但正如所講,硬盤讀寫本身性能問題不大。因此內(nèi)存映射主要解決了大模型讀過程中內(nèi)存開銷,CPU占用過高等問題。Boost庫提供了Interprocess來進(jìn)行內(nèi)存映射,內(nèi)存共享等操作。

策略四:分治并行

一篇文章入門仿真軟件性能優(yōu)化一文中提到了分治是提升性能最常用的方式,在文件處理中體現(xiàn)在兩方面:1.盡可能把大數(shù)據(jù)按照不同屬性放在分散的幾個(gè)大小接近的文件中,最常見的比如把網(wǎng)格文件中的節(jié)點(diǎn)數(shù)據(jù)和單元放在兩個(gè)文件里;2.讀同一個(gè)文件時(shí),統(tǒng)一讀取之后使用多線程分塊解析,正如前所說,文件讀入性能并不在硬盤讀取而是在數(shù)據(jù)解析上。為了最大化分治并行,在文件結(jié)構(gòu)設(shè)計(jì)上,相同或類似的屬性盡可能放在一起,文件內(nèi)容上,盡可能減少數(shù)據(jù)冗余度。

策略五:保存幾何和渲染映射數(shù)據(jù)

在三維幾何超大模型的加載和顯示中,性能瓶頸主要體現(xiàn)在三個(gè)方面:1.三維數(shù)據(jù)的創(chuàng)建;2.三維數(shù)據(jù)的三角化;3.三角化數(shù)據(jù)的渲染。如果能夠保存幾何和渲染映射數(shù)據(jù)到文件,下次打開文件直接加載該數(shù)據(jù)??梢员苊馍鲜鋈坎僮?,大大加快模型數(shù)據(jù)加載。

策略六:數(shù)據(jù)輕量化

數(shù)據(jù)輕量化本質(zhì)上是把大模型數(shù)據(jù)中不需要或不重要的部分去掉,或者把原始數(shù)據(jù)轉(zhuǎn)成另外一種輕量級的格式。對于軟件來說,任何從外部導(dǎo)入的數(shù)據(jù)都需要變成軟件內(nèi)部的數(shù)據(jù)格式,在這個(gè)過程中,可以根據(jù)業(yè)務(wù)做輕量化。在對結(jié)果數(shù)據(jù)處理時(shí)也可以有類似操作。

以結(jié)構(gòu)仿真結(jié)果為例,比如有限元模型有1億的節(jié)點(diǎn),應(yīng)力一般需要計(jì)算最大最小和一般應(yīng)力,XYZ方向也要單獨(dú)顯示,業(yè)務(wù)需求還要MISES,等效應(yīng)力等,應(yīng)變,位移也類似。單個(gè)節(jié)點(diǎn)上的結(jié)果數(shù)據(jù)以double值計(jì)算大概要20-30億。這種規(guī)模數(shù)據(jù)量使用常規(guī)的計(jì)算顯示方式是無法實(shí)現(xiàn)的,所以需要從業(yè)務(wù)上進(jìn)行數(shù)據(jù)輕量化。比如對結(jié)果平滑部分進(jìn)行合并處理;實(shí)體單元只顯示表面數(shù)據(jù);單個(gè)結(jié)果拆分成多個(gè)文件;在不影響性能情況下適當(dāng)采用壓縮算法等。

策略七:避免文件操作過程中的計(jì)算

超大模型的讀寫過程中加入計(jì)算邏輯,會進(jìn)一步影響性能。最常見的是這種網(wǎng)格結(jié)構(gòu)定義:

網(wǎng)格類型  網(wǎng)格節(jié)點(diǎn)1  網(wǎng)格節(jié)點(diǎn)2 網(wǎng)格節(jié)點(diǎn)3 ...

實(shí)現(xiàn)中:
類型1 三角形 1 2 5
類型2 四邊形 3 4 6 3
類型1 三角形 4 5 6
類型2 三角形 2 8 5 6

這種設(shè)計(jì)根據(jù)類型來讀寫后面的數(shù)據(jù),表面看起來具有統(tǒng)一的設(shè)計(jì),方便實(shí)現(xiàn),但在實(shí)際應(yīng)用中大模型會產(chǎn)生嚴(yán)重性能瓶頸。理想的做法是將某一類型的數(shù)據(jù)作為一個(gè)屬性單獨(dú)操作。上述設(shè)計(jì)改成:

類型 1 三角形:
1 2 3
4 5 6
類型2 四邊形
3 4 6 3
2 8 5 6

好的做法是:讀寫文件前,將所有需要讀寫的數(shù)據(jù)先合理組織生成好,后續(xù)只進(jìn)行純I/O操作。

策略八:規(guī)范研發(fā)流程

這個(gè)屬于非技術(shù)。以往經(jīng)驗(yàn)表明,研發(fā)中對于文件讀寫的都是各自為戰(zhàn),且寫法各異,有用流,有用c風(fēng)格,也有使用第三方庫的,而每種寫法也都有各自的使用方法。在文件小的時(shí)候都能實(shí)現(xiàn)各自功能,問題不大,但文件大一些之后,有些就容易出現(xiàn)bug和瓶頸。所以規(guī)范研發(fā)流程,討論清楚每種方法的利弊和使用場景,將文件讀寫統(tǒng)一規(guī)范使用。


筆者處理過的最大的單個(gè)文件在40G左右,如果您有更好的超大模型文件處理經(jīng)驗(yàn),也歡迎留言。

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多