謝文昊
摘 要: 光照對(duì)植物冠層生長(zhǎng)、繁殖的影響是巨大的,但在仿真植物冠層光照分布的過(guò)程中由于需要處理的數(shù)據(jù)量很大,如果利用單處理器計(jì)算機(jī)計(jì)算,會(huì)導(dǎo)致計(jì)算耗時(shí)過(guò)長(zhǎng),甚至無(wú)法得到高精度的仿真結(jié)果。為了提高計(jì)算速度,將用于計(jì)算植物冠層光分布的深度緩存排序算法進(jìn)行并行化處理,移植到大型多處理器計(jì)算機(jī)上進(jìn)行計(jì)算,并通過(guò)在普通計(jì)算機(jī)上開發(fā)客戶端對(duì)仿真計(jì)算進(jìn)行控制。設(shè)計(jì)實(shí)現(xiàn)一套基于客戶機(jī)?服務(wù)器模式的仿真系統(tǒng)。應(yīng)用該系統(tǒng)對(duì)不同生長(zhǎng)時(shí)期的水稻進(jìn)行光照仿真,得到了效果圖。從而得出結(jié)論該系統(tǒng)在分析植物生長(zhǎng)趨勢(shì)模擬全天冠層光照變化方面有著很大的應(yīng)用前景。
關(guān)鍵詞: 植物冠層; 光照分布; 并行仿真; 客戶機(jī)?服務(wù)器模式; MPI并行模式; 深度緩存排序算法
中圖分類號(hào): TN212?34; TP181 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2018)06?0150?04
Abstract: Illumination has a great influence on the growth and propagation of plant canopy. As a large amount of data needs to be processed during the simulation process of plant canopy illumination distribution, the time consumption of calculation can be very long, and the high?precision simulation results cannot even be obtained if the single processor computer is used for calculation. To improve the calculation speed, the parallel processing is performed for the Z?buffer sorting algorithm which is used for calculation of plant canopy illumination distribution and then transplanted to the large multiprocessor computer for calculation. The simulation calculation is controlled by developing the client on the ordinary computer. A simulation system based on client?server mode was designed and implemented. The system was applied to illumination simulation for paddies in different grown periods and the effect diagram was obtained. It can be concluded that the system has a great application prospect in plant growth tendency analysis and full?day canopy illumination variation simulation.
Keywords: plant canopy; illumination distribution; parallel simulation; client?server mode; MPI parallel mode; Z?buffer sorting algorithm
0 引 言
植物生長(zhǎng)過(guò)程離不開光照的影響,因此計(jì)算光照在植物冠層內(nèi)的分布情況就很有必要[1]。隨著計(jì)算機(jī)圖形學(xué)的發(fā)展和應(yīng)用,目前常用的模擬方法有:輻射度方法[2]、光線跟蹤方法、深度緩存排序算法等[3]。其中深度緩存排序算法主要是先分別計(jì)算植物冠層在各方向光線直射下由于相互遮擋而產(chǎn)生的葉片對(duì)光輻射的截獲情況再進(jìn)行多方向疊加從而得到仿真結(jié)果。該方法雖然忽略了光的反射透射作用,但對(duì)于主要表現(xiàn)為光線直射部分的光合有效輻射分布的模擬有著很高的精度,因此被廣泛使用。另外,各方向上的光分布計(jì)算相互獨(dú)立,也很適合算法并行化處理。
近年來(lái),計(jì)算機(jī)硬件技術(shù)不斷創(chuàng)新發(fā)展,高性能的多處理器計(jì)算機(jī)已經(jīng)成為科學(xué)計(jì)算的主要工具之一[4]。MPI并行模式也已作為一種普遍流行的并行編程規(guī)范被人們廣泛接受。并行計(jì)算是相對(duì)于串行計(jì)算而言的,并行計(jì)算是指在同一時(shí)間間隔內(nèi)增加操作系統(tǒng)進(jìn)程數(shù)量,利用多臺(tái)計(jì)算機(jī)共同實(shí)現(xiàn)同一個(gè)任務(wù)。MPI(Message Passing Interface)可以將一個(gè)大型任務(wù)分解成多個(gè)進(jìn)程,再把這些進(jìn)程分配給多臺(tái)計(jì)算機(jī)進(jìn)行并行處理,通過(guò)計(jì)算結(jié)果的綜合來(lái)得到最終結(jié)果[5]。本文將傳統(tǒng)串行實(shí)現(xiàn)的用于計(jì)算植物冠層光分布的深度緩存排序算法并行化處理,并移植到高性能多處理器計(jì)算機(jī)上運(yùn)行,建立服務(wù)器程序。因?yàn)槠胀ㄓ脩艉茈y直接操作高性能計(jì)算機(jī),所以相應(yīng)地設(shè)計(jì)開發(fā)了安裝在普通電腦上用于控制服務(wù)器的客戶端。從而建立了一套客戶端?服務(wù)器模式的植物冠層光分布的并行仿真計(jì)算系統(tǒng)。
1 并行算法
1.1 深度緩存排序算法原理
深度緩存(Z?buffer)[6]最早由Catmull提出,是一種典型的、最簡(jiǎn)單的圖像空間面消隱算法,但所需的存儲(chǔ)容量較大。該算法的原理是,先將待處理的景物表面上的采樣點(diǎn)變換到圖像空間(屏幕坐標(biāo)系),計(jì)算其深度值,并根據(jù)采樣點(diǎn)在屏幕上的投影位置,將其深度值與已存儲(chǔ)在Z緩存器中相應(yīng)像素處的原可見點(diǎn)的深度值進(jìn)行比較。如果新的采樣點(diǎn)的深度(即Z軸坐標(biāo)值)大于原可見點(diǎn)的深度,表明新的采樣點(diǎn)遮住了原可見點(diǎn),則用該采樣點(diǎn)處的顏色值更新幀緩存器中相應(yīng)像素的顏色值,同時(shí)用其深度值更新Z緩存器中的深度值;否則,不做更改。深度緩存算法是在為物件進(jìn)行著色時(shí),執(zhí)行“隱藏面消除”工作的一項(xiàng)技術(shù),所以隱藏物件背后的部分就不會(huì)被顯示出來(lái)。 在3D環(huán)境中每個(gè)像素中會(huì)利用一組數(shù)據(jù)資料來(lái)定義像素在顯示時(shí)的縱深度。Z?buffer所用的位數(shù)越高,則代表該顯示卡所提供的物件縱深感也越精確。endprint
當(dāng)忽略光的反射、透射作用,只考慮光的直射影響時(shí),植株結(jié)構(gòu)相互遮擋是植物冠層內(nèi)的光分布差異情況產(chǎn)生的主要原因,所以是可以應(yīng)用深度緩存算法進(jìn)行計(jì)算的。文獻(xiàn)[7]中給出了在計(jì)算植物冠層光分布時(shí)的原模型,如圖1所示。先確定一塊矩形的植物冠層區(qū)域?yàn)閷?shí)際觀測(cè)區(qū)域,假設(shè)該實(shí)測(cè)區(qū)域周圍存在著與實(shí)測(cè)區(qū)域冠層結(jié)構(gòu)完全相同的植物冠層,這樣假設(shè)是為了避免其周圍區(qū)域(稱其為復(fù)制域)的冠層結(jié)構(gòu)因?yàn)檎趽醵鴮?duì)區(qū)域內(nèi)的光分布產(chǎn)生影響,見圖1。
此外,為了方便投影,該方法還要在三維空間坐標(biāo)系中對(duì)葉面進(jìn)行劃分,將其分割成很小的空間三角形面元,在如圖1所示的光線照射下來(lái)進(jìn)行投影[7]。
該算法在投影過(guò)程中先在冠層正上方建立光照平面,將它作為全部入射光線的來(lái)源,并將光照平面進(jìn)行二維網(wǎng)格化[8],在光照平面二維網(wǎng)格化的基礎(chǔ)上假定每個(gè)網(wǎng)格上有一條入射光線。接下來(lái),由光線方向?qū)⑷~片面元投影到上述的光照平面上。對(duì)于類似于圖1中的A這樣的投影不在投影平面的小面元,可以用復(fù)制域中和A位置相同的面元B的投影來(lái)代替它。最后使用Z?buffer深度排序法計(jì)算投影后落在同一個(gè)小網(wǎng)格的小面元序列的深度緩存值,以便找到距離光照平面最短的小面元。這樣可以通過(guò)此面元光照的分布情況,進(jìn)而統(tǒng)計(jì)出光照在植物冠層中的三維分布[9]。
上述投影過(guò)程中,面元的投影算法可以通過(guò)下式得到。設(shè)實(shí)測(cè)區(qū)域內(nèi)任意一點(diǎn)[(x,y,z)]投影后的坐標(biāo)就可以表示為:
[px=x+(ytop-y)?cos(SunAzimuth)tan(SunH)pz=z+(ytop-y)?sin(SunAzimuth)tan(SunH)]
式中:采用右手坐標(biāo)系,x軸向正南,y軸向正上,z軸向正西;[px],[pz]為[x,z]方向上投影后的坐標(biāo)值;[ytop]為實(shí)測(cè)區(qū)域高度;SunAzimuth為太陽(yáng)方位角,以正南為0°,向西為正,向東為負(fù);SunH為太陽(yáng)高度角,即太陽(yáng)與地平面的夾角。
1.2 算法的并行化
仿真野外條件下植物冠層光照的分布情況,就要在各方向上先分別對(duì)植物冠層進(jìn)行深度緩存排序來(lái)計(jì)算單一方向光入射時(shí)植物冠層光分布結(jié)果,再對(duì)各方向計(jì)算結(jié)果進(jìn)行累加。單處理器計(jì)算機(jī)只能依次串行的計(jì)算每個(gè)方向上的光照情況再將結(jié)果相加,工作量大、耗時(shí)長(zhǎng)。另外又受到實(shí)際內(nèi)存限制常常得不到令人滿意的高精度仿真結(jié)果。而多處理器高性能計(jì)算機(jī)則可以同時(shí)并發(fā)地執(zhí)行多項(xiàng)任務(wù),所以并行化算法將每個(gè)方向上的光照分布計(jì)算工作平均分布到高性能計(jì)算機(jī)不同的處理器中并發(fā)執(zhí)行,并將結(jié)果匯總到共用的數(shù)據(jù)容器中,下面把像這樣的負(fù)責(zé)某一方向上深度緩存排序計(jì)算的處理器稱為計(jì)算節(jié)點(diǎn)。如圖2所示,每一個(gè)計(jì)算節(jié)點(diǎn)上運(yùn)行著一個(gè)計(jì)算光分布的進(jìn)程,彼此相互獨(dú)立平行。利于讀寫鎖維護(hù)共用數(shù)據(jù)容器的正確使用。當(dāng)最后一個(gè)計(jì)算節(jié)點(diǎn)上光分布運(yùn)算進(jìn)程結(jié)束時(shí),共用數(shù)據(jù)容器中的光分布結(jié)果便是自然條件下多方向光同時(shí)入射植物冠層時(shí)產(chǎn)生的光輻射分布情況[10]。
2 系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
植物冠層并行仿真系統(tǒng)采用客戶機(jī)?服務(wù)器系統(tǒng)結(jié)構(gòu)模式,并基于面向?qū)ο蟮乃枷脒M(jìn)行設(shè)計(jì),使用C++語(yǔ)言進(jìn)行實(shí)現(xiàn),并結(jié)合OpenGL做三維可視化顯示。整個(gè)系統(tǒng)采用模塊化的設(shè)計(jì)思想,將系統(tǒng)不同功能封裝在不同的邏輯模塊中。其中主要的模塊有:并行運(yùn)算模塊、服務(wù)器監(jiān)聽模塊、客戶機(jī)人機(jī)交互模塊和三維顯示模塊。
2.1 并行計(jì)算模塊的設(shè)計(jì)和實(shí)現(xiàn)
該模塊運(yùn)行在聯(lián)想深騰1800高性能多處理器計(jì)算機(jī)上,操作系統(tǒng)為Redhat5。算法采用MPI+C并行編程技術(shù),完成計(jì)算植物冠層光分布的深度緩存排序算法的并行化工作。其中主要類為:
1) Light類:系統(tǒng)光源類。主要建模實(shí)現(xiàn)了單方向上的平行光線。
2) Sky類:天空類。將天空半球的漫反射光線劃分為多方向上的平行入射光線,并為每一方向上的光線提供初始輻射強(qiáng)度。
3) Triangle類:葉片面元類,記錄葉片面元坐標(biāo)信息,用于計(jì)算深度緩存排序。
4) Calculatefork類:節(jié)點(diǎn)計(jì)算控制類。用于控制計(jì)算節(jié)點(diǎn)中光分布模擬的算法流程。
5) Communicate類:節(jié)點(diǎn)通信控制類。負(fù)責(zé)不同計(jì)算節(jié)點(diǎn)之間的通信控制,管理讀寫鎖等工作。
各類的具體關(guān)系見圖3。
2.2 服務(wù)器監(jiān)聽模塊的設(shè)計(jì)和實(shí)現(xiàn)
該模塊同樣運(yùn)行于高性能計(jì)算機(jī)上,主要負(fù)責(zé)監(jiān)聽客戶端發(fā)來(lái)的計(jì)算請(qǐng)求,根據(jù)請(qǐng)求建立并行運(yùn)算服務(wù),檢測(cè)用戶上傳數(shù)據(jù)是否合理,并在運(yùn)算過(guò)程中將實(shí)時(shí)信息傳給遠(yuǎn)程客戶端。模塊采用Socket套接字編程技術(shù)進(jìn)行網(wǎng)絡(luò)進(jìn)程間的通信。使用TCP/IP協(xié)議三步握手式建立連接方法,確保數(shù)據(jù)在本地服務(wù)器和遠(yuǎn)程客戶機(jī)之間的無(wú)誤傳輸。采用多進(jìn)程技術(shù)保證服務(wù)器可以同時(shí)響應(yīng)多個(gè)計(jì)算請(qǐng)求。主進(jìn)程一直等待監(jiān)聽,如有客戶端傳來(lái)的計(jì)算請(qǐng)求則開啟新的子進(jìn)程完成計(jì)算??偟膩?lái)說(shuō),該部分提供了并行計(jì)算模塊和遠(yuǎn)程客戶端之間的通信控制服務(wù)。其主要算法流圖如圖4所示。
2.3 客戶機(jī)人機(jī)交互模塊的設(shè)計(jì)和實(shí)現(xiàn)
該模塊運(yùn)行于普通個(gè)人電腦的Windows操作系統(tǒng)下,在VC++環(huán)境下采用MFC實(shí)現(xiàn)。它主要為用戶提供一個(gè)人機(jī)交互的GUI平臺(tái),接收用戶設(shè)計(jì)的運(yùn)算參數(shù)和數(shù)據(jù)文件并進(jìn)行上傳。向用戶顯示運(yùn)算過(guò)程信息,并在運(yùn)算結(jié)束后將服務(wù)器指定位置下的運(yùn)算結(jié)果下載到本地,供科學(xué)分析和三維顯示模塊生成仿真效果圖使用。從而達(dá)到用客戶端GUI控制服務(wù)器并行運(yùn)算的目的。
2.4 三維顯示模塊的設(shè)計(jì)和實(shí)現(xiàn)endprint
該模塊負(fù)責(zé)根據(jù)下載到客戶端的光分布運(yùn)算結(jié)果數(shù)據(jù)建立仿真效果圖并用OpenGL方法來(lái)實(shí)現(xiàn)三維渲染,完成系統(tǒng)所需的可視化處理和輸出。為分析人員提供直觀感性的仿真結(jié)果。植物冠層光分布的并行仿真計(jì)算系統(tǒng)有客戶端、服務(wù)器兩大部分,并由服務(wù)器監(jiān)聽模塊、人機(jī)交互模塊、并行計(jì)算模塊以及三維顯示模塊四個(gè)主要模塊組成。它們的相互關(guān)系如圖5所示。
以上四部分相互協(xié)作完成了系統(tǒng)的主要數(shù)據(jù)輸入,并行仿真計(jì)算和結(jié)果輸出等功能。
3 實(shí) 驗(yàn)
植物冠層光分布的并行仿真計(jì)算系統(tǒng)服務(wù)器程序的兩部分在Linux系統(tǒng)下分別使用Inter編譯器和GUN編譯器編譯成功,客戶端程序在Windows上用Visual Studio 2005開發(fā)調(diào)試成功,圖6給出了仿真計(jì)算不同時(shí)期水稻光照分布后客戶端顯示的效果截圖。
通過(guò)圖6可以清楚地看到水稻不同時(shí)期光照的效果圖,并且能夠了解服務(wù)器端運(yùn)行信息,使用戶感覺(jué)計(jì)算就像在本地運(yùn)行一樣。同時(shí)由于每個(gè)計(jì)算節(jié)點(diǎn)任務(wù)量相對(duì)固定,均為單一方向光分布計(jì)算。所以該系統(tǒng)仿真計(jì)算耗時(shí)不隨天空光照方向數(shù)增多而增加。服務(wù)器返回結(jié)果顯示,每次計(jì)算耗時(shí)僅為十多秒,這極大地提高了計(jì)算效率,是普通串行算法無(wú)法達(dá)到的。
另外系統(tǒng)客戶端不但能生成冠層的三維結(jié)構(gòu),還能應(yīng)用圖像控制標(biāo)簽欄對(duì)仿真效果圖進(jìn)行縮放、3D旋轉(zhuǎn)、顏色渲染等操作,這方便了對(duì)三維冠層的觀察操作,提供了一種良好的交互方式。同時(shí)系統(tǒng)還能通過(guò)任務(wù)標(biāo)簽欄管理計(jì)算結(jié)果文件。使科研人員可以進(jìn)一步查閱數(shù)據(jù)分析仿真結(jié)果。
4 結(jié) 論
綜上,植物冠層光分布的并行仿真計(jì)算系統(tǒng)將傳統(tǒng)的深度緩存排序算法進(jìn)行了并行化處理,并基于面向?qū)ο蟮脑O(shè)計(jì)思想進(jìn)行實(shí)現(xiàn),系統(tǒng)主要部分實(shí)現(xiàn)模塊化管理,使它擁有良好的擴(kuò)展性和維護(hù)性。目前系統(tǒng)基本功能已經(jīng)實(shí)現(xiàn),接下來(lái)還可以在客戶端根據(jù)用戶多種分析需要進(jìn)一步添加更多的計(jì)算結(jié)果數(shù)據(jù)顯示分析方法,使其不斷完善。而在服務(wù)器端,目前系統(tǒng)實(shí)現(xiàn)了深度緩存排序算法的并行化,在其并行化的基礎(chǔ)上還可以將其他光照分布算法做同樣處理并移植到大型機(jī)去進(jìn)行仿真計(jì)算,隨著系統(tǒng)的不斷成熟和發(fā)展,系統(tǒng)客戶端可以廣泛提供給沒(méi)有條件購(gòu)買大型機(jī)的科研教學(xué)用戶使用,使更多人可以方便快速地進(jìn)行仿真計(jì)算。相信在不遠(yuǎn)的將來(lái),該系統(tǒng)一定會(huì)成為科研和教學(xué)中十分有用的冠層光輻射分布計(jì)算的仿真模擬平臺(tái)。
參考文獻(xiàn)
[1] VERHOEF W. Light scattering by leaf layers with application to canopy reflectance modeling: the SAIL model [J]. Remote sensing of environment, 1984, 16(2): 125?141.
[2] GORAL C M, TORRANCE K E, GREENBERG D P. Modeling the interaction of light between diffuse surfaces [J]. ACM SIGGRAPH computer graphics, 2008, 18(3): 213?222.
[3] CHELLE M, ANDRIEU B. The nested radiosity model for the distribution of light within plant canopies [J]. Ecological modelling, 1998, 111(1): 75?91.
[4] 谷傳才,關(guān)楠,于金銘,等.多處理器混合關(guān)鍵性系統(tǒng)中的劃分調(diào)度策略[J].軟件學(xué)報(bào),2014,25(2):284?297.
GU Chuancai, GUAN Nan, YU Jinming, et al. The division scheduling strategy of multiprocessor hybrid critical system [J]. Journal of software, 2014, 25(2): 284?297.
[5] 盧云娥,黃宗宇,李超陽(yáng),等.基于微機(jī)集群系統(tǒng)的MPI并行計(jì)算[J].電子設(shè)計(jì)工程,2011,19(5):78?81.
LU Yune, HUANG Zongyu, LI Chaoyang, et al. Parallel computation of MPI based on microcomputer cluster system [J]. Electronic design engineering, 2011, 19(5): 78?81.
[6] 郭惠,符紅光,羅東輝.三維動(dòng)態(tài)幾何中直線消隱的實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用,2007,27(3):663?665.
GUO Hui, FU Hongguang, LUO Donghui. The realization of linear cancellation in three?dimensional dynamic geometry [J]. Computer application, 2007, 27(3): 663?665.
[7] 肖強(qiáng),勞彩蓮,王春霞.植物冠層光輻射分布的快速深度緩存算法[J].計(jì)算機(jī)工程,2010,36(15):288?290.
XIAO Qiang, LAO Cailian, WANG Chunxia. The rapid depth cache algorithm of the photoemission distribution of plant canopy [J]. Computer engineering, 2010, 36(15): 288?290.
[8] 李靜,王文成,吳恩華.基于空盒自適應(yīng)生成的動(dòng)態(tài)場(chǎng)景光線跟蹤計(jì)算[J].計(jì)算機(jī)學(xué)報(bào),2009,32(6):1172?1182.
LI Jing, WANG Wencheng, WU Enhua. The dynamic scene light tracking calculation based on the adaptive generation of the empty box [J]. Chinese journal of computers, 2009, 32(6): 1172?1182.
[9] 黃帆,勞彩蓮,肖翠霞.基于光線跟蹤的冠層光分布模型參數(shù)研究[J].中國(guó)農(nóng)業(yè)大學(xué)學(xué)報(bào),2013,18(6):96?101.
HUANG Fan, LAO Cailian, XIAO Cuixia. Parameters in the model of canopy light distribution with ray tracing approach [J]. Journal of China Agricultural University, 2013, 18(6): 96?101.
[10] 王昊鵬,趙凱,宋鳳斌,等.植物冠層光照的建模與虛擬現(xiàn)實(shí)仿真研究[J].農(nóng)業(yè)系統(tǒng)科學(xué)與綜合研究,2010,26(1):68?74.
WANG Haopeng, ZHAO Kai, SONG Fengbin, et al. Study on the modeling of canopy illumination and virtual reality simulation [J]. System sciences and comprehensive studies in agriculture, 2010, 26(1): 68?74.endprint