並列有限要素法による 三次元定常熱伝導 ...€¦ · •...

32
並列有限要素法による 三次元定常熱伝導解析プログラム 並列可視化 中島 研吾 東京大学情報基盤センター RIKEN AICS HPC Spring School 2014

Upload: others

Post on 23-Jun-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 並列有限要素法による 三次元定常熱伝導 ...€¦ · • アプリ開発者を以下から解放 – ハイブリッド並列化・CUDA・OpenCL等のプログラミング

並列有限要素法による三次元定常熱伝導解析プログラム

並列可視化

中島研吾

東京大学情報基盤センター

RIKEN AICS HPC Spring School 2014

Page 2: 並列有限要素法による 三次元定常熱伝導 ...€¦ · • アプリ開発者を以下から解放 – ハイブリッド並列化・CUDA・OpenCL等のプログラミング

自動チューニング機構を有するアプリケーション開発・実行環境

ppOpen‐HPC

中島研吾東京大学情報基盤センター

佐藤正樹(東大・大気海洋研究所),奥田洋司(東大・新領域創成科学研究科),

古村孝志(東大・情報学環/地震研),岩下武史(京大・学術情報メディアセンター),

阪口秀(海洋研究開発機構)

Page 3: 並列有限要素法による 三次元定常熱伝導 ...€¦ · • アプリ開発者を以下から解放 – ハイブリッド並列化・CUDA・OpenCL等のプログラミング

背 景(1/2)• 大規模化,複雑化,多様化するハイエンド計算機環境の能力を充分に引き出し,効率的なアプリケーションプログラムを開発することは困難

• 有限要素法等の科学技術計算手法:

– プリ・ポスト処理,行列生成,線形方程式求解等の一連の共通プロセスから構成される。

– これら共通プロセスを抽出し,ハードウェアに応じた最適化を施したライブラリとして整備することで,アプリケーション開発者から共通プロセスに関わるプログラミング作業,並列化も含むチューニング作業を隠蔽できる。

– アプリケーションMW,HPC‐MW,フレームワーク

pFEM‐VIS 3

Page 4: 並列有限要素法による 三次元定常熱伝導 ...€¦ · • アプリ開発者を以下から解放 – ハイブリッド並列化・CUDA・OpenCL等のプログラミング

背 景(2/2)• A.D.2000年前後

– GeoFEM,HPC‐MW– 地球シミュレータ,Flat MPI,FEM

• 現在:より多様,複雑な環境

– マルチコア,GPU– ハイブリッド並列

• MPIまでは何とかたどり着いたが・・・

• 「京」でも重要

– CUDA,OpenCL– ポストペタスケールからエクサスケールへ

• より一層の複雑化

pFEM‐VIS 4

Vis.LinearSolver

MatrixAssembleI/O

HPC-MW for T2K

Vis.LinearSolver

MatrixAssembleI/O

HPC-MW for T2K

FEM code developed on PCI/F forVis.

I/F forSolvers

I/F forMat.Ass.

I/F forI/O

FEM code developed on PCI/F forVis.

I/F forSolvers

I/F forMat.Ass.

I/F forI/O

I/F forVis.

I/F forSolvers

I/F forMat.Ass.

I/F forI/O

Vis.LinearSolver

MatrixAssembleI/O

HPC-MW for Next Generation Supercomputer

Vis.LinearSolver

MatrixAssembleI/O

HPC-MW for Next Generation Supercomputer

Vis.LinearSolver

MatrixAssembleI/O

HPC-MW for Earth Simulator

Vis.LinearSolver

MatrixAssembleI/O

HPC-MW for Earth Simulator

Page 5: 並列有限要素法による 三次元定常熱伝導 ...€¦ · • アプリ開発者を以下から解放 – ハイブリッド並列化・CUDA・OpenCL等のプログラミング

Hybrid並列プログラミングモデルMPI+”X”

• Message Passing– MPI

• Multi Threading– OpenMP– CUDA, OpenCL

5

OpenMP/MPI Hybrid

corecorecorecorem

emor

y corecorecorecorem

emor

y corecorecorecorem

emor

y corecorecorecorem

emor

y corecorecorecorem

emor

y corecorecorecorem

emor

y

mem

ory

mem

ory

mem

ory

core

core

core

core

core

core

core

core

core

core

core

core

Flat MPI

pFEM‐VIS 5

Page 6: 並列有限要素法による 三次元定常熱伝導 ...€¦ · • アプリ開発者を以下から解放 – ハイブリッド並列化・CUDA・OpenCL等のプログラミング

HPCミドルウェア:何がうれしいか

• アプリケーション開発者のチューニング(並列,単体)からの解放

– SMASHの探求に専念

• 一生SMASHと付き合うのはきつい

– SMASHをカバー

• コーディングの量が減る

• 教育にも適している

• 問題点

– ハードウェア,環境が変わるたびに最適化が必要となる

HHardwareardware

SSoftwareoftware

AAlgorithmlgorithm

MModelingodeling

SSciencecience

6

pFEM‐VIS 6

Page 7: 並列有限要素法による 三次元定常熱伝導 ...€¦ · • アプリ開発者を以下から解放 – ハイブリッド並列化・CUDA・OpenCL等のプログラミング

Key-Issues for Appl’s/Algorithms towards Post-Peta & Exa Computing

Jack Dongarra (ORNL/U. Tennessee) at SIAM/PP10

• ヘテロジニアスなアーキテクチャ:Hybrid/Heterogeneous Architecture– Multicore + GPU– Multicore + Manycore (more intelligent)– Multicore + GPU + Manycore

• 混合精度演算:Mixed Precision Computation• 自動チューニング:Auto-Tuning/Self-Adapting• 耐故障性:Fault Tolerance• 通信削減アルゴリズム:Communication Reducing

Algorithms

Page 8: 並列有限要素法による 三次元定常熱伝導 ...€¦ · • アプリ開発者を以下から解放 – ハイブリッド並列化・CUDA・OpenCL等のプログラミング

ppOpen‐HPC:概要• ヘテロジニアスなアーキテクチャによる計算ノードを有するポストペタスケールシステムの処理能力を充分に引き出す科学技術アプリケーションの効率的な開発,安定な実行に資する

– pp= post petascale– Five Key‐Issuesを考慮

• 東大情報基盤センターに2015年度に導入予定の数10 PFLOPS級システム(ポストT2K,Intel MIC/Xeon‐Phiベース)を最終的なターゲット:

– スパコンユーザーの円滑な移行支援

– T2K,東大FX10,京– TSUBAME

pFEM‐VIS 8

Page 9: 並列有限要素法による 三次元定常熱伝導 ...€¦ · • アプリ開発者を以下から解放 – ハイブリッド並列化・CUDA・OpenCL等のプログラミング

ppOpen-HPC:基本的方針

• 対象離散化手法による分類(次ページ)

• ハードウェアに依存しない共通インタフェースを有するアプリケーション開発用ライブラリ群,耐故障機能を含む実行環境を提供

– 各離散化手法の特性に基づく

– SC11:10種類以上のプロセッサアーキテクチャ

• 自動チューニング技術により,様々な環境下における最適化ライブラリ・アプリケーション自動生成を目指す

• 数値ライブラリ,システムソフトウェア,アプリケーションの専門家の協力:Co-Design

• 既存ソフトウェア資産(e.g. HEC-MW)の効率的利用

• 実際に動いているアプリケーションから機能を切り出す

Page 10: 並列有限要素法による 三次元定常熱伝導 ...€¦ · • アプリ開発者を以下から解放 – ハイブリッド並列化・CUDA・OpenCL等のプログラミング

対象とする離散化手法局所的,隣接通信中心,疎行列

10pFEM‐VIS

Page 11: 並列有限要素法による 三次元定常熱伝導 ...€¦ · • アプリ開発者を以下から解放 – ハイブリッド並列化・CUDA・OpenCL等のプログラミング

112013‐01pFEM‐VIS

Page 12: 並列有限要素法による 三次元定常熱伝導 ...€¦ · • アプリ開発者を以下から解放 – ハイブリッド並列化・CUDA・OpenCL等のプログラミング

Code developed on ppOpen-HPC12

Program My_pFEMuse ppOpenFEM_utiluse ppOpenFEM_solver

call ppOpenFEM_initcall ppOpenFEM_cntlcall ppOpenFEM_meshcall ppOpenFEM_mat_init

docall ppOpenFEM_mat_asscall ppOpenFEM_mat_bccall ppOpenFEM_solvecall ppOPenFEM_visTime= Time + DT

enddo

call ppOpenFEM_finalizestopend

2013-01

pFEM‐VIS 12

Page 13: 並列有限要素法による 三次元定常熱伝導 ...€¦ · • アプリ開発者を以下から解放 – ハイブリッド並列化・CUDA・OpenCL等のプログラミング

ppOpen‐HPC:何を作るか(1/2)• ppOpen‐APPL

– 各手法個別の並列プログラム開発用ライブラリ群またはテンプレート

• ①共通データ入出力インタフェース

• ②領域間通信

• ③係数マトリクス生成

• ④離散化手法の特性を考慮した前処理付き反復法

• ⑤適応格子,動的負荷分散

pFEM‐VIS 13

Page 14: 並列有限要素法による 三次元定常熱伝導 ...€¦ · • アプリ開発者を以下から解放 – ハイブリッド並列化・CUDA・OpenCL等のプログラミング

ppOpen‐HPC:何を作るか(2/2)• ppOpen‐MATH

– 各手法に共通の数値演算ライブラリ群,単独利用可

• ppOpen‐AT– 自動チューニング(AT)コンパイラ:Directive Base

• 最適化ライブラリ群,アプリケーションを自動生成

• OpenFOAM,PETSc等オープンソースアプリ・ライブラリも対象

• Hybrid,CUDA,OpenCL (OpenACC)• メモリアクセス最適化に主眼+通信最適化も検討

• CPU~GPU/Manycore負荷分散

• ppOpen‐SYS– ノード間通信,耐故障機能関連ライブラリ群

pFEM‐VIS 14

Page 15: 並列有限要素法による 三次元定常熱伝導 ...€¦ · • アプリ開発者を以下から解放 – ハイブリッド並列化・CUDA・OpenCL等のプログラミング

ppOpen‐HPC:何がうれしいか

• アプリ開発者を以下から解放

– ハイブリッド並列化・CUDA・OpenCL等のプログラミング

– ハードウェアに依存したチューニング,ホストCPU~アクセラレータ間の負荷分散等

• ハードウェア依存のチューニングのプロセスは全てppOpen‐ATに集約されるため,計算機環境が変化しても,ppOpen‐ATのみを変更すれば良い

pFEM‐VIS 15

Page 16: 並列有限要素法による 三次元定常熱伝導 ...€¦ · • アプリ開発者を以下から解放 – ハイブリッド並列化・CUDA・OpenCL等のプログラミング

ppOpen‐HPC:特徴,新規性

• 汎用性・可搬性,使いやすさと高効率の両立

– 科学技術アプリの最適化→個別対応:限界がある

• 離散化手法による分類,対象の絞り込み

– それぞれの手法に応じた最適化• データ構造の特徴を最大限利用

• 離散化手法による最適化アプローチの相違(例:疎行列)

• 自動チューニング:ppOpen‐AT– メモリアクセス最適化,Host Processor~Co‐Processors負荷分散

– 新しいアーキテクチャ,計算機環境への柔軟な対応

– アプリケーション開発者だけでなくライブラリ開発者の負担も大きく軽減できる,オープンソースアプリ・ライブラリ(例:OpenFOAM,PETSc)もターゲット,他プロジェクトとの連携も容易

• 関連研究(Sphere,OpenMM)

pFEM‐VIS 16

Page 17: 並列有限要素法による 三次元定常熱伝導 ...€¦ · • アプリ開発者を以下から解放 – ハイブリッド並列化・CUDA・OpenCL等のプログラミング

体制

• 数値ライブラリ,システムソフトウェア,アプリケーションの専門家による協力,Co‐Design– 東大ITC ppOpen‐MATH,ppOpen‐AT,ppOpen‐SYS– 東大AORI ppOpen‐MATH/MP,ppOpen‐APPL/FVM– 東大CIDIR ppOpen‐APPL/FDM– 東大FS ppOpen‐APPL/FEM,混合精度演算手法

– 京大 ppOpen‐APPL/BEM– JAMSTEC ppOpen‐APPL/DEM,通信削減Algorithm

• 各分野で既に先端的な研究実績,開発経験– GeoFEM,HPC‐MW,ABCLibScript– ハイブリッド並列プログラミングモデル,カップリング,自動チューニング,並列多重格子法,GPU

pFEM‐VIS 17

Page 18: 並列有限要素法による 三次元定常熱伝導 ...€¦ · • アプリ開発者を以下から解放 – ハイブリッド並列化・CUDA・OpenCL等のプログラミング

pFEM‐VIS 18

マイルストーン=動くソフトウェアの公開公開内容 趣旨,目標 ターゲットマシン 開発環境

H24秋 ppOpen-APPLプロトタ

イプ(適応格子・動的

負荷分散を除く),領

域分割ユーティリティ,

ppOpen-MATH/VIS・ppOpen-AT/STATIC プ

ロトタイプ

ppOpen-APPL , ppOpen-AT が

様々なマルチコアクラスタで

稼働することを検証する。大

学(学部,大学院)講義への

導入,講習会開催を継続的に

実施する。

東大T2K東大FX10京コンピュータ

Cray XKシリーズ

東大T2K東大FX10京コンピュータ

H25秋 ppOpen-HPC(ppOpen-AT / DYNAMIC を 除

く)

ppOpen-HPC の 各 機 能

(ppOpen-AT/DYNAMICを除

く)をこの時期までに一通り

完成する。実アプリケーショ

ンへ適用することにより更な

る改良を図る。

東大FX10京コンピュータ

Xeon Phiクラスタ

Cray XKシリーズ

GPUマシン

東大FX10京コンピュータ

Xeon Phiクラスタ

開発用システム

(GPU, AMD)

H26秋 ポストペタスケールシ

ス テ ム 向 け ppOpen-HPCプロトタイプ

ターゲットとするポストペタ

スケールシステム(東大ppシステム)向け。

東大ppシステム

GPUマシン

東大FX10京コンピュータ

Xeon Phiクラスタ

開発用システム

H27秋 ポストペタスケースシ

ス テ ム 向 け ppOpen-HPC完成版

H26秋に公開したppOpen-HPCを実アプリケーションへ適用

することにより,更に改良,

最適化した最終バージョンを

公開する。

東大ppシステム

GPUマシン

東大ppシステム

東大FX10京コンピュータ

Xeon Phiクラスタ

開発用システム

Page 19: 並列有限要素法による 三次元定常熱伝導 ...€¦ · • アプリ開発者を以下から解放 – ハイブリッド並列化・CUDA・OpenCL等のプログラミング

第1回公開 2012 Fall(1/2)• マルチコアクラスタ向け

• Flat MPI,OpenMP/MPI Hybridに対応

• SC12@SLCに合わせて公開,配布(英文DOC(のみ))

pFEM‐VIS 19

Component Archive Flat MPI OpenMP/MPI C F

ppOpen‐APPL/FDM ppohFDM_0.1.0 ○ ○

ppOpen‐APPL/FVM ppohFVM_0.1.0 ○ ○ ○

ppOpen‐APPL/FEM ppohFEM_0.1.0 ○ ○ ○ ○

ppOpen‐APPL/BEM ppohBEM_0.1.0 ○ ○ ○

ppOpen‐APPL/DEM ppohDEM_0.1.0 ○ ○ ○

ppOpen‐MATH/VIS ppohVIS_FDM3D_0.1.0 ○ ○ ○

ppOpen‐AT/STATIC ppohAT_0.1.0 ‐ ‐ ○ ○

Page 20: 並列有限要素法による 三次元定常熱伝導 ...€¦ · • アプリ開発者を以下から解放 – ハイブリッド並列化・CUDA・OpenCL等のプログラミング

第1回公開 2012 Fall(2/2)pFEM‐VIS 20

Component 内容

ppOpen‐APPL/FDM • 二次元・三次元陽解法コード開発環境(Flat MPI)• 固体力学

ppOpen‐APPL/FVM • 三次元陽解法コード開発環境・領域分割ツール:四面体,三角柱• 圧縮性流体力学

ppOpen‐APPL/FEM • 有限要素法コード開発環境・領域分割ツール:各種要素• 弾性静力学

ppOpen‐APPL/BEM • 密行列による汎用境界要素法コード開発環境• 表面電荷法テンプレート

ppOpen‐APPL/DEM • 個別要素法コード開発環境• 三次元重力落下

ppOpen‐MATH/VIS • 三次元差分格子向けリアルタイム可視化ライブラリ(Flat MPI)

ppOpen‐AT/STATIC • 自動チューニング向けプリプロセッサ• ppOpen-APPL/FDM,ppOpen-APPL/BEMで検証済み

http://ppopenhpc.cc.u-tokyo.ac.jp/

Page 21: 並列有限要素法による 三次元定常熱伝導 ...€¦ · • アプリ開発者を以下から解放 – ハイブリッド並列化・CUDA・OpenCL等のプログラミング

What is new in Ver.0.2.0 ?http://ppopenhpc.cc.u-tokyo.ac.jp/

• Available in SC13 (or can be downloaded)

21

Component New Development

ppOpen‐APPL/FDM• OpenMP/MPI Hybrid Parallel Programming Model• Intel Xeon/Phi Version• Interface for ppOpen‐MATH/VIS‐FDM3D

ppOpen‐APPL/FVM • Optimized Communication

ppOpen‐APPL/FEM • Sample Implementations for Dynamic Solid Mechanics

ppOpen‐MATH/MP‐PP • Tool for Generation of Remapping Table in ppOpen‐MATH/MP

ppOpen‐MATH/VIS • Optimized ppOpen‐MATH/VIS‐FDM3D

ppOpen‐AT/STATIC• Sequence of Statements, Loop Splitting (Optimized)• ppOpen‐APPL/FVM• ppOpen‐APPL/FDM・BEM

Page 22: 並列有限要素法による 三次元定常熱伝導 ...€¦ · • アプリ開発者を以下から解放 – ハイブリッド並列化・CUDA・OpenCL等のプログラミング

22

ppOpen‐APPL/FVM• 3D圧縮性流体向け機能:実コードから切り出し

– 辺ベース有限体積法,陽解法

– 三角柱,四面体要素(一次)

– データ入出力

– 辺情報(コネクティビティ,投影面積等)

– 領域間通信・MPI関数代用

– 簡易領域分割ユーティリティ(独立)

• サンプルプログラム: hybNS– 積分実施部分

– 二次・四次人工粘性

– 例題データ作成ツール:球面周囲

E1

E2

C

E1

E2

C

pFEM‐VIS

Page 23: 並列有限要素法による 三次元定常熱伝導 ...€¦ · • アプリ開発者を以下から解放 – ハイブリッド並列化・CUDA・OpenCL等のプログラミング

23

ppOpen‐MATH/VIS• ボクセル型背景格子を使用した大規模並列可視化手法〔Nakajima & Chen 2006〕に基づく

– 差分格子用バージョン公開:ppOpen‐MATH/VIS‐FDM3D

• UCD single file• プラットフォーム

– T2K,Cray– FX10– Flat MPI

• Hybrid,非構造格子:今年度実施

[Refine]AvailableMemory = 2.0 Available memory size (GB), not available in this version.MaxVoxelCount = 500 Maximum number of voxelsMaxRefineLevel = 20 Maximum number of refinement levels

pFEM‐VIS

Page 24: 並列有限要素法による 三次元定常熱伝導 ...€¦ · • アプリ開発者を以下から解放 – ハイブリッド並列化・CUDA・OpenCL等のプログラミング

24

pFEM3D + ppOpen‐MATH/VISpFEM‐VIS

コピー>$ cd <$O-TOP>>$ cp /home/ss/aics60/2014SpringSchool/pVIS.tar .>$ tar xvf pVIS.tar

FORTRANユーザー>$ cd <$O-TOP>/pVIS/F/src>$ make>$ cd ../run>$ pjsub go.sh

Cユーザー>$ cd <$O-TOP>/pVIS/C/src>$ make>$ cd ../run>$ pjsub go.sh

Page 25: 並列有限要素法による 三次元定常熱伝導 ...€¦ · • アプリ開発者を以下から解放 – ハイブリッド並列化・CUDA・OpenCL等のプログラミング

25

MakefilepFEM‐VIS

FFLAGSL = -I/home/ss/aics60/ppohVIS/includeFLDFLAGSL = -L/home/ss/aics60/ppohVIS/libLIBSL = -lfppohvisfdm3d -lppohvisfdm3d

.SUFFIXES:

.SUFFIXES: .o .c

.c.o:$(CC) -c $(CFLAGS) $(CFLAGSL) $< -o $@

TARGET = ../run/pfem3d_test

OBJS = ¥test1.o ...

all: $(TARGET)

$(TARGET): $(OBJS)$(CC) -o $(TARGET) $(CFLAGS) $(CFLAGSL) $(OBJS)

$(LDFLAGSL) $(LIBS) $(LIBSL)rm -f *.o *.mod

Page 26: 並列有限要素法による 三次元定常熱伝導 ...€¦ · • アプリ開発者を以下から解放 – ハイブリッド並列化・CUDA・OpenCL等のプログラミング

26

<$O-TOP>/pVIS/F(C)/runpFEM‐VIS

cube_20x20x20_4pe_kmetis.0cube_20x20x20_4pe_kmetis.1cube_20x20x20_4pe_kmetis.2cube_20x20x20_4pe_kmetis.3cube_20x20x20_4pe.out

go.shINPUT.DATvis.cntvis_temp.1.inp

cube_20x20x20_4pe_kmetis20001.0 1.01.0e-08

#!/bin/sh

#PJM -L "rscgrp=school"#PJM -L "node=4"#PJM --mpi "proc=4"#PJM -L "elapse=00:05:00"#PJM -j#PJM -o "cube_20x20x20_4pe.out"

mpiexec ./pfem3d_test

Page 27: 並列有限要素法による 三次元定常熱伝導 ...€¦ · • アプリ開発者を以下から解放 – ハイブリッド並列化・CUDA・OpenCL等のプログラミング

27

pFEM3D + ppOpen‐MATH/VISpFEM‐VIS

<HEADER>.*

局所分散メッシュファイル

pfem3d_test

INPUT.DAT

test.inpvis_temp.1.inp

ParaView 出力:名称固定

vis.cnt

Page 28: 並列有限要素法による 三次元定常熱伝導 ...€¦ · • アプリ開発者を以下から解放 – ハイブリッド並列化・CUDA・OpenCL等のプログラミング

28

Fortran/main (1/2)pFEM‐VIS

use solver11use pfem_utiluse ppohvis_fdm3d_util

implicit REAL*8(A-H,O-Z)type(ppohVIS_FDM3D_stControl) :: pControltype(ppohVIS_FDM3D_stResultCollection) :: pNodeResulttype(ppohVIS_FDM3D_stResultCollection) :: pElemResultcharacter(len=PPOHVIS_FDM3D_FILE_NAME_LEN) :: CtrlNamecharacter(len=PPOHVIS_FDM3D_FILE_NAME_LEN) :: VisNamecharacter(len=PPOHVIS_FDM3D_LABEL_LEN) :: ValLabelinteger(kind=4) :: iErr

CtrlName = ""CtrlName = "vis.cnt"

VisName = ""VisName = "vis"

ValLabel = ""ValLabel = "temp"

call PFEM_INIT

call ppohVIS_PFEM3D_Init(MPI_COMM_WORLD, iErr)call ppohVIS_PFEM3D_GetControl(CtrlName, pControl, iErr);call INPUT_CNTLcall INPUT_GRID

call ppohVIS_PFEM3D_SETMESHEX( && NP, N, NODE_ID, XYZ, && ICELTOT, ICELTOT_INT, ELEM_ID, ICELNOD, && NEIBPETOT, NEIBPE, IMPORT_INDEX, IMPORT_ITEM, && EXPORT_INDEX, EXPORT_ITEM, iErr)

Page 29: 並列有限要素法による 三次元定常熱伝導 ...€¦ · • アプリ開発者を以下から解放 – ハイブリッド並列化・CUDA・OpenCL等のプログラミング

29

Fortran/main (2/2)pFEM‐VIS

call MAT_ASS_MAINcall MAT_ASS_BC

call SOLVE11

call OUTPUT_UCD

call ppohVIS_PFEM3D_ConvResult(N, ValLabel, X, && pNodeResult, pElemResult, iErr)call ppohVIS_PFEM3D_Visualize(pNodeResult, pElemResult, pControl, && VisName, 1, iErr)

call ppohVIS_PFEM3D_Finalize(iErr)

call PFEM_FINALIZE

end program heat3Dp

Page 30: 並列有限要素法による 三次元定常熱伝導 ...€¦ · • アプリ開発者を以下から解放 – ハイブリッド並列化・CUDA・OpenCL等のプログラミング

30

C/main (1/2)pFEM‐VIS

#include <stdio.h>#include <stdlib.h>FILE* fp_log;#define GLOBAL_VALUE_DEFINE#include "pfem_util.h"#include "ppohVIS_FDM3D_Util.h"extern void PFEM_INIT(int,char**);extern void INPUT_CNTL();extern void INPUT_GRID();extern void MAT_CON0();extern void MAT_CON1();extern void MAT_ASS_MAIN();extern void MAT_ASS_BC();extern void SOLVE11();extern void OUTPUT_UCD();extern void PFEM_FINALIZE();int main(int argc,char* argv[]){

double START_TIME,END_TIME;struct ppohVIS_FDM3D_stControl *pControl = NULL;struct ppohVIS_FDM3D_stResultCollection *pNodeResult = NULL;

PFEM_INIT(argc,argv);

ppohVIS_PFEM3D_Init(MPI_COMM_WORLD);pControl = ppohVIS_FDM3D_GetControl("vis.cnt");

INPUT_CNTL();INPUT_GRID();

if(ppohVIS_PFEM3D_SetMeshEx(NP,N,NODE_ID,XYZ,ICELTOT,ICELTOT_INT,ELEM_ID,ICELNOD,NEIBPETOT,NEIBPE,IMPORT_INDEX,IMPORT_ITEM,EXPORT_INDEX,EXPORT_ITEM)) {

ppohVIS_FDM3D_PrintError(stderr);};

Page 31: 並列有限要素法による 三次元定常熱伝導 ...€¦ · • アプリ開発者を以下から解放 – ハイブリッド並列化・CUDA・OpenCL等のプログラミング

31

C/main (2/2)pFEM‐VIS

MAT_CON0();MAT_CON1();

MAT_ASS_MAIN();MAT_ASS_BC() ;

SOLVE11();

OUTPUT_UCD();

pNodeResult = ppohVIS_PFEM3D_ConvResult(N, "temp", X);

if(ppohVIS_PFEM3D_Visualize(pNodeResult, NULL, pControl, "vis", 1)) {ppohVIS_FDM3D_PrintError(stderr);

}

ppohVIS_PFEM3D_Finalize();

PFEM_FINALIZE() ;}

Page 32: 並列有限要素法による 三次元定常熱伝導 ...€¦ · • アプリ開発者を以下から解放 – ハイブリッド並列化・CUDA・OpenCL等のプログラミング

32

vis.cntpFEM‐VIS

[Refine] 細分化制御情報セクションAvailableMemory = 2.0 利用可能メモリ容量(GB)not in useMaxVoxelCount = 1000 Max Voxel #MaxRefineLevel = 20 Max Voxel Refinement Level[Simple] 簡素化制御情報セクションReductionRate = 0.0 表面パッチ削減率

1.52 MB8,000 elements, 10,334 nodes 

.385 MB, 813 elements, 6,504 nodes