freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

petsc并行程序設(shè)計(jì)方法(ppt133)-流程管理-資料下載頁(yè)

2025-08-09 01:11本頁(yè)面

【導(dǎo)讀】全面介紹PETSc體系結(jié)構(gòu)、基本特色和功能。促進(jìn)PETSc應(yīng)用程序開發(fā)方面的合作與交流。尋求PETSc軟件開發(fā)方面的廣泛建議和幫助。是美國(guó)能源部ODE2020支持開發(fā)20多個(gè)ACTS工具箱之一,PETSc所有消息傳遞均采用MPI標(biāo)準(zhǔn)實(shí)現(xiàn)。Fortran77/90、C和C++編寫的串行和并行代碼?;ゲ僮鞴δ?并具有極好的可擴(kuò)展性能。測(cè)、性能統(tǒng)計(jì)和圖形打印等功能。PETSc最新版本為,2020年8月發(fā)布。通用的高層應(yīng)用程序開發(fā)平臺(tái)?;赑ETSc提供的大量對(duì)象。用軟件和數(shù)學(xué)庫(kù)提供接口等。圖1表示了PETSc在實(shí)現(xiàn)層次。盡管PETSc程序完全在MPI上實(shí)。釋放和運(yùn)行結(jié)束等環(huán)境運(yùn)行語(yǔ)句。和SLES)構(gòu)建的偏微方程求解器。但它卻不是PETSc的基。對(duì)于非時(shí)間演化或。穩(wěn)態(tài)方程,PETSc提供了偽時(shí)間步進(jìn)積分器。精確或擬牛頓迭代解法。SNES依賴于線性解法器SLES,并。Schwartz方法,多重網(wǎng)格預(yù)條件子等。PETSc向量對(duì)象主要用于存儲(chǔ)線性。方程組的解和右端向量。對(duì)于規(guī)則的正交網(wǎng)格,PETSc自動(dòng)。DA對(duì)象隱藏了進(jìn)程之間的通信,用戶只需提供全局的向

  

【正文】 ables以從其缺省改變 C, C++, 或 Fortran編譯器的名字。 4)在 PETSc主目錄中使用 make BOPT=g all amp。 make_log 建立 PETSc 的調(diào)試版本或使用 make BOPT=O all amp。 make_log 來(lái)建立 PETSc 庫(kù)的優(yōu)化版本。標(biāo)志 BOPT 確定建立哪種庫(kù)。其它可選項(xiàng)是對(duì) C++版本的 BOPT= [g_c++, O_c++] 和對(duì)復(fù)數(shù)版本的 BOPT=[g_plex,O_plex] 。 87 二 .PETSc的基本特色 ? 計(jì)算能力 ? 可兼容性 ? 可擴(kuò)展性 ? 抽象數(shù)據(jù)類型 ? 輸出能力 88 PETSc 為用戶提供了豐富的 算法 和 函數(shù)庫(kù) 資源。三個(gè)求解器( SLES、 SNES 和 TS)構(gòu)成了 PETSc的核心組件。 PETSc 不僅為 中小規(guī)模 線性方程組的求解提供了高效的 直接方法 ,還為 大規(guī)模(稀疏)線性方程組 的 迭代求解 提供了多種 Krylov子空間方法 和多種 預(yù)條件子 。 89 一方面, PETSc具有很強(qiáng)的兼容能力,可在 不同體系結(jié)構(gòu) 和不同操作系統(tǒng) 環(huán)境 高效運(yùn)行 。另一方面, PETSc本身基于高性能的線性代數(shù)庫(kù)( BLAS和 LAPACK)和 MPI消息傳遞環(huán)境實(shí)現(xiàn) , 同時(shí)又充分 吸收 和 融入 了其它優(yōu)秀軟件的優(yōu)點(diǎn),如無(wú)結(jié)構(gòu)網(wǎng)格區(qū)域分解 和 雅可比矩陣求解 等方面的功能。 90 PETSc的可擴(kuò)展性功能主要包括三個(gè)方面: 計(jì)算性能的并行可擴(kuò)展性 、 功能的可擴(kuò)展性 和 計(jì)算能力的可擴(kuò)展性 。 無(wú)論是在 計(jì)算時(shí)間 還是在 浮點(diǎn)性能 方面, PETSc 提供的范例程序都有良好的 線性加速比性能 。 面向?qū)ο蟮某绦蛟O(shè)計(jì) 風(fēng)格使得PETSc具有良好的 功能擴(kuò)展能力 。作為一個(gè) 高級(jí)應(yīng)用程序開發(fā)平臺(tái) , PETSc特別適合于用來(lái)開發(fā) 大型應(yīng)用程序 。 91 PETSc 基于 面向?qū)ο蠹夹g(shù) 實(shí)現(xiàn),具有所有面向?qū)ο筌浖灿械?可移植性 、 可繼承性 和 可擴(kuò)展性 等基本程序特征。 PETSc 的向量、矩陣和索引集等基本數(shù)據(jù)對(duì)象完全采用 抽象數(shù)據(jù)類型 實(shí)現(xiàn), 盡量對(duì)用戶屏蔽數(shù)據(jù)對(duì)象的區(qū)域劃分和物理存儲(chǔ)等細(xì)節(jié) 。 所有 PETSc格點(diǎn)數(shù)據(jù)對(duì)象 的 劃分 、 初始化 和 存取 等基本操作都由 DA對(duì)象 來(lái)管理和相應(yīng) PETSc 庫(kù)函數(shù) 實(shí)現(xiàn)。用戶基于 PETSc對(duì)象 可以靈活開發(fā)其應(yīng)用程序。 PETSc對(duì)象 和 組件 為構(gòu)造大規(guī)模應(yīng)用程序奠定一個(gè)良好的基礎(chǔ) 。 92 PETSc具有良好的 計(jì)算性能分析 、 實(shí)時(shí)信息打印 和 圖形可視化輸出 功能。同時(shí), PETSc還具有 高可用性 ,并具有很強(qiáng)的錯(cuò)誤診斷能力 。 93 三 .PETSc的實(shí)例分析 PETSc 所有對(duì)象和庫(kù)都是在 MPI 消息傳遞環(huán)境下開發(fā)。 一個(gè)標(biāo)準(zhǔn)的 PETSc程序本身就是一個(gè)標(biāo)準(zhǔn) MPI并行程序 。唯一不同的是 初始化 和 結(jié)束 一個(gè)程序的運(yùn)行需要 PETSc來(lái)管理。具體地,一個(gè)標(biāo)準(zhǔn)的 PETSc程序通過(guò)引用 PetscInitialize函數(shù)來(lái)初始化 或 啟動(dòng) 整個(gè)程序的運(yùn)行,并通過(guò)引用 PetscFinalize函數(shù)來(lái) 結(jié)束 整個(gè)程序的運(yùn)行。 PETSc提供了三個(gè)核心解法器,分別求解 線性方程組 、 非線性方程組 和 時(shí)間依賴方程組 。 而任何一個(gè)解法器的使用都包括 創(chuàng)建 、 初始化 、 執(zhí)行 和 空間釋放 幾個(gè)階段。以 SLES 解法 94 器為例, PETSc 程序一般分 四個(gè)必要階段 : 1. 創(chuàng)建 解算子、解向量和右端向量,并 填充 解算子(矩陣) 、 設(shè)置 初始解和右端向量; SLES環(huán)境 ,設(shè)置 Krylov子空間方法和預(yù)條件子; SLES解法器; 所有存儲(chǔ)空間。 95 例一:用 SLES求解一個(gè)二維 Laplace問(wèn)題的實(shí)例 下面是一個(gè)典型的 PETSc 程序范例,它使用 有限差分方法來(lái)求解 二維 Laplace 問(wèn)題 。 用 SLES( Krylov子空間方法 和預(yù)條件子 )求解一個(gè)線性方程組。 其代碼見(jiàn) ${ PETSC_DI R}/src/sles/examples/tutorial/。 96 include undef __FUNCT__ define __FUNCT__ main int main(int argc,char **args) { Vec x,b,u。 /* 近似解,右端向量和分析解 */ Mat A。 /* 線性算子 /矩陣 */ SLES sles。 /* 線性解法器 */ PetscRandom rctx。 /* 隨機(jī)數(shù)發(fā)生器環(huán)境 /數(shù)據(jù)對(duì)象 */ PetscReal norm。 /* 解誤差的范數(shù) */ int i, j, I, J, Istart, Iend, ierr, m = 8, n = 7, its。 PetscTruth flg。 PetscScalar v, one = , neg_one = 。 KSP ksp。 97 PetscInitialize(amp。argc, amp。args, (char *)0, help)。 ierr =PetscOptionsGetInt(PETSC_NULL,m,amp。m,PETSC_NULL)。 CHKERRQ(ierr)。 ierr =PetscOptionsGetInt(PETSC_NULL,n,amp。n,PETSC_NULL)。 CHKERRQ(ierr)。 /* 填充矩陣算子和右端向量 */ /* 創(chuàng)建矩陣對(duì)象 */ ierr=MatCreate(PETSC_COMM_WORLD,PETSC_DECIDE,PETSC_DECIDE,m*n,m*n,amp。A)。 CHKERRQ(ierr)。 ierr=MatSetFromOptions(A)。 CHKERRQ(ierr)。 /*獲得局部劃分的上下界 */ ierr = MatGetOwnershipRange(A,amp。Istart,amp。Iend)。 CHKERRQ(ierr)。 /*給矩陣的每個(gè)元素賦值 /五點(diǎn)差分格式 */ for (I=Istart。 IIend。 I++) { 98 v = 。 i = I/n。 j = I i*n。 if (i0) {J = I n。 ierr = MatSetValues(A,1,amp。I,1,amp。J,amp。v,INSERT_VALUES)。CHKERRQ(ierr)。} if (im1) {J = I + n。 ierr = MatSetValues(A,1,amp。I,1,amp。J,amp。v,INSERT_VALUES)。CHKERRQ(ierr)。} if (j0) {J = I 1。 ierr = MatSetValues(A,1,amp。I,1,amp。J,amp。v,INSERT_VALUES)。CHKERRQ(ierr)。} if (jn1) {J = I + 1。 ierr = MatSetValues(A,1,amp。I,1,amp。J,amp。v,INSERT_VALUES)。CHKERRQ(ierr)。} v = 。 ierr = MatSetValues(A,1,amp。I,1,amp。I,amp。v,INSERT_VALUES)。CHKERRQ(ierr)。} /* 矩陣集聚 */ ierr = MatAssemblyBegin(A,MAT_FINAL_ASSEMBLY)。 CHKERRQ(ierr)。 ierr = MatAssemblyEnd(A,MAT_FINAL_ASSEMBLY)。 CHKERRQ(ierr)。 99 /* 創(chuàng)建向量對(duì)象 */ ierr =VecCreate(PETSC_COMM_WORLD,amp。u)。 CHKERRQ(ierr)。 ierr =VecSetSizes(u,PETSC_DECIDE,m*n)。 CHKERRQ(ierr)。 ierr =VecSetFromOptions(u)。 CHKERRQ(ierr)。 ierr =VecDuplicate(u,amp。b)。 CHKERRQ(ierr)。 ierr =VecDuplicate(b,amp。x)。 CHKERRQ(ierr)。 /* 設(shè)置精確解和右端向量 */ ierr = PetscOptionsHasName(PETSC_NULL,random_exact_sol,amp。flg)。 CHKERRQ(ierr)。 if(flg){ ierr = PetscRandomCreate(PETSC_COMM_WORLD,RANDOM_DEFAULT,amp。rctx)。 CHKERRQ(ierr)。 ierr = VecSetRandom(rctx,u)。 CHKERRQ(ierr)。 ierr = PetscRandomDestroy(rctx)。 CHKERRQ(ierr)。 } else{ ierr = VecSet(amp。one,u)。 CHKERRQ(ierr)。 } ierr = MatMult(A,u,b)。 CHKERRQ(ierr)。 100 /* 屏幕顯示精確解 */ ierr = PetscOptionsHasName(PETSC_NULL,view_exact_sol,amp。flg)。 CHKERRQ(ierr)。 if(flg) {ierr = VecView(u,PETSC_VIEWER_STDOUT_WORLD)。CHKERRQ(ierr)。} /* 創(chuàng)建線性算子并設(shè)置運(yùn)行選項(xiàng) */ /*創(chuàng)建線性解法器環(huán)境和設(shè)置解算子 */ ierr = SLESCreate(PETSC_COMM_WORLD,amp。sles)。CHKERRQ(ierr)。 ierr =SLESSetOperators(sles,A,A,DIFFERENT_NONZERO_PATTERN)。 CHKERRQ(ierr)。 /*預(yù)置運(yùn)行參數(shù) */ ierr = SLESGetKSP(sles,amp。ksp)。 CHKERRQ(ierr)。 ierr= KSPSetTolerances(ksp, ((m+1)*(n+1)), , PETSC_DEFAULT, PETSC_ DEFAULT)。 CHKERRQ(ierr)。 101 /* 設(shè)置運(yùn)行選項(xiàng),例如 ksp_type type pc_type type ksp_monitor ksp_rtol rtol */ ierr = SLESSetFromOptions(sles)。 CHKERRQ(ierr)。 /*求解線性方程組 */ ierr = SLESSolve(sles,b,x,amp。its)。CHKERRQ(ierr)。 /* 檢測(cè)誤差并釋放內(nèi)存空間 */ /* 誤差檢測(cè) */ ierr = VecAXPY(amp。neg_one,u,x)。CHKERRQ(ierr)。 ierr = VecNorm(x,NORM_2,amp。norm)。 CHKERRQ(ierr)。 /* 打印收斂信息 */ ierr = PetscPrintf(PETSC_COMM_WORLD,Norm of error %A iterations %d\n,norm,its)。
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1