• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      熔鹽堆堆芯流體力學(xué)計(jì)算的GPU并行方法研究

      2017-11-21 03:32:56胡傳偉鄂彥志徐洪杰
      核技術(shù) 2017年11期
      關(guān)鍵詞:熔鹽共軛堆芯

      胡傳偉 鄂彥志 鄒 楊 徐洪杰

      1(中國科學(xué)院上海應(yīng)用物理研究所 嘉定園區(qū) 上海 201800)

      2(中國科學(xué)院大學(xué) 北京 100049)

      3(中國科學(xué)院釷基熔鹽核能系統(tǒng)研究中心 上海 201800)

      熔鹽堆堆芯流體力學(xué)計(jì)算的GPU并行方法研究

      胡傳偉1,2鄂彥志1,2鄒 楊1,3徐洪杰1,3

      1(中國科學(xué)院上海應(yīng)用物理研究所 嘉定園區(qū) 上海 201800)

      2(中國科學(xué)院大學(xué) 北京 100049)

      3(中國科學(xué)院釷基熔鹽核能系統(tǒng)研究中心 上海 201800)

      使用計(jì)算流體力學(xué)(Computational Fluid Dynamics, CFD)數(shù)值方法對熔鹽堆堆芯的流動(dòng)和熱傳導(dǎo)等相關(guān)物理問題進(jìn)行模擬求解,需要大量的計(jì)算時(shí)間。利用圖形處理器(Graphics Processing Unit, GPU)加速技術(shù)對開源CFD軟件Code_Saturne進(jìn)行二次開發(fā),研究求解熔鹽堆堆芯流場的GPU并行算法。采用OpenACC語言在GPU上實(shí)現(xiàn)了向量運(yùn)算、矩陣向量相乘等基本線性代數(shù)運(yùn)算,從而實(shí)現(xiàn)預(yù)處理共軛梯度法(Preconditioned Conjugate Gradients, PCG)的GPU并行算法,并使用該算法求解壓力狀態(tài)方程。模擬了方腔驅(qū)動(dòng)流模型及帶下降段的熔鹽堆堆芯模型的流場分布。結(jié)果表明,GPU加速后的軟件與原版軟件的結(jié)果一致,但計(jì)算時(shí)間更少,證明了GPU算法的正確性及有效的加速性。

      熔鹽堆,計(jì)算流體力學(xué),共軛梯度法,通用圖形計(jì)算技術(shù),OpenACC

      針對熔鹽堆中的傳熱和流動(dòng)過程,計(jì)算流體力學(xué)(Computational Fluid Dynamics, CFD)軟件使用數(shù)值方法進(jìn)行狀態(tài)方程求解有大量的計(jì)算需求。傳統(tǒng)的中央處理器(Central Processing Unit, CPU)并行計(jì)算已經(jīng)不能很好的滿足計(jì)算性能的要求,而通用圖形處理器(General-purpose Graphic Processing Units,GPGPUs)的快速發(fā)展使得許多開發(fā)程序由 CPU并行計(jì)算轉(zhuǎn)向GPU并行計(jì)算。

      目前國內(nèi)外已有使用 GPU開發(fā)程序的相關(guān)研究。應(yīng)智等[1]進(jìn)行了基于GPU的OpenFOAM并行加速研究。在OpenFOAM上使用GPU解算器插件求解不同規(guī)模的經(jīng)典CFD圓柱擾流,能夠得到超過6倍的加速比并驗(yàn)證了 GPU加速方法的正確性。Wienke等[2]通過兩個(gè)實(shí)際應(yīng)用的例子,對比了OpenCL和OpenACC兩種GPU加速方法的效率。OpenACC的加速效果只能分別達(dá)到OpenCL的0.8和 0.4倍。然而,OpenCL修改了 630條代碼,OpenACC只修改了46條代碼。Wyrzykowski等[3]通過OpenACC編程技術(shù),實(shí)現(xiàn)了穩(wěn)定雙共軛梯度算法的GPU并行化。該算法用在CPU與兩種GPU上,GPU并行化后的程序分別可以加速2.38和6.25倍。Kraus等[4]在德國的CFD流體求解器ZFS上使用OpenACC編程技術(shù)實(shí)現(xiàn)了GPU并行加速,僅加入71條代碼就能達(dá)到兩倍以上的加速比。

      本文利用 GPU并行加速技術(shù)對 Code_Saturne進(jìn)行二次開發(fā)并應(yīng)用于熔鹽堆堆芯流場分析。通過分析Code_Saturne的計(jì)算流程,在Code_Saturne的求解器模塊求解壓力狀態(tài)方程中實(shí)現(xiàn)了預(yù)處理共軛梯度算法的GPU并行化及性能優(yōu)化。

      1 GPU計(jì)算平臺

      美國Sandia國家實(shí)驗(yàn)室的一項(xiàng)模擬測試顯示,在傳統(tǒng)架構(gòu)下,由于存儲機(jī)制和內(nèi)存帶寬的限制,16核CPU以上處理器不僅不能為超級計(jì)算機(jī)帶來性能提升,甚至可能導(dǎo)致效率大幅度下降[5]。自從NVIDIA公司發(fā)布了基于G80的并行編程模型和C語言開發(fā)環(huán)境 CUDA (Compute Unified Device Architecture),GPGPUs快速的發(fā)展起來。GPU并行開發(fā)主要有兩種語言:一種是以CUDA為首的基于硬件結(jié)構(gòu)的編程語言等;另一種是以O(shè)penACC為首的基于指導(dǎo)語句的編程語言。指導(dǎo)語句的編程語言是指為現(xiàn)有的編程語言添加對GPU的支持,用戶只要在需要GPU并行的區(qū)域添加編譯標(biāo)記,再由相應(yīng)的編譯器處理就可以在GPU平臺上運(yùn)行。本文使用的GPU并行技術(shù)是OpenACC,目前僅支持C/C++和Fortran兩種語言,語法規(guī)則與OpenMP相似。

      2 基于OpenACC的Code_Saturne程序加速

      2.1 熔鹽堆堆芯熱工水力計(jì)算

      熔鹽堆是第四代堆型中唯一使用液態(tài)燃料的反應(yīng)堆,且液態(tài)燃料多為高溫熔融的氟化鹽。為了降低熔鹽堆堆芯模型幾何結(jié)構(gòu)的復(fù)雜度及減少計(jì)算時(shí)間,本文在進(jìn)行數(shù)值模擬計(jì)算分析時(shí),對幾何模型進(jìn)行簡化處理。計(jì)算模型包含下降環(huán)腔、熔鹽進(jìn)出口管道和堆芯熔鹽通道三個(gè)部分的熔鹽堆堆芯模型,熔鹽從進(jìn)口管道流入,經(jīng)過下降段進(jìn)入堆芯,最后從堆芯流出。選取開源CFD軟件Code_Saturne對熔鹽堆堆芯流場進(jìn)行簡單模擬計(jì)算。

      計(jì)算流體動(dòng)力學(xué)是通過數(shù)值計(jì)算對流體流動(dòng)和熱傳導(dǎo)等相關(guān)物理現(xiàn)象的系統(tǒng)進(jìn)行分析。其基本思想類似于微積分,是將用一系列有限的變量值代替連續(xù)的物理量[6]。流體流動(dòng)都要遵守物理守恒定律,想要對其進(jìn)行描述,就必須通過數(shù)學(xué)的方程來進(jìn)行,其中控制方程(Governing Equations)是這些守恒定律的數(shù)學(xué)描述。如圖1所示,從CFD工作流程圖可以看出,采用CFD方法對流體的流動(dòng)問題進(jìn)行數(shù)值模擬的基礎(chǔ)就是建立控制方程。通過基本守恒定律的分析,可以導(dǎo)出流體的連續(xù)性方程、動(dòng)量方程及能量方程,寫成式(1)的通用形式[7]。

      圖1 CFD工作流程Fig.1 Overview of CFD.

      式中:φ為通用變量,可以代表 u、v、w、T等求解變量;ρ是密度;u是速度矢量;t是時(shí)間;Γ為廣義擴(kuò)散系數(shù);S為廣義源項(xiàng)。

      通過數(shù)值解法,可以將連續(xù)的偏微分方程離散為有限未知量的代數(shù)方程組。本文的Code_Saturne程序利用有限體積法進(jìn)行離散。以二維瞬態(tài)對流-擴(kuò)散問題為例,控制方程(1)可以寫成[6]:

      假設(shè)P為一個(gè)廣義的計(jì)算節(jié)點(diǎn),記其左右兩側(cè)的相鄰節(jié)點(diǎn)分別為E和W,上下兩側(cè)用的相鄰節(jié)點(diǎn)分別為S和N,如圖2所示。

      圖2 有限體積法體控制方程離散示意圖Fig.2 Governing equations discretization of finite element method.

      對圖3所示的P點(diǎn)處的控制體在Δt的時(shí)間段內(nèi)進(jìn)行積分可得:

      如果在對流項(xiàng)、擴(kuò)散項(xiàng)和源項(xiàng)中引入全隱式的時(shí)間積分方案,二維瞬態(tài)通用形式的代數(shù)方程可寫為:

      式中:pφ是控制體積p上的待求物理量,可以是三個(gè)方向速度u、v、w和壓力p,還可以是溫度T等;b為源項(xiàng),下標(biāo)nb表示相鄰節(jié)點(diǎn)。

      從通用形式的代數(shù)方程可以看出,壓力項(xiàng)沒有自身的控制方程,壓力的修正值和正確的速度場如何得到成為迭代過程中的難題。所以 Patankar和Spalding在1972年提出了求解壓力耦合方程組的半隱式方法[7]。本文采用的Code_Saturne程序利用半隱式方法算法進(jìn)行離散方程組的求解,其中需要大量的迭代計(jì)算。一般的CFD軟件采用較多的迭代法有共軛梯度法和代數(shù)多重網(wǎng)格法。由于預(yù)處理技術(shù)常用來加速矩陣求解收斂速度的方法,所以本文的Code_Saturne程序?yàn)榱思涌焓諗克俣龋褂昧祟A(yù)處理技術(shù)的共軛梯度法作為迭代算法。

      2.2 開源CFD軟件Code_Saturne的介紹

      Code_Saturne是由法國 EDF (Electricity of France)集團(tuán)研發(fā)中心研發(fā)的一款通用計(jì)算流體力學(xué)軟件。Code_Saturne是基于有限體積法,適用于處理二維、三維,穩(wěn)態(tài)或非穩(wěn)態(tài),層流或湍流等多種計(jì)算問題[8]。Code_Saturne有前處理器、求解器、后處理器三大模塊,并通過可視化用戶界面將三大模塊整合起來。如圖3所示,Code_Saturne程序的求解器模塊將物理問題轉(zhuǎn)化為求解代數(shù)方程組,采用迭代求解的算法進(jìn)行方程組的求解。本文以4.0.6版本的Code_Saturne程序?yàn)榛A(chǔ),使用PGI編譯器進(jìn)行編譯。

      圖3 Code_Saturne結(jié)構(gòu)概覽Fig.3 Overview of Code_Saturne structure.

      2.3 并行算法實(shí)現(xiàn)方法

      因?yàn)榈蠼庠贑ode_Saturne軟件模擬計(jì)算中占了 80%的計(jì)算時(shí)間[9],所以利用 OpenACC編程技術(shù)對其耗時(shí)最長的部分進(jìn)行GPU并行加速。在軟件自帶的預(yù)處理共軛梯度算法求解壓力狀態(tài)方程中,該求解算法的while循環(huán)部分占了大部分運(yùn)算時(shí)間,而其中耗時(shí)最長的是矩陣向量相乘。所以本文將OpenACC編程技術(shù)應(yīng)用于Code_Saturne中壓力狀態(tài)方程求解的預(yù)處理共軛梯度算法。通過OpenACC語法中的兩個(gè)計(jì)算構(gòu)件將循環(huán)并行化,分別為 parallel和kernels。這兩個(gè)構(gòu)件通過使用子語指定下方的循環(huán)區(qū)域需要GPU并行和并行級別。如圖4所示,GPU并行化處理之前,還需要將所需變量存儲于GPU上,可以減少CPU與GPU之間的重復(fù)數(shù)據(jù)拷貝時(shí)間。在并行計(jì)算結(jié)束時(shí),運(yùn)算所得數(shù)據(jù)也需要從CPU端拷貝到GPU端。

      圖4 GPU上CG迭代并行處理流程圖Fig.4 Parallel processing flow chart of CG on GPU.

      2.4 并行算法優(yōu)化方法

      2.4.1 代碼嵌入方式

      主流加速器的編程語言及兼容性問題使 GPU加速原有程序比較困難,而OpenACC是一種指導(dǎo)語句,只與編譯器的種類相關(guān)。本文采用條件編譯方法將GPU并行算法嵌入源代碼,可以根據(jù)其需求進(jìn)行編譯及修改,使得程序本身擁有更好的兼容性。使用OpenACC編程的條件編譯方法需要相應(yīng)的編譯器預(yù)定義一個(gè)宏_OPENACC,其中宏的值由OpenACC版本的發(fā)布日期構(gòu)成。

      2.4.2 數(shù)據(jù)存儲

      稀疏矩陣的存儲格式在向量矩陣相乘中是影響運(yùn)算性能的關(guān)鍵因素[10?11]。在 GPU 平臺上能夠有較好的運(yùn)算性能的格式有行壓縮(Compressed Sparse Row, CSR)、ELLPACK (ELL)和分片 ELL(Sliced ELLPACK, SELL)。本文采用了兩種適合GPU并行格式,一種是CSR,如圖5所示。RowStart存儲了每行第一個(gè)非零元在 Value中的索引,Col_Index存儲了非零元的列索引,Values存儲了所有非零元的具體值。另一種是 CSR的變種 MSR(Modified CSR),用于分塊存儲數(shù)據(jù)。本文通過使用基于 Fortran語言的接口函數(shù)進(jìn)行矩陣格式的修改,在求解壓力狀態(tài)方程之前顯示地將矩陣存儲格式轉(zhuǎn)換為CSR格式。

      圖5 CSR存儲格式Fig.5 CSR storage format.

      2.4.3 調(diào)節(jié)線程維度

      迭代計(jì)算會被大量的線程并行執(zhí)行,將數(shù)據(jù)空間進(jìn)行劃分,映射到 GPU 線程上。給出每個(gè)線程塊中最優(yōu)配置值,從而在 GPU 上得到更好的并行效率。當(dāng)一個(gè)線程塊中的線程數(shù)較大時(shí),GPU 可以通過在不同的快速切換來隱藏訪存延遲,因此增大一個(gè)線程塊中的線程數(shù)有助于提高計(jì)算資源的利用率[1]。本文使用OpenACC實(shí)現(xiàn)GPU并行加速,而OpenACC擁有三個(gè)并行層次,分別為gang、worker和 vector。每個(gè)層次的并行個(gè)數(shù)可以通過相應(yīng)的子語來實(shí)現(xiàn)。本文使用 NVIDIA公司生產(chǎn)的 Tesla K40c,每個(gè)流處理器的最多可以同時(shí)處理1024個(gè)線程。當(dāng)gang、worker和vector的數(shù)分別在1、32和32時(shí),預(yù)處理共軛梯度法的GPU并行計(jì)算達(dá)到最優(yōu)性能。

      3 測試方案

      3.1 測試環(huán)境

      本文搭建了如下測試環(huán)境來驗(yàn)證 GPU加速并行方法的正確性及其加速性能。本文在Linux系統(tǒng)中安裝了開源CFD軟件Code_Saturne及其相關(guān)組件,Code_Saturne是4.06版本,PGI編譯器為4.4.3版本。以個(gè)人工作站作為實(shí)驗(yàn)平臺,其中的 GPU為NVIDIA公司生產(chǎn)的Tesla K40c,CPU為6核Intel Xeon E5-2620。

      3.2 測試結(jié)果

      3.2.1 正確性驗(yàn)證

      方腔頂蓋驅(qū)動(dòng)流是經(jīng)典的數(shù)值計(jì)算模型,常用來檢測源程序和計(jì)算思想的正確性。本文模擬的方腔邊長L為1m,速度v=1m·s?1,即其頂板以 1m·s?1速度向右移動(dòng),同時(shí)帶動(dòng)方腔內(nèi)流體的流動(dòng),流場內(nèi)的流體為層流,如圖6所示??涨恢谐錆M等密度的水,密度為 1.0kg·m?3,動(dòng)力粘度為 10?3Pa·s?1,那么雷諾數(shù)為 1000。計(jì)算區(qū)域示意圖[12]如圖 6所示。

      圖6 頂蓋驅(qū)動(dòng)流示意圖Fig.6 Lid-driven cavity flow.

      為了驗(yàn)證GPU并行算法的正確性,本文測試了方腔驅(qū)動(dòng)流的流場計(jì)算結(jié)果,并與GPU加速前的結(jié)果進(jìn)行了比較。圖7為使用GPU加速后的流場計(jì)算結(jié)果,GPU加速前后的結(jié)果相差很小。

      圖7 方腔驅(qū)動(dòng)流的流場算例GPU加速后Fig.7 Velocity field of lid-driven cavity flow case after GPU parallelization.

      圖8 (a)為GPU與CPU的沿著y軸中心截面x方向的流速結(jié)果,圖8(b)為GPU與CPU的沿著x軸中心截面y方向的流速結(jié)果。從測試結(jié)果來看,無論是沿著y軸中心截面x方向,還是沿著x軸中心截面y方向,GPU得出的結(jié)果與CPU的結(jié)果相差很小,證明了該方法的正確性。

      圖8 沿y軸中心截面x方向(a)和沿x軸中心截面y方向(b)的流速分布Fig.8 x velocity along the y-axis (a) and y velocity along the x-axis (b).

      3.2.2 性能測試

      本文采用了簡化的熔鹽堆堆芯模型模擬堆芯流場的計(jì)算。入口位于下降段的左邊,熔鹽FLiBe以速度為1m·s?1、溫度為600°C進(jìn)入堆芯。熔鹽的密度為 1986.55354kg·m?3,動(dòng)力粘度為 8.554×10?3Pa·s?1,導(dǎo)熱系數(shù)為 1.1W·m?1·K?1,定壓比熱容為 2390J·kg?1·°C?1,湍流模型為 k-ε模型。出口位于堆芯的上方,堆芯的幾何參數(shù)[13]如圖9所示。

      圖9 簡易熔鹽堆模型示意圖Fig.9 Simplified molten salt reactor.

      通過 GPU加速技術(shù)將向量內(nèi)積算法部分進(jìn)行并行加速,統(tǒng)計(jì)加速前后所用時(shí)間及計(jì)算對應(yīng)的加速比。由于向量運(yùn)算只涉及一維運(yùn)算,存儲和計(jì)算都有利于并行運(yùn)算。從圖10中可以看出,當(dāng)網(wǎng)格規(guī)模達(dá)到2.89×106時(shí),計(jì)算速度是原有程序的3.92倍,加速效果明顯。從整體上看,隨著網(wǎng)格規(guī)模的增大,向量內(nèi)積算法加速比呈線性上升趨勢。

      圖10 向量內(nèi)積運(yùn)算加速比曲線Fig.10 Dot product speedup curve.

      通過 GPU加速技術(shù)將矩陣向量相乘算法部分進(jìn)行并行加速,并統(tǒng)計(jì)加速前后所用時(shí)間及計(jì)算對應(yīng)的加速比。將矩陣存儲為方便 GPU并行計(jì)算的CSR格式,向量的存儲格式不改變。如圖11所示,在網(wǎng)格規(guī)模相同的情況下,矩陣向量相乘算法部分優(yōu)化效果并不理想,只是CPU串行計(jì)算速度的1.56倍,通過進(jìn)一步的測試,賦予數(shù)據(jù)空間和數(shù)據(jù)傳輸消耗了大量的計(jì)算時(shí)間。但是從整體上看,隨著網(wǎng)格規(guī)模的增大,矩陣向量算法加速比大致呈線性上升趨勢。

      圖11 矩陣向量乘法Fig.11 Sparse matrix vector multiply speedup curve.

      圖 12為不同網(wǎng)格規(guī)模下預(yù)處理共軛梯度法的加速比率。從圖 12中可以看出,在網(wǎng)格規(guī)模數(shù)為8.1×105時(shí),GPU 優(yōu)化后的計(jì)算性能達(dá)到頂峰,加速比為1.93;而在網(wǎng)格規(guī)模數(shù)大于8.1×105時(shí),GPU優(yōu)化后的加速性能基本上維持不變。將其中的向量及矩陣線性運(yùn)算GPU并行化,把需要計(jì)算的數(shù)據(jù)從CPU端拷貝到GPU端,可以減少數(shù)據(jù)的拷貝時(shí)間。需要注意的是,拷貝的數(shù)據(jù)量要適當(dāng),過多可能造成帶寬擁堵,過少可能造成數(shù)據(jù)的讀取效率低下。Code_Saturne使用預(yù)處理共軛梯度法進(jìn)行狀態(tài)方程求解時(shí),臨時(shí)矩陣和向量的變量很多。當(dāng)GPU中存儲的數(shù)據(jù)較多時(shí),由于帶寬的限制和GPU內(nèi)數(shù)據(jù)的讀取等問題,加速效果不明顯。

      圖12 預(yù)處理共軛梯度法Fig.12 Preconditioned conjugate gradients speedup curve.

      4 結(jié)語

      本文將開源CFD軟件Code_Saturne中稀疏線性迭代求解的過程實(shí)現(xiàn)了GPU并行化,對數(shù)據(jù)存儲和分配進(jìn)行了優(yōu)化。通過對開源CFD軟件中稀疏線性求解算法的研究,建立了基于OpenACC的GPU并行算法。通過與原版程序計(jì)算結(jié)果進(jìn)行對比,驗(yàn)證了GPU并行算法的正確性。OpenACC能夠用比較小的代價(jià)實(shí)現(xiàn)大量代碼的加速,僅在源代碼中加入不超過40條OpenACC代碼。通過GPU并行化后的Code_Saturne程序?qū)θ埯}堆堆芯流場簡單模擬測試可以看出,隨著網(wǎng)格數(shù)量的增加,預(yù)處理共軛梯度法的加速比逐漸增大,特別是向量線性運(yùn)算加速明顯,說明該算法具有良好加速性能。

      1 應(yīng)智. 基于GPU的OpenFOAM并行加速研究[D]. 上海: 上海交通大學(xué), 2012.YING Zhi. Research on acceleration of open FOAM based on GPU[D]. Shanghai: Shanghai Jiaotong University, 2012.

      2 Wienke S, Springer P, Terboven C, et al. OpenACC: first experiences with real-world applications[C]. Berlin:Euro-Par 2012 Parallel Processing, 2012: 859?870.

      3 Wyrzykowski R, Dongarra J, Karczewski K, et al.Parallel processing and applied mathematics[M]. Berlin:Springer Berlin Heidelberg, 2008: 311?321.

      4 Kraus J, Schlottke M, Adinetz A, et al. Accelerating a C++ CFD code with OpenACC[C]. 2014 First Workshop on Accelerator Programming Using Directives(WACCPD), Los Alamitos, USA, 2014: 47?54.

      5 張朝暉, 劉俊起, 徐勤建. GPU并行計(jì)算技術(shù)分析與應(yīng)用[J]. 信息技術(shù), 2009, 11: 86?89.ZHANG Zhaohui, LIU Junqi, XU Qinjian. Analysis and application of the GPU parallel computing technology[J].Information Technology, 2009, 11: 86?89.

      6 王福軍. 計(jì)算流體動(dòng)力學(xué)分析: CFD軟件原理與應(yīng)用[M]. 北京: 清華大學(xué)出版社, 2004: 54?57.WANG Fujun. Computational fluid dynamic analysis:theory and application of CFD[M]. Beijing: Tsinghua University Press, 2004: 54?57.

      7 宋士雄. 熔鹽冷卻球床堆熱工水力特性研究[D]. 上海:中國科學(xué)院上海應(yīng)用物理研究所, 2014.SONG Shixiong. Thermal-hydraulics characteristics research of molten salt cooled pebble bed reactor[D].Shanghai: Shanghai Institute of Applied Physics, Chinese Academy of Sciences, 2014.

      8 Anzt H, Baboulin M, Dongarra J, et al. Accelerating the conjugate gradient algorithm with GPUs in CFD simulations[C]. High Performance Computing for Computational Science, VECPAR, Porto, Portugal, 2016:35?43.

      9 Rodriguez M R, Philip B, Wang Z, et al. Block-relaxation methods for 3D constant-coefficient stencils on GPUs and multicore CPUs[EB/OL]. 2017-01-05. https://arxiv.org/pdf/1208.1975v2.pdf.

      10 張志能. 基于GPU的稀疏線性方程組求解及其應(yīng)用[D].南昌: 南昌大學(xué), 2013.ZHANG Zhineng. Solution and application of sparse linear system based on GPU[D]. Nanchang: Nanchang University, 2013.

      11 馬超, 韋剛, 裴頌文, 等. GPU上稀疏矩陣與矢量乘積運(yùn)算的一種改進(jìn)[J]. 計(jì)算機(jī)系統(tǒng)應(yīng)用, 2010, 19(5):116?120.MA Chao, WEI Gang, PEI Songwen, et al. Improvement of sparse matrix-vector multiplication on GPU[J].Computer Systems & Applications, 2010, 19(5): 116?120.

      12 Shear driven cavity flow[EB/OL]. 2012-10-27.http://code-saturne.org/cms/sites/default/files/file_attach/Tutorial/version-3.0/Shear-driven-cavity-flow.pdf.

      13 Simplified nuclear vessel[EB/OL]. 2013-01-05.http://code-saturne.org/cms/sites/default/files/file_attach/Tutorial/version-3.0/Simplified-nuclear-vessel.pdf.

      Research on GPU parallelization of fluid dynamics process of molten salt reactor core

      HU Chuanwei1,2E Yanzhi1,2ZOU Yang1,3XU Hongjie1,3
      1(Shanghai Institute of Applied Physics, Chinese Academy of Sciences, Jiading Campus, Shanghai 201800, China)
      2(University of Chinese Academy of Sciences, Beijing 100049, China)
      3(Center for Thorium Molten Salt Reactor System, Chinese Academy of Sciences, Shanghai 201800, China)

      Background: The simulation of fluid dynamics process for molten salt reactor proposes a large compute complexity, which requires high performance computer systems to enhance speed and efficiency. Purpose: This study aims to achieve graphics processing unit (GPU) parallelization of fluid dynamics process of molten salt reactor core. Methods: OpenACC directives were used as the main programming model to speed up the vector and matrix linear operation. And the preconditioned conjugate gradients for solving linear equations were implemented on the GPU. Finally, the parallel implementation and general optimization strategies to the OpenACC version of Code_Saturne were tested and validated on a simplified molten salt reactor. Results: From the result of the implementation of the GPU-parallel code, it is manifested that the empirical tuning of OpenACC accelerated code sections are valid for obtaining correct results, and enhancing performance and portability. Conclusion: With OpenACC, we find that the instance of fluid dynamics process for molten salt reactor is given out using the GPUversion of Code_Saturne and the performance of the GPU version of Code_Saturne can be enhanced compared with that of the CPU version.

      HU Chuanwei, male, born in 1991, graduated from Harbin Engineering University in 2014, master student, focusing on thermal-hydraulics numerical calculation of reactor

      ZOU Yang, E-mail: zouyang@sinap.ac.cn

      date: 2017-03-16, accepted date: 2017-06-19

      Molten Salt Reactor, CFD, Conjugate gradient (CG), General-purpose graphic processing units(GPGPUs), OpenACC

      TL334

      10.11889/j.0253-3219.2017.hjs.40.110601

      中國科學(xué)院戰(zhàn)略性先導(dǎo)科技專項(xiàng)(No.XDA02001002)、中國科學(xué)院前沿科學(xué)重點(diǎn)研究項(xiàng)目(No.QYZDY-SSW-JSC016)資助

      胡傳偉,男,1991年出生,2014年畢業(yè)于哈爾濱工程大學(xué),現(xiàn)為碩士研究生,研究方向?yàn)榉磻?yīng)堆熱工水力數(shù)值計(jì)算

      鄒楊,E-mail: zouyang@sinap.ac.cn

      2017-03-16,

      2017-06-19

      Supported by Strategic Pilot Science and Technology Project of Chinese Academy of Sciences (No.XDA02001002) and the Frontier Science Key Program of Chinese Academy of Sciences (No.QYZDY-SSW-JSC016)

      猜你喜歡
      熔鹽共軛堆芯
      一個(gè)帶重啟步的改進(jìn)PRP型譜共軛梯度法
      一個(gè)改進(jìn)的WYL型三項(xiàng)共軛梯度法
      熔鹽在片堿生產(chǎn)中的應(yīng)用
      巧用共軛妙解題
      一種自適應(yīng)Dai-Liao共軛梯度法
      NaF-KF熔鹽體系制備Ti2CTx材料的研究
      應(yīng)用CDAG方法進(jìn)行EPR機(jī)組的嚴(yán)重事故堆芯損傷研究
      純鈦的熔鹽滲硼
      基于Hoogenboom基準(zhǔn)模型的SuperMC全堆芯計(jì)算能力校驗(yàn)
      核技術(shù)(2016年4期)2016-08-22 09:05:32
      大型燃?xì)馊埯}爐的研發(fā)和工藝控制
      工業(yè)爐(2016年1期)2016-02-27 12:34:11
      墨竹工卡县| 防城港市| 安泽县| 桂林市| 鸡西市| 友谊县| 普兰店市| 曲水县| 张家界市| 沙田区| 定边县| 大方县| 安乡县| 安图县| 南澳县| 新昌县| 拜城县| 蒙阴县| 墨玉县| 天气| 黎平县| 邵阳市| 寿光市| 望江县| 兴国县| 浏阳市| 溆浦县| 池州市| 科尔| 博罗县| 神木县| 新安县| 志丹县| 任丘市| 德清县| 健康| 华池县| 福安市| 鄂托克旗| 革吉县| 高邮市|