李繼良,于 策,孫濟(jì)洲,商朝暉,陳錦言,曹 瑋,張旭明
(1.天津大學(xué),天津 300072;2.天津師范大學(xué),天津 300387)
圖像相減是一種精確地獲得密集星體區(qū)域中變星的相對(duì)光度變化的技術(shù),它在凌日行星觀測(cè)、微引力透鏡觀測(cè)和尋找超新星的數(shù)據(jù)處理中都起到了關(guān)鍵作用。如果星的亮度是變化的,而星所在的背景是基本不變的,那么亮度變化(而不是絕對(duì)亮度)就可以通過(guò)在糾正視寧度(seeing)和圖像放縮的差異之后進(jìn)行圖像相減得到。在一段時(shí)間內(nèi)對(duì)同一天區(qū)連續(xù)拍攝可以得到一系列圖像,將這些圖像與參考圖像相減,得到的圖像上就只剩變星了,它們相對(duì)于參考圖像的光度變化可以通過(guò)更專業(yè)的孔徑測(cè)光得到。2010年下半年在南極昆侖站安裝的AST3[1]也是利用圖像相減技術(shù)作為其中的一個(gè)核心計(jì)算過(guò)程。圖像相減的最早嘗試始于Tomaney和Crotts[2],他們采用的方法是對(duì)每幅圖像上的亮星做傅里葉變換,通過(guò)其比值確定卷積核,然而這并不能保證相減后圖像的質(zhì)量足夠高。Alard和Luption[3]提出了一種新算法,通過(guò)把卷積核分解為一系列的基本操作,求卷積核的各個(gè)像素的值時(shí)可以直接在圖像域上進(jìn)行,而不用先轉(zhuǎn)換到傅里葉域。Alard[4]又將其由空間固定卷積核推廣到了空間可變卷積核。這篇論文將采用基于OpenMP多線程的技術(shù)對(duì)C Alard在2000年提出的Optimal Image Subtraction(OIS)算法進(jìn)行優(yōu)化,主要目的在于進(jìn)一步提高圖像相減的效率。
當(dāng)前采用多核處理器的計(jì)算機(jī)已成為市場(chǎng)主流。但是,如果用戶軟件無(wú)法利用多個(gè)核,就會(huì)造成CPU資源的極大浪費(fèi)。因?yàn)樵谥黝l、高速緩存等其他設(shè)備完全相同的條件下,沒(méi)有針對(duì)多核優(yōu)化的程序在多核CPU上運(yùn)行的速度與它在單核CPU上運(yùn)行的速度并不會(huì)有明顯的提高。實(shí)際上,串行程序僅僅利用了多核處理器中的一個(gè)處理核心,而其他處理核心則處于空閑狀態(tài)。因此,面對(duì)多核平臺(tái)開展系統(tǒng)軟件和應(yīng)用軟件的開發(fā)工作將是軟件開發(fā)人員必須面對(duì)的問(wèn)題。采用多線程技術(shù)是提高資源利用率的一個(gè)有效方法,在單核處理器時(shí)代,應(yīng)用程序已經(jīng)支持多線程技術(shù)。然而,單核內(nèi)的多線程運(yùn)行是串行的,在某一時(shí)刻,只能有一段代碼被CPU執(zhí)行,單核處理器只能將多個(gè)指令流交錯(cuò)執(zhí)行,并不能真正將它們同時(shí)執(zhí)行。在多核平臺(tái),各線程都是在相互獨(dú)立的執(zhí)行核上并行運(yùn)行的,如果線程數(shù)目小于等于執(zhí)行核數(shù)目,那么各行程在運(yùn)行時(shí)相互之間不存在對(duì)CPU資源的競(jìng)爭(zhēng),在某一時(shí)刻,可以有多個(gè)線程同時(shí)運(yùn)行,達(dá)到真正意義上的并行處理。天文觀測(cè)往往會(huì)產(chǎn)生TB量級(jí)的海量數(shù)據(jù),能否在短時(shí)間內(nèi)對(duì)這些數(shù)據(jù)進(jìn)行分析處理已成為影響天文研究進(jìn)展速度的關(guān)鍵因素之一。在多核時(shí)代,充分利用多個(gè)CPU核心帶來(lái)的額外計(jì)算資源來(lái)提高數(shù)據(jù)分析處理的效率,對(duì)天文學(xué)研究具有重要意義。
OpenMP[5]是由OpenMP Architecture Review Board牽頭提出的,并已被廣泛接受,用于共享內(nèi)存并行系統(tǒng)的多線程程序設(shè)計(jì)的一套指導(dǎo)性注釋(Compiler Directive)。OpenMP支持的程序語(yǔ)言包括C語(yǔ)言、C++和Fortran;而支持OpenMP的編譯器包括Sun Compiler、GNU Compiler和Intel Compiler等。OpenMP提供了對(duì)并行算法的高層的抽象描述,程序員通過(guò)在源程序中加入專用的pragma預(yù)處理指令(pragma pre-processor directive)來(lái)指明自己的意圖,由此編譯器可以自動(dòng)將程序進(jìn)行并行化,并在必要之處加入同步互斥以及通信。當(dāng)選擇忽略這些pragma指令,或者編譯器不支持OpenMP時(shí),程序又可退化為通常的程序(一般為串行),代碼仍然可以正常運(yùn)作,只是不能利用多線程來(lái)加速程序執(zhí)行。
OpenMP提供的這種對(duì)于并行描述的高層抽象降低了并行編程的難度和復(fù)雜度,這樣程序員可以把更多的精力投入到并行算法本身,而非其具體實(shí)現(xiàn)細(xì)節(jié)。對(duì)基于數(shù)據(jù)分塊的多線程程序設(shè)計(jì),OpenMP是一個(gè)很好的選擇。同時(shí),使用OpenMP也提供了更強(qiáng)的靈活性,可以較容易地適應(yīng)不同的并行系統(tǒng)配置。線程粒度和負(fù)載平衡等是傳統(tǒng)多線程程序設(shè)計(jì)中的難題,但在OpenMP中,OpenMP庫(kù)從程序員手中接管了部分這兩方面的工作。
但是,作為高層抽象,OpenMP并不適合需要復(fù)雜的線程間同步和互斥的場(chǎng)合。OpenMP的另一個(gè)缺點(diǎn)是不能在非共享內(nèi)存系統(tǒng)(如計(jì)算機(jī)集群)上使用。在這樣的系統(tǒng)上,MPI使用較多。
OpenMP的主要優(yōu)勢(shì)有:相對(duì)簡(jiǎn)單,不需要顯式設(shè)置互斥鎖、條件變量、數(shù)據(jù)范圍以及初始化;可擴(kuò)展,主要是利用添加并行化指令到順序程序中,由編譯器完成自動(dòng)并行化;移植性好,OpenMP規(guī)范中定義的指導(dǎo)指令、運(yùn)行庫(kù)和環(huán)境變量,能夠使用戶在保證程序的可移植性的前提下,按照標(biāo)準(zhǔn)將已有的串行程序逐步并行化,可以在不同的廠商提供的共享存儲(chǔ)體系結(jié)構(gòu)間比較容易地移植。OpenMP的主要缺點(diǎn)是程序的可維護(hù)性不夠好,再者當(dāng)程序比較復(fù)雜的時(shí)候,編程會(huì)顯得比較困難。
圖像相減是將已知的標(biāo)準(zhǔn)圖像與要檢測(cè)的圖像進(jìn)行相減,從而找到其中的差異,并利用已知的領(lǐng)域知識(shí)判斷差異代表的實(shí)際物理意義或者差異根源的方法。圖像相減的方法在包括醫(yī)學(xué)等在內(nèi)的多個(gè)涉及穩(wěn)定圖像的領(lǐng)域都有應(yīng)用,其基本原理為通過(guò)同一區(qū)域不同時(shí)間的圖像間差異來(lái)獲得該區(qū)域的時(shí)間變化信息。應(yīng)用到天文學(xué)領(lǐng)域主要是通過(guò)同一區(qū)域不同時(shí)間的圖像間差異發(fā)現(xiàn)流量變化的星。圖像相減變?cè)礈y(cè)光算法主要包括了圖像配準(zhǔn)(Image Registration)、圖像相減和相減后的檢測(cè)等幾個(gè)步驟。
圖像相減變?cè)礈y(cè)光算法是通過(guò)圖像差異來(lái)獲得星的流量隨時(shí)間變化信息的,所以要有一幅圖像作為參考圖像,其他圖像與之相減。但是由于觀測(cè)時(shí)間、觀測(cè)儀器的運(yùn)動(dòng)會(huì)導(dǎo)致參考圖像和要相減的圖像指向的可能并不是一個(gè)完全重疊的天區(qū),他們之間總會(huì)存在微小的誤差,這些誤差主要體現(xiàn)在平移和旋轉(zhuǎn)兩個(gè)方面。所謂圖像配準(zhǔn),就是為了消除圖像間的平移和旋轉(zhuǎn)。
然而圖像配準(zhǔn)后的天文圖像還是不能直接相減。受不同的大氣狀態(tài)和云層遮擋等因素的影響,不同時(shí)間拍攝圖像的星像的PSF(Point Spread Function,點(diǎn)擴(kuò)散函數(shù))是不同的,通俗地說(shuō),就是不同時(shí)間拍攝的圖像中,同一顆星在圖像上的大小不同,而且不同的遮擋效果會(huì)導(dǎo)致星的亮度存在差異。不同的大小導(dǎo)致同一顆星相減后無(wú)法完全消除其輪廓,會(huì)有殘留的邊緣,從而導(dǎo)致不能準(zhǔn)確判斷是否有變星。不同的亮度,導(dǎo)致圖像相減后每顆星都會(huì)留有與其大小相同的“圓斑”,于是會(huì)在檢測(cè)變?cè)磿r(shí)多出不存在的變?cè)?。這些都要求首先將圖像進(jìn)行處理,然后再進(jìn)行圖像相減。記參考圖像為二維函數(shù)R(x,y),處理圖像為I(x,y)。那么可以通過(guò)卷積將參考圖像的PSF轉(zhuǎn)化為處理圖像的PSF,也可以反向?qū)⑻幚韴D像卷積到參考圖像。由于參考圖像選擇的是“最好”的圖像,PSF最小,星象最銳利,噪音最小,因此將參考圖像卷積到處理圖像會(huì)引入較小的噪聲,從而得到較好的差分圖像。這里的難點(diǎn)是需要確定卷積核(Kernel)函數(shù),記為K(x,y),并且K(x,y)是空間可變的。為了得到K(x,y),要求解方程組R(x,y)*K(x,y)=I(x,y),其中*代表卷積運(yùn)算。在對(duì)參考圖像進(jìn)行卷積運(yùn)算之后,所得圖像和處理圖像就可以進(jìn)行對(duì)應(yīng)像素之間的相減操作了。相減后仍可能有部分輪廓沒(méi)有完全消除,需要做一次平滑處理。需要在經(jīng)過(guò)平滑處理的圖像中檢測(cè)是否存在亮星,如果仍然存在亮星,就說(shuō)明兩幅圖像中某顆星的亮度發(fā)生了變化或者存在參考圖像中不存在的星,即要尋找的變?cè)础?/p>
ISIS是使用圖像相減算法處理FITS圖像[6]的一個(gè)完整的軟件包,它包含3個(gè)子程序包,能夠從一系列CCD圖像中生成星體的光變曲線。為了得到星體的光變曲線,必須進(jìn)行下面的3個(gè)步驟:(1)圖像配準(zhǔn)。圖像配準(zhǔn)的目的是將每個(gè)圖像映射到同一個(gè)坐標(biāo)系上,通常取其中的一幅圖像做參考系統(tǒng)。這一過(guò)程的輸出是在參考坐標(biāo)系上內(nèi)插的一幅FITS圖像,包含兩個(gè)步驟,獲取天文轉(zhuǎn)換方程X=f(x_ref,y_ref)和圖像內(nèi)插(雙三次曲線)過(guò)程;(2)圖像相減。這是程序的主要部分,也是文[3]和文[4]提出的新算法的核心部分。在運(yùn)行程序之前,需要通過(guò)將一些最好的圖像疊加起來(lái)生成一個(gè)好的參考圖像。然后使用圖像相減程序調(diào)整參考圖像與原始圖像的視寧度(Seeing),原始圖像在前面已經(jīng)做過(guò)配準(zhǔn)和內(nèi)插操作。圖像相減程序可以將整個(gè)圖像分塊做處理,這在使用有限的內(nèi)存資源處理非常大的天文圖像時(shí)尤其有用。程序?qū)ψ冃怯袃蓚€(gè)不同級(jí)別的拋棄:檢查每顆星是否表現(xiàn)出光流量變化,檢查每顆星的卡方(Chi-square)。圖像相減的最終輸出為原始圖像與參考圖像相減后光流量變化的被減后圖像;(3)測(cè)光。軟件包將使用被減后圖像中的變星做測(cè)光。變星的光度將會(huì)采用在固定位置的PSF擬合測(cè)光(profile-fitting photometry)來(lái)測(cè)量。像圖像相減過(guò)程一樣,這個(gè)過(guò)程也可以分塊進(jìn)行。
圖像相減變?cè)礈y(cè)光以c shell腳本的方式組織,其中interp.csh和temp.csh完成圖像配準(zhǔn)過(guò)程,subtract.csh腳本負(fù)責(zé)圖像相減過(guò)程,detect.csh和find.csh使用相減后圖像發(fā)現(xiàn)變?cè)床⒄业轿恢?,phot.csh腳本負(fù)責(zé)進(jìn)行變?cè)礈y(cè)光。為了得到并行優(yōu)化的重點(diǎn)所在,本文對(duì)每個(gè)腳本的運(yùn)行時(shí)間做了測(cè)量(測(cè)試中使用了BATC[7]拍攝的2 K×2 K圖像,測(cè)試時(shí)使用了20幅圖像,對(duì)每幅圖像測(cè)量5次,結(jié)果為平均值),見表1。
表1 處理的各個(gè)流程運(yùn)行時(shí)間及所占百分比Table 1 Processing time and percentage of each step
從表1可見,在未使用優(yōu)化選項(xiàng)時(shí),卷積相減這一過(guò)程的時(shí)間占據(jù)了整個(gè)程序運(yùn)行時(shí)間的52.6%;即使在使用了-02優(yōu)化選項(xiàng)后,這一過(guò)程占得時(shí)間百分比仍高達(dá)39.9%。因此卷積相減這一過(guò)程就是程序運(yùn)行的瓶頸所在。卷積相減,就成為使用OpenMP并行處理的關(guān)鍵部分,具體到源代碼,則是subtract程序包下面的源程序。深入分析后發(fā)現(xiàn),時(shí)間密集部分主要集中在kernel_convolve函數(shù)調(diào)用上,主要包括求卷積核和卷積部分,占據(jù)的時(shí)間分別為subtract程序包的8%和80%。鑒于以上結(jié)果,本文將主要考慮ISIS軟件包的第2個(gè)步驟,也就是圖像相減過(guò)程。
圖1 處理的各個(gè)流程百分比示意圖Fig.1 Time percentages of processing steps
用于科學(xué)和工程應(yīng)用的大量程序被表示為基于迭代構(gòu)造的形式,即它們是基于循環(huán)的。通過(guò)嚴(yán)格集中于循環(huán)來(lái)優(yōu)化這些程序,是對(duì)較老的向量巨型計(jì)算機(jī)的一種傳統(tǒng)回溯。將這種方法擴(kuò)展到現(xiàn)代的并行計(jì)算機(jī)中,得到一種并行算法策略,在該算法策略中,并行任務(wù)被識(shí)別為可并行循環(huán)的迭代。這種模式及解決問(wèn)題的方式是構(gòu)造基于循環(huán)的程序,以進(jìn)行并行計(jì)算。當(dāng)可以獲得現(xiàn)成的代碼時(shí),目標(biāo)是將一個(gè)串行程序“演化”為一個(gè)并行程序,所采用的方式是對(duì)循環(huán)進(jìn)行一系列的轉(zhuǎn)換。理想上,所有的改變局限于對(duì)循環(huán)的轉(zhuǎn)換,這種轉(zhuǎn)換需要消除循環(huán)的相關(guān)性,但并不改變整個(gè)程序的語(yǔ)義(這稱為語(yǔ)義中立轉(zhuǎn)換)。根據(jù)多核計(jì)算機(jī)的系統(tǒng)特點(diǎn),對(duì)循環(huán)體的算法進(jìn)行調(diào)整、改造和優(yōu)化設(shè)計(jì),這是提高程序并行化效率的關(guān)鍵之一[8]。
多核計(jì)算機(jī)的各個(gè)處理器都配備有自己的局部高速緩存(Cache),處理器訪問(wèn)自身局部緩存的速度要比訪問(wèn)主存或訪問(wèn)其他處理器的緩存快得多。因此并行化設(shè)計(jì)必須考慮如何合理地使用緩存,以避免在讀寫數(shù)據(jù)時(shí)產(chǎn)生相關(guān)與沖突。為了實(shí)現(xiàn)快速訪問(wèn)緩存,對(duì)于多重嵌套循環(huán)體的并行化設(shè)計(jì),必須遵循如下規(guī)則:第一,盡量并行化最外層循環(huán),使得在并行區(qū)域內(nèi)獲得最大的計(jì)算工作量,增加其并行粒度;第二,最里層的循環(huán)變量應(yīng)該是變化最快的可變下標(biāo)變量,而且在最里層應(yīng)該按照順序訪問(wèn)數(shù)組元素,也就是應(yīng)按數(shù)組列訪問(wèn)。這樣可以提高緩存局部性。因此,數(shù)組的最左下標(biāo)變量應(yīng)當(dāng)作為最里層的循環(huán)變量,可以保證從主存按數(shù)組列順序把數(shù)組元素取出并放入緩存之中,從而達(dá)到快速訪問(wèn)緩存,提高并行效率的目的。
kernel_convolve.c的偽代碼描述如下:
以上程序kernel_convolve中,由之前程序中已經(jīng)確定的卷積核(kernel)大小為mesh_size×mesh_size的方陣,將參考圖像分塊,每塊大小與kernel大小相同(conv_step=mesh_size),即為conv_step×conv_step。從而參考圖像被劃分為nsteps_x×nsteps_y數(shù)量的大小為conv_step×conv_step的stamp塊進(jìn)行處理。
在對(duì)圖像分塊后,就進(jìn)入了影響程序性能的多重循環(huán)中。前兩重循環(huán)遍歷圖像的每一個(gè)stamp塊。并根據(jù)不同的stamp塊求解相應(yīng)該塊的卷積核(make_kernel)。完成對(duì)kernel的求解后,開始對(duì)stamp進(jìn)行卷積操作,三四層循環(huán)為遍歷stamp塊,在對(duì)塊中的點(diǎn)進(jìn)行卷積之前,要判斷點(diǎn)的位置和值是否符合卷積要求,如果符合,則進(jìn)行五六層循環(huán),即像素點(diǎn)的卷積值是由此像素點(diǎn)周圍conv_step×conv_step的點(diǎn)與kernel進(jìn)行卷積之后的結(jié)果。因此五六層循環(huán)即是conv_step×conv_step。
在求卷積核make_kernel中,根據(jù)之前程序由最小二乘擬合求得的kernel_sol來(lái)求解空間可變卷積核的系數(shù)kernel_coeffs,之后對(duì)卷積核(kernel)進(jìn)行初始化,每個(gè)卷積核的系數(shù)kernel_coeffs乘以一個(gè)基向量kernel_vec,即求得相應(yīng)stamp的卷積核kernel。
原ISIS程序忽略了高性能計(jì)算機(jī)緩存性能的發(fā)揮,在最內(nèi)層使用了列主序而不是行主序來(lái)遍歷數(shù)組,因此對(duì)并行或者非并行的執(zhí)行都是極為不利的。特別是多處理時(shí)會(huì)影響使用緩存的性能,使運(yùn)算效率受到嚴(yán)重影響。所以在對(duì)原串行程序進(jìn)行并行化設(shè)計(jì)時(shí),必須考慮充分地運(yùn)用緩存性能的編程策略,尤其要將最內(nèi)層的循環(huán)由列主序遍歷轉(zhuǎn)變?yōu)樾兄餍虮闅v。
在對(duì)圖像的各個(gè)stamp塊分別求卷積核和做卷積的過(guò)程中,各個(gè)stamp塊的處理彼此沒(méi)有相關(guān)性,因此,可以運(yùn)用“分而治之”(Divide and Conquer)策略劃分并行子任務(wù)。具體的,在最外層循環(huán)添加OpenMP指導(dǎo)語(yǔ)句,即#pragma omp parallel default(shared)num_threads(THREAD_NUM)和#pragma omp for nowait,可以將stamp塊的處理并行執(zhí)行,提高程序的效率。
對(duì)并行算法的測(cè)試主要是測(cè)試加速比和并行效率,可以通過(guò)式(1)和式(2)完成[9]:
其中,S(p)表示加速比;ts表示使用單處理器系統(tǒng)執(zhí)行算法的時(shí)間;tp表示使用具有p個(gè)處理器的多執(zhí)行機(jī)執(zhí)行所需的時(shí)間。
其中E表示并行效率;p表示處理器的個(gè)數(shù),并行效率可定義為加速比與CPU個(gè)數(shù)的比值。
以BATC[9]拍攝的2 K×2 K的圖像進(jìn)行了測(cè)試,在Dell PowerEdge T300 System服務(wù)器上進(jìn)行。Dell PowerEdge T300 System服務(wù)器上配置了Intel Xeon X3326四核中央處理器,每個(gè)核帶有3072 KB的緩存,工作主頻為2.50 GHZ,內(nèi)存為DDR2@667 MHZ,內(nèi)存大小為2 GB,更多關(guān)于該服務(wù)器的硬件信息請(qǐng)參考Dell網(wǎng)站;系統(tǒng)使用的操作系統(tǒng)為64位Fedora 9系統(tǒng),其中Swap空間大小為2 GB。
在使用串行程序時(shí)程序的平均運(yùn)行時(shí)間為8.855 s,在使用OpenMP加速后程序的平均運(yùn)行時(shí)間為5.049 s,加速比S(p)=1.754,并行效率為E=0.439,具體的測(cè)試結(jié)果見表2和表3。根據(jù)Amdahl定律,并行程序加速的上限為串行部分所占比例的倒數(shù),程序的加速效果還是比較理想的。
表2 使用不同的線程數(shù)時(shí)相減部分所用時(shí)間Table 2 Processing-time values of subtractions using different numbers of threads
表3 加速比和并行效率Table 3 Speedup ratios and parallel efficiencies
在多核計(jì)算時(shí)代,采用并行計(jì)算方法加速天文學(xué)數(shù)據(jù)的分析和處理對(duì)天文學(xué)研究具有重要的意義。OpenMP是一種優(yōu)秀的基于共享內(nèi)存的并行方法,通過(guò)采用OpenMP技術(shù)將OIS圖像相減算法進(jìn)行并行化,程序的效率得到了顯著的提高,使用BATC的天文圖像進(jìn)行測(cè)試后發(fā)現(xiàn)加速比可達(dá)1.754。然而程序的結(jié)果跟加速的理想結(jié)果還有一定的差距。原因有兩個(gè),首先是因?yàn)槌绦蛑羞€存在許多串行執(zhí)行部分,因此,最大限度的并行化源程序,是獲得理想的OpenMP并行程序并行效率的前提。其次,如果加入不當(dāng)?shù)牟⑿兄笇?dǎo)語(yǔ)句,由于緩存的一致性問(wèn)題,會(huì)出現(xiàn)某些變量的假共享,致使程序運(yùn)行速度變慢。
GPU計(jì)算是一種新興的科學(xué)與工程計(jì)算技術(shù),計(jì)算密集部分采用GPU(圖形處理器)而不是CPU進(jìn)行。后續(xù)工作將考慮把OIS移植成基于GPU的算法,程序的效率應(yīng)該會(huì)得到更大幅度的提升。
[1]毛銀盾,唐正宏,鄭義勁,等.CCD漂移掃描的基本原理及在天文學(xué)上的應(yīng)用 [J].天文學(xué)進(jìn)展,2005,23(4):304-317.Mao Yindun,Tang Zhenghong,Zheng Yijin,et al.The Basic Principle and the Application in Astronomy of CCD Drift-Scan [J].Progress in Astronomy,2005,23(4):304 -317.
[2]Tomaney A B,Crotts A P S.Expanding the Realm of Microlensing Surveys with Difference Image Photometry [J].The Astrophysical Journal,1996(112):2872.
[3]C Alard,R H Lupton.A method for optimal image subtraction [J].The Astrophysical Journal,1998(503):325-331.
[4]C Alard.Image Subtraction Using a Space-varying Kernel[J].Astronomy and Astrophysics Supplement,2000(144):363 -370.
[5]Open MP ARB.OpenMP [EB/OL].[2011-03-14].http://openmp.org/wp/.
[6]胡新華,鄧元勇,王先平.FITS圖像處理技術(shù)薈萃及在太陽(yáng)觀測(cè)中的應(yīng)用 [J].天文研究與技術(shù)——國(guó)家天文臺(tái)臺(tái)刊,2008,5(1):55-65.Hu Xinhua,Deng Yuanyong,Wang Xianping.Collecting of Techniques on Dealing with Image Files of FITS Format and Applications to the Solar Observation [J].Astronomical Research &Technology——Publications of National Astronomical Observatories of China,2008,5(1):55 -65.
[7]BATC課題組.BATC HomePage[EB/OL].北京:國(guó)家天文臺(tái),(2010-12-20)[2011-03-14].http://batc.bao.ac.cn/c-index.htm.
[8]Timothy G Mattson,Beverly A Sanders,Berna L Massingill.并行編程模式 [M].敖富江,譯.北京:清華大學(xué)出版社,2005:113-125.
[9]Harry F Jordan,Gita Alaghband,遲利華.并行處理基本原理 [M].劉杰,譯.北京:清華大學(xué)出版社,2004:33-37.