[go: up one dir, main page]

JP6547547B2 - 粒子シミュレーションプログラム、計算機資源配分方法、および粒子シミュレーション装置 - Google Patents

粒子シミュレーションプログラム、計算機資源配分方法、および粒子シミュレーション装置 Download PDF

Info

Publication number
JP6547547B2
JP6547547B2 JP2015187666A JP2015187666A JP6547547B2 JP 6547547 B2 JP6547547 B2 JP 6547547B2 JP 2015187666 A JP2015187666 A JP 2015187666A JP 2015187666 A JP2015187666 A JP 2015187666A JP 6547547 B2 JP6547547 B2 JP 6547547B2
Authority
JP
Japan
Prior art keywords
particles
areas
region
area
processes
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015187666A
Other languages
English (en)
Other versions
JP2017062651A (ja
Inventor
正喜 風間
正喜 風間
多聞 諏訪
多聞 諏訪
圭太 小笠原
圭太 小笠原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2015187666A priority Critical patent/JP6547547B2/ja
Priority to US15/264,918 priority patent/US10970430B2/en
Publication of JP2017062651A publication Critical patent/JP2017062651A/ja
Application granted granted Critical
Publication of JP6547547B2 publication Critical patent/JP6547547B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/10Numerical modelling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

本発明は、粒子シミュレーションプログラム、粒子シミュレーションにおける計算機資源配分方法、および粒子シミュレーション装置に関する。
近年、水や空気の流れを調べる流体解析や圧縮されたゴムの振る舞いを調べる弾性体解析などを行うために、粒子法を用いたシミュレーションが利用される。
従来、粒子法を用いたシミュレーションでは、解析空間を複数の領域に分割し、分割した複数の領域の各々を複数のプロセスのいずれかに割り当てることにより、複数のプロセスによって並列に粒子の動きの計算を行う技術がある。例えば、従来、領域内に含まれる粒子の数が均等になるように領域を分割することによって粒子の動きの計算負荷が均等になるように領域を分割する技術がある。
「MPS法を用いた福島第一原子力発電所第1号機タービン建屋の津波浸水解析」,室谷浩平、塚越誠一、塩谷隆二、萩野正雄、永井英一、藤沢智光、安重晃、計算工学講演会論文集 Vol.20(2015年6月) 「ParMETISを用いたMPS陽解法の分散メモリ型並列アルゴリズムの開発」,室谷浩平、大地雅俊、藤沢智光、塚越誠一、吉村忍、Trasactions оf JSCES,Paper No.20120012 「GPUスパコンにおける動的負荷分散を用いた大規模流体構造連成シミュレーション」,都築怜理、青木尊之、計算工学講演会論文集 Vol.20(2015年6月) 「The cоsmоlоgical simulatiоn cоde GADGET−2」,Volker Springel、Montly Notices Of the Royal Astronomical Society,364,pp.1105−1134(2005)
しかしながら、従来技術では、各領域についての粒子の動きの計算負荷が均等でない場合、各プロセスの粒子の動きの計算負荷が均等にならないため、いずれかのプロセスに負荷が集中する場合がある。そのため、並列処理を効率よく行うことができないという問題点がある。例えば、従来技術では、領域内に含まれる粒子の数が均等でない場合、粒子の動きの計算負荷が均等にならない。
1つの側面では、本発明は、並列処理を効率よく行うことができる粒子シミュレーションプログラム、粒子シミュレーションにおける計算機資源配分方法、および粒子シミュレーション装置を提供することを目的とする。
本発明の一側面によれば、複数の領域を有する解析空間内の粒子の動きを前記複数の領域よりも少ない所定数のプロセスによってシミュレートする際に、前記複数の領域から、前記複数の領域の各々に含まれる粒子の数の多い順に選ばれた前記所定数の領域を、前記所定数のプロセスのうちのそれぞれ異なるプロセスに割り当て、前記複数の領域のうち、前記それぞれ異なるプロセスに割り当てられた前記所定数の領域以外の未割り当ての領域の各々に含まれる粒子の数の多い順に、前記未割り当ての領域の各々を、前記所定数のプロセスの各々に割り当て済みの前記領域に含まれる粒子の数に基づいて特定されるプロセスに順次割り当てる粒子シミュレーションプログラム、粒子シミュレーションにおける計算機資源配分方法、および粒子シミュレーション装置が提案される。
本発明の一態様によれば、並列処理を効率よく行うことができる。
図1は、本発明にかかる粒子シミュレーション装置による一動作例を示す説明図である。 図2は、粒子の影響領域と近傍粒子の例を示す説明図である。 図3は、領域分割例を示す説明図である。 図4は、袖粒子の通信例を示す説明図である。 図5は、領域の境界を超えた粒子の通信例を示す説明図である。 図6は、粒子シミュレーション装置のハードウェア構成例を示す説明図である。 図7は、粒子シミュレーション装置の機能的構成例を示すブロック図である。 図8は、領域分割例を示す説明図である。 図9は、粒子データ例を示す説明図である。 図10は、領域データ例を示す説明図である。 図11は、領域の分割例を示す説明図である。 図12は、領域と袖領域例を示す説明図である。 図13は、評価値が大きい順例を示す説明図である。 図14は、評価値が高い順番に割り当てた例を示す説明図である。 図15は、平均粒子数を超えないように割り当てる例を示す説明図である。 図16は、粒子シミュレーション装置による割り当て処理手順例を示すフローチャート(その1)である。 図17は、粒子シミュレーション装置による割り当て処理手順例を示すフローチャート(その2)である。 図18は、粒子シミュレーション装置による割り当て処理手順例を示すフローチャート(その3)である。 図19は、評価値が最小のプロセスに割り当てる例(その1)を示す説明図である。 図20は、評価値が最小のプロセスに割り当てる例(その2)を示す説明図である。 図21は、評価値が最小のプロセスに割り当てる例(その3)を示す説明図である。 図22は、粒子シミュレーション装置による割り当て処理手順例を示すフローチャートである。 図23は、プロセスと計算ノードとの関係を示す説明図である。
以下に添付図面を参照して、本発明にかかる粒子シミュレーションプログラム、粒子シミュレーションにおける計算機資源配分方法、および粒子シミュレーション装置の実施の形態を詳細に説明する。
図1は、本発明にかかる粒子シミュレーション装置による一動作例を示す説明図である。粒子シミュレーション装置100は、粒子法を用いて並列のシミュレーションを行う際に、どのように並列させるか決定するコンピュータである。粒子法は、連続体に関する方程式を数値的に解くための離散化の手法である。粒子法では計算対象物を粒子の集まりとして表す。
粒子法を用いたシミュレーションとしては、例えば、水や空気の流れを調べる流体解析や圧縮されたゴムの振る舞いを調べる弾性体解析などがある。例えば、SPH(Smoothed Particles Hydrodynamics)法やMPS(Moving Particles Semi‐implicit)法では、後述する図2に示すように、ある粒子に対する予め設定された領域内に存在する粒子からの相互作用を計算することにより、粒子の運動を解析する。SPH法やMPS法は、流体解析や弾性体解析などにおいて連続体を粒子の分布で表す方法である。
ここでの解析領域はシミュレーション空間に設けられた空間である。シミュレーション空間とは、コンピュータ上でシミュレーションされる仮想的な3次元空間である。具体的には、例えば、シミュレーション空間は、解析空間101をシミュレーションするためのCAD(Computer Aided Design)によって粒子シミュレーション装置100内に仮想的に設定された空間である。シミュレーション空間には、例えば、X軸とY軸とZ軸とを有する3次元の直交座標系が定義される。
粒子法を用いたシミュレーションでは、解析空間101を広く取りながら、解析対象の所望の解像度を満たすために多数の粒子を扱う。例えば、津波の浸水計算を行うためには、5[km]四方の領域を1[m]の解像度で扱うと、数億体の粒子を用いることとなる。
また、従来、粒子法を用いたシミュレーションでは、解析空間101を複数の領域に分割し、分割した複数の領域の各々について複数のプロセスのいずれかに割り当てることにより、複数のプロセスによって並列に計算を行う技術がある。分割した領域について並列に計算を行う手法を領域分割法とも称する。このため、従来、例えば、領域内に含まれる粒子の数が均等になるように分割することによって計算負荷が均等になるように領域を分割する技術がある。
しかしながら、従来技術では、領域間において計算負荷が均等でない場合、各プロセスの計算負荷が均等にならないため、計算時間が長くなる。例えば、解析空間101に含まれる粒子の位置の分布の形状が複雑であると、領域内に含まれる粒子の数が均等になるように分割することは困難であるため、領域間において計算負荷が均等とならない場合がある。
そこで、本実施の形態では、粒子シミュレーション装置100は、粒子数が多い順に複数の領域を、領域数より少ない数のプロセスのうちそれぞれ異なるプロセスに割り当て後、該順で未割当領域を、割当済み領域の粒子数を基にプロセスに順次割り当てる。これにより、並列計算時の負荷の均等化を図ることができる。したがって、並列処理効率の向上を図ることができる。
粒子シミュレーション装置100は、例えば、複数の領域を有する解析空間101内の粒子の動きを領域の数よりも少ない所定数のプロセスによってシミュレートする際に、所定数のプロセスに複数の領域の各々を割り当てる。領域数はndと表し、所定数はnpと表す。また、所定数はプロセス数とも称する。本実施の形態では、nd>npという関係である。図1の例では、領域数ndは、領域a1〜領域a9までの9である。
また、複数の領域の各々は、解析空間101に含まれる3次元の立体空間である。本実施の形態では、複数の領域の各々を直方体とする。後述する図2や図4で説明するように、粒子は近傍の粒子からの影響を受ける。近傍の粒子は、自粒子を含む領域の隣接領域に含まれる場合がある。そのため、粒子法を用いたシミュレーションでは、領域に含まれる粒子の動きをシミュレーションする際に、領域の隣接領域を特定する処理が行われる。直方体のように領域の形状が単純であると、領域の隣接領域の特定が容易となるため、領域間におけるデータ通信のルーチンの簡単化を図ることができる。したがって、並列処理にかかる時間の短縮化を図ることができる。
また、プロセスとは、プログラムの実行単位であり、計算ノードに実行させる処理である。プロセスに領域を割り当てるとは、領域に含まれる粒子を計算する処理が当該プロセスによって実現されることを示す。粒子法を用いたシミュレーションを行う装置が、並列計算専用に設計されたコンピュータである場合、計算ノードは、例えば、コアやプロセッサである。また、実際に粒子シミュレーションを行う装置が、コンピュータクラスターである場合、計算ノードは、各コンピュータである。コンピュータクラスターとは、複数のパーソナル・コンピュータやサーバ、スーパーコンピュータを接続することにより並列計算を実現するシステムである。
本実施の形態では、所定数のプロセスを実行する複数の計算ノードの能力は同等とする。所定数については、例えば、計算ノードの数そのものであってもよいし、計算ノードの数の倍数などであってもよい。例えば、計算ノードの数と所定数とが同一である場合、計算ノードと所定数のプロセスとは1対1で対応付けられる。例えば、2つの領域がプロセスp1に割り当てられる場合、2つの領域に含まれる粒子の動きを計算するようにプロセスp1がコーディングされる。そして、プロセスp1に対応付けられた計算ノードが、プロセスp1を実行することにより、2つの領域に含まれる粒子の動きがシミュレーションされる。計算ノードの数と所定数とが同一である例を後述する図23に示す。なお、本実施の形態では、粒子シミュレーション装置100は、所定数のプロセスに粒子数が均等になるように領域を割り当てるが、所定数の計算ノードに粒子数が均等になるように領域を割り当ててもよい。
まず、粒子シミュレーション装置100は、複数の領域から、複数の領域の各々に含まれる粒子の数の多い順に選ばれた所定数の領域を、所定数のプロセスのうちのそれぞれ異なるプロセスに割り当てる。図1では、領域に含まれる粒子の数を( )内に示す。図1における粒子の数の多い順は、領域a4、領域a7、領域a9、領域a8、領域a1、領域a5、領域a6、領域a2、領域a3の順である。粒子の数が多い順に選ばれた所定数の領域は、例えば、領域a4、領域a7、領域a9、領域a8、領域a1である。
粒子シミュレーション装置100は、例えば、最も粒子の数が多い領域a4をプロセスp5に割り当てる。粒子シミュレーション装置100は、例えば、領域a7をプロセスp4に割り当てる。粒子シミュレーション装置100は、例えば、領域a9をプロセスp3に割り当てる。そして、粒子シミュレーション装置100は、例えば、領域a8をプロセスp2に割り当てる。粒子シミュレーション装置100は、例えば、領域a1をプロセスp1に割り当てる。これにより、粒子の数が多い領域同士が同じプロセスに割り当てられないようにできる。
粒子シミュレーション装置100は、複数の領域のうち割り当て済みの所定数の領域以外の未割り当ての領域の粒子数の多い順に、未割り当ての領域の各々を、所定数のプロセスの各々に割り当て済みの領域の粒子数に基づいて特定されるプロセスに順次割り当てる。
具体的に、粒子シミュレーション装置100は、例えば、解析空間101内の総粒子数を所定数により除算して所定数のプロセスの各々がシミュレートする平均粒子数を算出する。平均粒子数は、例えば、mcとも表す。粒子シミュレーション装置100は、例えば、未割り当ての領域の粒子数の多い順に、未割り当ての領域の各々を、割り当て済みの領域の粒子数と未割り当ての領域の粒子数との合計粒子数が、平均粒子数mcを超えないプロセスに順次割り当てる。ここで、平均粒子数mcを超えないように割り当てる例については後述する実施例1を用いて詳細に説明する。
また、具体的に、粒子シミュレーション装置100は、例えば、未割り当ての領域の各々に含まれる粒子の数が多い順に、未割り当ての領域の各々を、所定数のプロセスの各々に割り当て済みの領域に含まれる粒子の数が最も少ないプロセスに順次割り当てる。割り当て済みの領域に含まれる粒子の数が最も少ないプロセスに順次割り当てる例については後述する実施例2を用いて詳細に説明する。
図1には、粒子シミュレーション装置100が、割り当て済みの領域に含まれる粒子の数が最も少ないプロセスに順次割り当てる例を示す。粒子シミュレーション装置100は、例えば、割り当て済みの領域に含まれる粒子の数が最も少ないプロセスがプロセスp1であるため、プロセスp1に領域a5を割り当てる。粒子シミュレーション装置100は、例えば、領域a5を割り当てた後、割り当て済みの領域に含まれる粒子の数が最も少ないプロセスがプロセスp2であるため、プロセスp2に領域a6を割り当てる。ここで、プロセスp1に割り当て済みの領域に含まれる粒子の数は1200である。プロセスp2に割り当て済みの領域に含まれる粒子の数は1300である。
つぎに、粒子シミュレーション装置100は、例えば、領域a6を割り当てた後、割り当て済みの領域に含まれる粒子の数が最も少ないプロセスがプロセスp3であるため、プロセスp3に領域a2を割り当てる。最後に、粒子シミュレーション装置100は、例えば、領域a2を割り当てた後、割り当てられた領域に含まれる粒子の数が最も少ないプロセスがプロセスp4であるため、プロセスp4に領域a3を割り当てる。
このように、負荷が大きいと推測される領域を先にプロセスに割り当てておき、負荷が小さい領域によって各プロセス間の残余の未割り当ての領域によってプロセス間の負荷が均等になるように割り当てる。これにより、並列計算時の負荷の均等化を図ることができ、並列処理の効率化を図ることができる。
ここで、本実施の形態の詳細な説明の前に、粒子法を用いたシミュレーションについて図2〜図5を用いて簡単に説明する。
図2は、粒子の影響領域と近傍粒子の例を示す説明図である。例えば、ある粒子iに着目すると、粒子iは、粒子iから半径h以内の近傍に存在する複数の粒子との間に相互作用がある。例えば、粒子jと粒子iとの距離は、|x−x’|であり、半径hよりも小さい。そのため、粒子jと粒子iとの間に相互作用がある。粒子について、相互作用の範囲を影響領域とも称する。相互作用の範囲を決める半径hを影響半径とも称する。ここでの相互作用とはシミュレーションにおける相互作用である。
図3は、領域分割例を示す説明図である。領域分割法では、計算対象の領域を分割し、各領域を各計算ノードに割り当てることにより並列に計算を実行する技術である。図3には、各領域が立方体となるように分割した例を示す。上述したように、例えば、計算負荷が均等になるように領域を分割する技術では、解析空間101に含まれる粒子の位置の分布の形状が複雑であると、図3のように直方体に分割することは困難である。
図4は、袖粒子の通信例を示す説明図である。粒子については、図2に示したように影響範囲にある粒子からの影響を受ける。ここで、ある粒子について影響範囲にある粒子を袖粒子とも称する。袖粒子は、袖粒子を含む領域の隣接領域に含まれる粒子に対して影響を及ぼすことになる。そのため、粒子法を用いたシミュレーションでは、領域に含まれる粒子についての袖粒子を特定する。そして、粒子法を用いたシミュレーションでは、特定された袖粒子が当該領域の隣接領域の場合、領域が割り当てられたプロセスと、隣接領域が割り当てられたプロセスと、の間のプロセス間通信により、領域が割り当てられたプロセスは袖領域についての粒子データを取得する。粒子データは、例えば、粒子について、位置、質量、体積などの情報が含まれる。
図5は、領域の境界を超えた粒子の通信例を示す説明図である。粒子は領域内を移動する。例えば、時刻nにおいて、粒子iは、プロセスp0に割り当てられた領域に含まれる。そして、例えば、時刻n+1において、粒子iは、プロセスp1に割り当てられた領域に含まれる。
このように、粒子法を用いたシミュレーションでは、実際の時間経過と同様に所定単位ごとに時刻を進めて行う。このため、粒子iのように、粒子が移動することにより異なる領域に移動した場合、シミュレーションでは、プロセス間通信などによって粒子データを通信し、粒子を移動させる。
つぎに、本実施の形態にかかる粒子シミュレーション装置100の詳細な説明を行う。
(粒子シミュレーション装置100のハードウェア構成例)
図6は、粒子シミュレーション装置のハードウェア構成例を示す説明図である。粒子シミュレーション装置100は、CPU(Central Processing Unit)601と、ROM(Read Only Memory)602と、RAM(Random Access Memory)603と、を有する。粒子シミュレーション装置100は、ディスクドライブ604と、ディスク605と、を有する。粒子シミュレーション装置100は、I/F(Inter/Face)606と、キーボード607と、マウス608と、ディスプレイ609と、を有する。また、CPU601と、ROM602と、RAM603と、ディスクドライブ604と、I/F606と、キーボード607と、マウス608と、ディスプレイ609とは、バス600によってそれぞれ接続される。
ここで、CPU601は、粒子シミュレーション装置100の全体の制御を司る。ROM602は、ブートプログラムなどのプログラムを記憶する。RAM603は、CPU601のワークエリアとして使用される。ディスクドライブ604は、CPU601の制御にしたがってディスク605に対するデータのリード/ライトを制御する。ディスク605は、ディスクドライブ604の制御で書き込まれたデータを記憶する。ディスク605としては、磁気ディスク、光ディスクなどが挙げられる。
I/F606は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク610に接続され、このネットワーク610を介して他の装置に接続される。そして、I/F606は、ネットワーク610と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F606には、例えばモデムやLANアダプタなどを採用することができる。
キーボード607やマウス608は、利用者の操作により、各種データの入力を行うインターフェースである。ディスプレイ609は、CPU601の指示により、データを出力するインターフェースである。
また、図示を省略するが、粒子シミュレーション装置100には、カメラから画像や動画を取り込む入力装置やマイクから音声を取り込む入力装置が設けられていてもよい。また、図示を省略するが、粒子シミュレーション装置100には、プリンタなどの出力装置が設けられていてもよい。
また、本実施の形態では、粒子シミュレーション装置100のハードウェア構成として、パーソナル・コンピュータを例に挙げているが、これに限らず、サーバなどであってもよい。粒子シミュレーション装置100がサーバである場合、粒子シミュレーション装置100と利用者の操作可能な装置やディスプレイ609などがネットワーク610を介して接続されてもよい。
(粒子シミュレーション装置100の機能的構成例)
図7は、粒子シミュレーション装置の機能的構成例を示すブロック図である。粒子シミュレーション装置100は、分割部701と、見積もり部702と、算出部703と、第1割り当て部704と、第2割り当て部705と、を有する。分割部701から第1割り当て部704までの制御部の処理は、例えば、図6に示すCPU601がアクセス可能なROM602、RAM603、ディスク605などの記憶装置に記憶されたプログラムにコーディングされている。そして、CPU601が記憶装置から該プログラムを読み出して、プログラムにコーディングされている処理を実行する。これにより、制御部の処理が実現される。また、制御部の処理結果は、例えば、RAM603、ROM602、ディスク605などの記憶装置に記憶される。
上述したように、本実施の形態では、粒子シミュレーション装置100は、複数の領域を有する解析空間101内の粒子の動きを所定数のプロセスによってシミュレートを行う。所定数については、例えば、上述したように、計算ノードの数であってもよいし、計算ノードの数の倍数などであってもよいし、解析者によって決定された数であってもよい。上述したように、所定数は、例えば、npと表し、プロセス数とも称する。
分割部701は、予め定められたタイミングによって解析空間101を複数の領域に分割する。分割部701は、例えば、予め定められた回数程度のシミュレーションが終了する都度、解析空間101を複数の領域に分割する。複数の領域の各々は、例えば、直方体である。複数の領域のうち隣り合う領域の面同士は、共通である。これにより、隣接領域を特定する処理に時間がかからないため、粒子の移動や袖領域などによる領域間のデータ通信が簡単になり、通信時間の短縮化を図ることができる。
図8は、領域分割例を示す説明図である。図8の例では、解析空間101に含まれる一部の領域をX軸とY軸との2次元によって示す。図8の例では、解析空間101は、例えば、Area[1][1]と、Area[1][2]と、Area[2][1]と、Area[2][2]と、の4つの領域に分割される。領域は、例えば、境界線によって定義される。
Xb[1]、Xb[2]、Xb[3]は、後述する図10に示すようにX軸方向における各境界線の位置である。Xb[1]、Xb[2]、Xb[3]は、例えば、座標値の小さい順である。Yb[1]、Yb[2]、Yb[3]は、後述する図10に示すようにY軸方向における各境界線の位置である。Yb[1]、Yb[2]、Yb[3]は、例えば、座標値の小さい順である。また、8の例では、X軸とY軸とを用いて説明するが、Z軸についても境界線の位置が設定される。
そして、領域の境界線の位置と、粒子の位置と、に基づいて、領域に含まれる粒子が特定される。図9には粒子データを示し、図10には境界線データを示す。
図9は、粒子データ例を示す説明図である。粒子データ900は、例えば、粒子を表す情報である。粒子データ900は、例えば、粒子番号、位置情報のフィールドを有する。各フィールドに情報が設定されることによりレコードとして記憶される。
粒子番号のフィールドには、粒子を識別する識別情報が設定される。ここでは、粒子にそれぞれ通し番号を付すことによって粒子の各々が識別される。位置情報のフィールドには、粒子の位置を示すX,Y,Zの座標値が設定される。粒子は、上述したように移動するため、位置情報については、粒子の移動に伴い、更新される。また、図示省略するが、粒子データ900には、質量、体積などの情報が含まれていてもよい。
図10は、領域データ例を示す説明図である。領域データ1000は、領域を区別するための境界線を示す情報である。境界線データは、例えば、X軸方向の境界線の数、境界線のX座標値、Y軸方向の境界線の数、境界線のY座標値、Z軸方向の境界線の数、境界線のZ座標値のフィールドを有する。境界線データは、領域分割が行われる際にあらたに生成される。
X軸方向の境界線の数のフィールドには、X軸方向に設けられる境界線の数が設定される。境界線のX座標値のフィールドには、X軸方向に設けられる境界線のX座標値が設定される。
X軸方向に設けられる境界線の数は、例えば、xmである。X軸方向に設けられる境界線のX座標値は、例えば、Xb[1]〜Xb[xm]である。Y軸方向に設けられる境界線の数は、例えば、ymである。Y軸方向に設けられる境界線のY座標値は、例えば、Yb[1]〜Yb[ym]である。Y軸方向に設けられる境界線の数は、例えば、zmである。Z軸方向に設けられる境界線のZ座標値は、例えば、Zb[1]〜Zb[zm]である。ここで、境界線の座標値は、例えば、各軸の方向において座標値が小さい順に並べられてある。
領域データ1000によって領域は、特定可能である。領域については、領域の数が(xm−1)×(ym−1)×(zm−1)によって算出できる。例えば、軸ごとの3つのインデックスによって領域を識別する領域番号が規定されてもよい。
例えば、領域(о,p,q)のように規定される。ここで、о,p,qはそれぞれ「1≦о<xm」、「1≦p<ym」、「1≦q<zm」である。例えば、領域(о,p,q)に含まれる粒子は以下の(1)〜(3)の条件をすべて満たす粒子である。
(1)Xb[о]≦粒子のX座標値<Xb[о+1]
(2)Yb[p]≦粒子のY座標値<Yb[p+1]
(3)Zb[q]≦粒子のZ座標値<Zb[q+1]
例えば、粒子pが領域(о,p,q)に含まれるか否かについては、上述の条件を満たすか否かによって判別できる。ここで、上述したように、領域数nd<所定数npである。
図11は、領域の分割例を示す説明図である。図11には、領域a1〜a9までの領域数ndが9の例を示す。太線は、領域の境界である。ハッチが設けられている箇所は、粒子の密な部分である。
また、領域をシミュレーションする場合における計算量を示す評価値として、領域に含まれる粒子の数を用いてもよいし、領域に含まれる粒子の数と、当該領域の袖領域に含まれる粒子の数と、の合計粒子数を用いてもよい。なお、上述した図1の例では、領域に含まれる粒子の数を評価値として用いる。以下の説明では、評価値として、領域に含まれる粒子の数と、当該領域の袖領域に含まれる粒子の数と、の合計粒子数を用いる。
見積もり部702は、複数の領域の各々について、領域に含まれる粒子の数に基づいて、解析空間101のうちの領域から所定距離以内の領域に含まれる粒子の数を見積もる。粒子の数を見積もるとは、解析空間101のうちの領域から所定距離以内の領域に含まれる粒子の数の予測値を算出することである。
より具体的に、見積もり部702は、例えば、領域の各々について、領域に含まれる粒子の数を特定する。上述したように、見積もり部702は、粒子データ900と領域データ1000とに基づいて、領域の各々について、上記の(1)〜(3)の条件を満たす粒子を抽出する。そして、見積もり部702は、領域の各々について、抽出した粒子の数を特定する。
つぎに、見積もり部702は、例えば、袖領域に含まれる粒子の数の予測値を、領域に含まれる粒子の数と、袖領域の体積と、に基づいて算出する。
図12は、領域と袖領域例を示す説明図である。例えば、x方向の長さがLxであり、y方向の長さがLyである領域apの場合に、影響半径がhであると、見積もり部702は、袖領域aspの大きさを「2(Lx+Ly+2h)×h」によって算出する。
そして、対象の領域の大きさが(Lx×Ly)であり、領域に含まれる粒子の数がnxであると、見積もり部702は、袖領域に含まれる粒子の数の予測値を「(2(Lx+Ly+2h)×h/(Lx×Ly))×nx」によって算出する。
そして、見積もり部702は、複数の領域の各々について、領域に含まれる粒子の数と、算出した袖領域に含まれる粒子の数の予測値とに基づいて、計算負荷を示す評価値を算出する。ここでの計算負荷は、領域に含まれる粒子の動きをシミュレートする場合における計算負荷と、領域に含まれる粒子と所定距離以内にある領域に含まれる粒子との通信による通信負荷と、を示す。ここで、領域から所定距離以内にある周辺の領域を袖領域とも称する。袖領域の例は、図12を用いて後述する。所定距離は、例えば、図2に示した相互作用の範囲を決める影響半径とする。上述したように、領域に含まれる粒子は、影響半径以内にある袖粒子による影響を受けるため、領域に含まれる粒子の動きをシミュレーションする際には、袖領域についての粒子データ900も使用される。このため、袖領域に含まれる粒子の数を領域に含まれる粒子の数に基づいて見積もることによって、通信負荷を含めた評価値を算出することができ、各プロセスの粒子の動きの計算負荷の均等化を図ることができる。
見積もり部702は、領域に含まれる粒子の数と、a×袖領域に含まれる粒子の数と、の合計値を、領域についての評価値として算出する。aは、1粒子あたりの通信コストと計算コストの比率を表す実数である。より具体的に、見積もり部702は、評価値を以下式(1)によって算出可能である。
評価値=nx+a×2(Lx+Ly+2h)×h/(Lx×Ly)×nx・・・式(1)
つぎに、第1割り当て部704は、例えば、複数の領域から、複数の領域の各々に含まれる粒子の数の多い順に選ばれた所定数npの領域を、所定数npのプロセスのうちのそれぞれ異なるプロセスに割り当てる。
また、上述したように、評価値として、領域に含まれる粒子の数と、袖領域に含まれる粒子の数との合計粒子数を用いる場合について説明する。第1割り当て部704は、例えば、複数の領域から、複数の領域の各々について算出した合計粒子数が多い順に選ばれた所定数npの領域を、所定数npのプロセスのうちのそれぞれ異なるプロセスに割り当てる。
図13は、評価値が大きい順例を示す説明図である。図13では、図11に示した領域a1〜a9までを領域について算出された評価値が大きい順に並べた例を示す。例えば、評価値が大きい順は、領域a6、領域a3、領域a9、領域a5、領域a8、領域a2、領域a7、領域a4、領域a1の順である。
第1割り当て部704は、例えば、複数の領域のうち評価値が大きい順に選ばれた所定数npの領域を、所定数npのプロセスのうちのそれぞれ異なるプロセスに割り当てる。
図14は、評価値が高い順に割り当てた例を示す説明図である。ここでは、プロセス数である所定数npが6である場合を例に挙げる。第1割り当て部704は、例えば、評価値が高い順に、6つの領域を6つのプロセスの各々に割り当てる。第1割り当て部704は、例えば、領域a6、領域a3、領域a9、領域a5、領域a8、領域a2の順に、所定数npのプロセスのうちプロセス番号の小さいプロセスに順次割り当てる。
例えば、領域a6はプロセスp1に割り当てられ、領域a3はプロセスp2に割り当てられる。また、例えば、領域a7と領域a4と領域a1とが未割り当ての領域である。
つぎに、第2割り当て部705は、例えば、未割り当ての領域の各々に含まれる粒子の数の多い順に、未割り当ての領域の各々を、所定数npのプロセスの各々に割り当て済みの領域に含まれる粒子の数に基づいて特定されるプロセスに順次割り当てる。未割り当ての領域は、複数の領域のうち、第1割り当て部704によってそれぞれ異なるプロセスに割り当てられた所定数npの領域以外の領域である。第2割り当て部705による割り当て例については、実施例1と実施例2とに区別して説明する。
(実施例1)
実施例1では、粒子シミュレーション装置100は、割り当て済みの領域に含まれる粒子数と未割り当ての領域に含まれる粒子数との合計粒子数が、平均粒子数mcを超えないように未割り当ての領域をプロセスに割り当てる。これにより、粒子数が均等になるようにプロセスに領域を割り当てることができる。したがって、並列演算の効率の向上を図ることができる。並列演算の効率が向上するとは、粒子数に対する処理時間が向上することを示す。例えば、プロセスに割り当てられる粒子数が均等になれば、各プロセスの処理時間が均等になるため、処理時間の短縮を図ることができる。
算出部703は、例えば、解析空間101内の総粒子数を所定数npにより除算して所定数npのプロセスの各々がシミュレートする平均粒子数mcを算出する。所定数は、上述したようにプロセス数である。ここでは、複数の領域を有する解析空間101内の粒子の動きが所定数npのプロセスによってシミュレートされる。所定数npについては、例えば、上述したように、所定数npのプロセスを実行する計算ノードの数であってもよいし、計算ノードの数の倍数であってもよい。
第2割り当て部705は、例えば、算出された平均粒子数mcに基づいて、未割り当ての領域の各々について所定数npのプロセスのうちのいずれかのプロセスに割り当てる。
第2割り当て部705は、算出された平均粒子数mcに基づいて、未割り当ての領域の各々について、所定数npのプロセスのうちいずれかのプロセスに、領域を割り当てる。具体的に、第2割り当て部705は、例えば、プロセスに、未割り当ての領域を割り当てた場合における評価値の合計値が、平均粒子数を超えるか否かを判定する。
第2割り当て部705は、例えば、平均粒子数mcを超えると判定された場合に、プロセスに未割り当ての領域を割り当てない。一方、第2割り当て部705は、例えば、平均粒子数mcを超えないと判定された場合に、プロセスに未割り当ての領域を割り当てる。
図15は、平均粒子数を超えないように割り当てる例を示す説明図である。ここでは、第2割り当て部705は、例えば、プロセス番号の大きい順に割り当て先の候補プロセスとする。これにより、第1割り当て部704によって割り当てられた領域についての評価値が小さい順に割り当て先の候補プロセスとすることができる。
具体的に、第2割り当て部705は、例えば、プロセスp6に割り当て済みの領域a2についての評価値と、領域a7についての評価値と、の合計評価値が平均粒子数mcを超えないため、領域a7をプロセスp6に割り当てる。
第2割り当て部705は、例えば、プロセスp6に割り当て済みの領域a2および領域a7についての評価値と、領域a4についての評価値と、の合計評価値が平均粒子数を超えるため、領域a4をプロセスp6に割り当てない。つぎに、第2割り当て部705は、例えば、プロセスp5に割り当て済みの領域a8についての評価値と、領域a4についての評価値と、の合計評価値が平均粒子数mcを超えないため、領域a4をプロセスp5に割り当てる。
つぎに、第2割り当て部705は、例えば、プロセスp5に割り当て済みの領域a8と領域a4についての評価値と、領域a1についての評価値と、の合計評価値が平均粒子数mcを超えないため、領域a1をプロセスp5に割り当てる。
これにより、平均粒子数mcに基づいて、プロセスに割り当てられる領域についての評価値の均等化を図ることができる。割り当てに要する計算量は、「所定数np+(2×(nd−np)×(1プロセスの持つ平均の領域数))」である。所定数npは、第1割り当て部704による1回目の割り当てについての計算量の指標値である。(2×(nd−np)×(1プロセスの持つ平均の領域数))は、第2割り当て部705による2回目以降の割り当てについての計算量の指標値である。1プロセスの持つ平均の領域数は、領域の数nd/所定数npである。
また、図15の例では、割り当て処理の簡単化のために、プロセスp5を、領域a1の割り当て対象の候補プロセスとして平均粒子数mcを超えるか否かの判定を行っているが、これに限らない。第2割り当て部705は、例えば、割り当て先の候補プロセスをプロセス番号の大きいプロセスp6にしてもよい。そして、第2割り当て部705は、例えば、プロセスp6に割り当て済みの領域a2および領域a7についての評価値と、領域a1についての評価値と、の合計評価値が平均粒子数mcを超えるか否かを判定してもよい。そして、第2割り当て部705は、例えば、合計評価値が平均粒子数mcを超えない場合、領域a1をプロセスp6に割り当てる。第2割り当て部705は、例えば、合計評価値が平均粒子数mcを超える場合、プロセスp5に割り当て済みの領域a8と領域a4についての評価値と、領域a1についての評価値と、の合計評価値が平均粒子数mcを超えるか否かを判定してもよい。
(粒子シミュレーション装置100による割り当て処理手順例)
図16〜図18は、粒子シミュレーション装置による割り当て処理手順例を示すフローチャートである。粒子シミュレーション装置100は、領域ごとに領域に含まれる粒子の数を特定する(ステップS1601)。粒子シミュレーション装置100は、領域ごとに、解析空間101のうち領域から所定距離以内にある領域に含まれる粒子の数を、領域のサイズと所定距離以内にある領域のサイズとの比率と、領域に含まれる粒子の数とに基づいて見積もる(ステップS1602)。
そして、粒子シミュレーション装置100は、領域ごとに、領域に含まれる粒子の数と、見積もった所定距離以内にある領域に含まれる粒子の数と、に基づいて負荷の評価値を算出する(ステップS1603)。粒子シミュレーション装置100は、全領域を評価値順にソートする(ステップS1604)。
つぎに、粒子シミュレーション装置100は、総粒子数をプロセス数で除算して平均粒子数mcを算出する(ステップS1605)。つづいて、粒子シミュレーション装置100は、評価値が大きい順に選ばれる所定数の領域をプロセス番号が小さい順にプロセスに順次割り当てる(ステップS1606)。
そして、粒子シミュレーション装置100は、i=所定数npとする(ステップS1701)。つぎに、粒子シミュレーション装置100は、未割り当ての領域があるか否かを判断する(ステップS1702)。未割り当ての領域がない場合(ステップS1702:Nо)、粒子シミュレーション装置100は、一連の処理を終了する。未割り当ての領域がある場合(ステップS1702:Yes)、粒子シミュレーション装置100は、割り当て対象の領域を決定する(ステップS1703)。
つぎに、粒子シミュレーション装置100は、プロセスpiに割り当て済みの全領域についての評価値と、領域jについての評価値との合計評価値mijを算出する(ステップS1704)。そして、粒子シミュレーション装置100は、合計評価値mij>平均粒子数mcであるかを判断する(ステップS1705)。合計評価値mij>平均粒子数mcでないと判断された場合(ステップS1705:No)、粒子シミュレーション装置100は、領域jをプロセスpiに割り当て(ステップS1706)、ステップS1702へ戻る。
合計評価値mij>平均粒子数mcであると判断された場合(ステップS1705:Yes)、粒子シミュレーション装置100は、iが1より大きいか否かを判断する(ステップS1707)。iが1より大きいと判断された場合(ステップS1707:Yes)、粒子シミュレーション装置100は、i=i−1とし(ステップS1708)、ステップS1702へ戻る。
iが1より大きくないと判断された場合(ステップS1707:No)、粒子シミュレーション装置100は、i=所定数npとする(ステップS1801)。そして、粒子シミュレーション装置100は、割り当て対象の領域jを決定する(ステップS1802)。そして、粒子シミュレーション装置100は、プロセスpiに領域jを割り当てる(ステップS1803)。つぎに、粒子シミュレーション装置100は、プロセスpiに割り当て済みの全領域についての評価値の合計評価値mij_2を算出する(ステップS1804)。
そして、粒子シミュレーション装置100は、未割り当ての領域があるか否かを判断する(ステップS1805)。未割り当ての領域がないと判断された場合(ステップS1805:No)、粒子シミュレーション装置100は、一連の処理を終了する。未割り当ての領域があると判断された場合(ステップS1805:Yes)、粒子シミュレーション装置100は、合計評価値mij_2>平均粒子数mcであるか否かを判断する(ステップS1806)。
合計評価値mij_2>平均粒子数mcでないと判断された場合(ステップS1806:No)、粒子シミュレーション装置100は、ステップS1802へ戻る。合計評価値mij_2>平均粒子数mcであると判断された場合(ステップS1806:Yes)、粒子シミュレーション装置100は、iは1より大きいか否かを判断する(ステップS1807)。iは1より大きいと判断された場合(ステップS1807:Yes)、粒子シミュレーション装置100は、i=i−1とし(ステップS1809)、ステップS1802へ戻る。
iは1より大きくないと判断された場合(ステップS1807:No)、粒子シミュレーション装置100は、未割り当ての領域をランダムに割り当て(ステップS1808)、一連の処理を終了する。
(実施例2)
実施例2では、粒子シミュレーション装置100は、プロセスに領域を順に割り当て、プロセスにすでに割り当てられた領域に含まれる粒子の数が小さい順に未割り当ての領域を割り当てる。これにより、粒子数が均等になるようにプロセスに領域を割り当てることができる。したがって、並列演算の効率の向上を図ることができる。ここで、実施例2では、実施例1において説明した同様の構成や機能については同一の符号を付し、詳細な説明を省略する。また、実施例2では、見積もり部702による処理は実施例1と同様であり、算出部703による処理は行われない。
まず、第2割り当て部705は、例えば、領域についての評価値に応じた順番に基づいて、一つのプロセスに複数の領域を割り当てないように、所定数npのプロセスのいずれかのプロセスに、領域を割り当てる。ここでは、実施例1と同様に、第2割り当て部705は、例えば、評価値の大きい領域順に、プロセス番号順に割り当てる。
図19は、評価値が最小のプロセスに割り当てる例(その1)を示す説明図である。第2割り当て部705は、例えば、未割り当ての領域のうち評価値が最も大きい領域a7を、割り当て済みの領域についての評価値が最も小さいプロセスp6に割り当てる。つぎに、第2割り当て部705は、例えば、プロセスp1〜プロセスp6を、割り当て済みの領域についての評価値が小さい順にソートする。図19の例では、プロセスp5が、割り当てられた領域についての評価値が最も小さい。
図20は、評価値が最小のプロセスに割り当てる例(その2)を示す説明図である。第2割り当て部705は、例えば、未割り当ての領域のうち評価値が最も大きい領域a4を、割り当て済みの領域についての評価値が最も小さいプロセスp5に割り当てる。そして、第2割り当て部705は、例えば、プロセスp1〜プロセスp6を、割り当て済みの領域についての評価値が小さい順にソートする。
図21は、評価値が最小のプロセスに割り当てる例(その3)を示す説明図である。第2割り当て部705は、例えば、未割り当ての領域a1を、割り当て済みの領域についての評価値が最も小さいプロセスp5に割り当てる。
また、実施例2において割り当てに要する計算量は、「所定数np+2回目以降の割り当てについての(2×(nd−np)×lоg(np)×(1プロセスの持つ平均の領域数))」である。所定数npは、第1割り当て部704による1回目の割り当てについての計算量の指標値である。(2×(nd−np)×lоg(np)×(1プロセスの持つ平均の領域数))は、第2割り当て部705による2回目以降の割り当てについての計算量の指標値である。
(粒子シミュレーション装置100による割り当て処理手順例)
図22は、粒子シミュレーション装置による割り当て処理手順例を示すフローチャートである。粒子シミュレーション装置100は、領域ごとに領域に含まれる粒子の数を特定する(ステップS2201)。粒子シミュレーション装置100は、領域ごとに、解析空間101のうち領域から所定距離以内にある領域に含まれる粒子の数を、領域のサイズと所定距離以内にある領域のサイズとの比率と、領域に含まれる粒子の数とに基づいて見積もる(ステップS2202)。
そして、粒子シミュレーション装置100は、領域ごとに、領域に含まれる粒子の数と、見積もった所定距離以内にある領域に含まれる粒子の数と、に基づいて負荷の評価値を算出する(ステップS2203)。粒子シミュレーション装置100は、全領域を評価値順にソートする(ステップS2204)。そして、粒子シミュレーション装置100は、評価値が大きい順に領域をプロセス番号が小さいプロセス順に順次割り当てる(ステップS2205)。
粒子シミュレーション装置100は、未割り当ての領域があるか否かを判断する(ステップS2206)。未割り当ての領域があると判断された場合(ステップS2206:Yes)、粒子シミュレーション装置100は、全プロセスを割り当てられた領域の評価値順にソートする(ステップS2207)。粒子シミュレーション装置100は、評価値が大きい順に選ばれた所定数npの領域を、プロセス番号が小さい順にプロセスに割り当て(ステップS2208)、ステップS2206へ戻る。
ステップS2206において、未割り当ての領域がないと判断された場合(ステップS2206:No)、粒子シミュレーション装置100は、一連の処理を終了する。
図23は、プロセスと計算ノードとの関係を示す説明図である。例えば、計算ノードn1〜n5は、1台のコンピュータに含まれる各プロセッサである。例えば、プロセスp1〜プロセスp5には粒子の数が均等になるように各領域が割り当てられる。例えば、プロセスp1には、領域a1と領域a5とが割り当てられる。そして、本実施の形態では、上述したように、計算ノードとプロセスとは対応付けられる。例えば、計算ノードn1〜n5は、それぞれプロセスp1〜p5を実行する。
このため、例えば、計算ノードn1は、プロセスp1を実行するため、プロセスp1に割り当てられた領域a1と領域a5に含まれる粒子の動きをシミュレートすることになる。
以上説明したように、粒子シミュレーション装置100は、粒子数が多い順に複数の領域を、領域数より少ない数のプロセスのうちそれぞれ異なるプロセスに割り当て後、該順で未割当領域を、割当済み領域の粒子数に基づき特定されたプロセスに順次割り当てる。このように、負荷が大きいと推測される領域を先にプロセスに割り当てておき、負荷が小さい残余の未割り当ての領域をプロセス間の負荷が均等化するように割り当てる。したがって、並列処理の効率化を図ることができる。
また、粒子シミュレーション装置100は、粒子数が多い順に、未割り当ての領域の各々を、割り当て済みの領域に含まれる粒子の数と未割り当ての領域に含まれる粒子の数との合計粒子数が、平均粒子数を超えないプロセスに順次割り当てる。このように、各プロセスに割り当てられる領域に含まれる粒子の数が平均粒子数を超えないように、各プロセスに割り当てられる領域に含まれる粒子の数の均等化を図ることができる。したがって、並列処理の効率化を図ることができる。
また、粒子シミュレーション装置100は、粒子数が多い順に、所定数のプロセスの各々に割り当て済みの領域に含まれる粒子の数が最も少ないプロセスに順次割り当てる。このように、割り当て済みの領域に含まれる粒子の数が最も少ないプロセスに割り当たられるため、各プロセスに割り当てられる領域に含まれる粒子の数の均等化を図ることができる。したがって、並列処理の効率化を図ることができる。
また、粒子シミュレーション装置100は、複数の領域の各々について、袖領域に含まれる粒子の数を見積もり、見積もった袖領域に含まれる粒子の数と、領域に含まれる粒子の数と、に基づいて、領域についての計算負荷および通信負荷を示す評価値を算出する。より具体的に、粒子シミュレーション装置100は、複数の領域の各々について、領域のサイズと袖領域のサイズとの比率と、領域に含まれる粒子の数と、に基づいて、袖領域に含まれる粒子の数を見積もる。このように、通信負荷を考慮した評価値によって領域を割り当てることができるため、各プロセスの粒子の動きの計算負荷の均等化を図ることができる。したがって、並列処理の効率化を図ることができる。
また、複数の領域の各々は、直方体である。直方体のように領域の形状が単純であると、領域間におけるデータ通信のルーチンの簡単化を図ることができる。例えば、領域が直方体であれば、領域の隣接領域の特定も容易であり、並列処理にかかる時間の短縮化を図ることができる。
また、本実施の形態では、複数のプロセスを実行する複数の計算ノードの処理能力については同等であるとする。そして、計算ノードとは、例えば、マルチコアプロセッサに含まれる各コアであってもよいし、プロセッサであってもよい。また、計算ノードの処理能力が異なる場合であっても、複数のプロセスに割り当てられた計算負荷が同等であれば、計算ノードの能力に基づき割り当てるプロセスの数を決定すればよいため、プロセスを計算ノードに割り当てることの容易化を図ることができる。
なお、本実施の形態で説明した粒子シミュレーションにおける計算機資源配分方法は、予め用意された粒子シミュレーションプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本粒子シミュレーションプログラムは、磁気ディスク、光ディスク、USB(Universal Serial Bus)フラッシュメモリなどのコンピュータで読み取り可能な記録媒体に記録される。そして、本粒子シミュレーションプログラムは、コンピュータによって記録媒体から読み出されることによって実行される。また、粒子シミュレーションプログラムは、インターネット等のネットワークを介して配布してもよい。なお、本実施の形態では、割り当て対象の領域を粒子の数が多い順としたが、これに限らず、粒子の数が小さい順に処理をさせてもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)コンピュータに、
複数の領域を有する解析空間内の粒子の動きを前記複数の領域よりも少ない所定数のプロセスによってシミュレートする際に、
前記複数の領域から、前記複数の領域の各々に含まれる粒子の数の多い順に選ばれた前記所定数の領域を、前記所定数のプロセスのうちのそれぞれ異なるプロセスに割り当て、
前記複数の領域のうち、前記それぞれ異なるプロセスに割り当てられた前記所定数の領域以外の未割り当ての領域の各々に含まれる粒子の数の多い順に、前記未割り当ての領域の各々を、前記所定数のプロセスの各々に割り当て済みの前記領域に含まれる粒子の数に基づいて特定されるプロセスに順次割り当てる、
処理を実行させることを特徴とする粒子シミュレーションプログラム。
(付記2)前記コンピュータに、
前記解析空間内の総粒子数を前記所定数により除算して前記所定数のプロセスの各々がシミュレートする平均粒子数を算出する処理を実行させ、
前記特定されるプロセスに順次割り当てる処理は、
前記未割り当ての領域の各々に含まれる粒子の数の多い順に、前記未割り当ての領域の各々を、前記所定数のプロセスのうち、割り当て済みの前記領域に含まれる粒子の数と前記未割り当ての領域に含まれる粒子の数との合計粒子数が、算出した前記平均粒子数を超えないプロセスに順次割り当てる、
ことを特徴とする付記1に記載の粒子シミュレーションプログラム。
(付記3)前記特定されるプロセスに順次割り当てる処理は、
前記未割り当ての領域の各々に含まれる粒子の数が多い順に、前記未割り当ての領域の各々を、前記所定数のプロセスの各々に割り当て済みの前記領域に含まれる粒子の数が最も少ないプロセスに順次割り当てる、
ことを特徴とする付記1に記載の粒子シミュレーションプログラム。
(付記4)前記コンピュータに、
前記複数の領域の各々について、前記領域に含まれる粒子の数に基づいて、前記解析空間のうちの前記領域から所定距離以内の領域に含まれる粒子の数を見積もり、
前記複数の領域の各々について、前記領域に含まれる粒子の数と、見積もった前記粒子の数と、に基づいて、前記領域に含まれる粒子の動きをシミュレートする場合における計算負荷と、前記領域に含まれる粒子と、前記所定距離以内にある領域に含まれる粒子との通信負荷と、を示す評価値を算出する、処理を実行させ、
前記それぞれ異なるプロセスに割り当てる処理は、
前記複数の領域から、前記複数の領域の各々について算出した前記評価値が大きい順に選ばれた前記所定数の領域を、前記所定数のプロセスのうちのそれぞれ異なるプロセスに割り当て、
前記特定されるプロセスに順次割り当てる処理は、
前記複数の領域のうち、前記それぞれ異なるプロセスに割り当てられた前記所定数の領域以外の未割り当ての領域の各々について算出した前記評価値が大きい順に、前記未割り当ての領域の各々を、前記所定数のプロセスのうち割り当て済みの前記領域について算出した前記評価値に基づいて特定されるプロセスに順次割り当てる、
ことを特徴とする付記1〜3のいずれか一つに記載の粒子シミュレーションプログラム。
(付記5)前記所定距離以内の領域に含まれる粒子の数を見積もる処理では、
前記複数の領域の各々について、前記領域のサイズと前記所定距離以内の領域のサイズとの比率と、前記領域に含まれる粒子の数と、に基づいて、前記所定距離以内の領域に含まれる粒子の数を見積もる、
ことを特徴とする付記4に記載の粒子シミュレーションプログラム。
(付記6)前記複数の領域の各々は、直方体であることを特徴とする付記1〜4のいずれか一つに記載の粒子シミュレーションプログラム。
(付記7)コンピュータが、
複数の領域を有する解析空間内の粒子の動きを前記複数の領域よりも少ない所定数のプロセスによってシミュレートする際に、
前記複数の領域から、前記複数の領域の各々に含まれる粒子の数の多い順に選ばれた前記所定数の領域を、前記所定数のプロセスのうちのそれぞれ異なるプロセスに割り当て、
前記複数の領域のうち、前記それぞれ異なるプロセスに割り当てられた前記所定数の領域以外の未割り当ての領域の各々に含まれる粒子の数の多い順に、前記未割り当ての領域の各々を、前記所定数のプロセスの各々に割り当て済みの前記領域に含まれる粒子の数に基づいて特定されるプロセスに順次割り当てる、
処理を実行することを特徴とする粒子シミュレーションにおける計算機資源配分方法。
(付記8)複数の領域を有する解析空間内の粒子の動きを前記複数の領域よりも少ない所定数のプロセスによってシミュレートする際に、前記複数の領域から、前記複数の領域の各々に含まれる粒子の数の多い順に選ばれた前記所定数の領域を、前記所定数のプロセスのうちのそれぞれ異なるプロセスに割り当て、前記複数の領域のうち、前記それぞれ異なるプロセスに割り当てられた前記所定数の領域以外の未割り当ての領域の各々に含まれる粒子の数の多い順に、前記未割り当ての領域の各々を、前記所定数のプロセスの各々に割り当て済みの前記領域に含まれる粒子の数に基づいて特定されるプロセスに順次割り当てる制御部を有することを特徴とする粒子シミュレーション装置。
100 粒子シミュレーション装置
101 解析空間
701 分割部
702 見積もり部
703 算出部
704 第1割り当て部
705 第2割り当て部
900 粒子データ
1000 領域データ
p1〜p5 プロセス
a1〜a9,ap 領域
asp 袖領域
n1〜n5 計算ノード
h 影響半径

Claims (5)

  1. コンピュータに、
    複数の領域を有する解析空間内の粒子の動きを前記複数の領域よりも少ない所定数のプロセスによってシミュレートする際に、
    前記複数の領域の各々について、前記領域に含まれる粒子の数に基づいて、前記解析空間のうちの前記領域から所定距離以内の領域に含まれる粒子の数を見積もり、
    前記複数の領域の各々について、前記領域に含まれる粒子の数と、見積もった前記粒子の数と、に基づいて、前記領域に含まれる粒子の動きをシミュレートする場合における計算負荷と、前記領域に含まれる粒子と、前記所定距離以内にある領域に含まれる粒子との通信負荷と、を示す評価値を算出し、
    前記複数の領域から、前記複数の領域の各々について算出した前記評価値が大きい順に選ばれた前記所定数の領域を、前記所定数のプロセスのうちのそれぞれ異なるプロセスに割り当て、
    前記複数の領域のうち、前記それぞれ異なるプロセスに割り当てられた前記所定数の領域以外の未割り当ての領域の各々について算出した前記評価値が大きい順に、前記未割り当ての領域の各々を、前記所定数のプロセスのうち割り当て済みの前記領域について算出した前記評価値に基づいて特定されるプロセスに順次割り当てる、
    処理を実行させることを特徴とする粒子シミュレーションプログラム。
  2. 前記コンピュータに、
    前記解析空間内の総粒子数を前記所定数により除算して前記所定数のプロセスの各々がシミュレートする平均粒子数を算出する処理を実行させ、
    前記特定されるプロセスに順次割り当てる処理は、
    前記未割り当ての領域の各々に含まれる粒子の数の多い順に、前記未割り当ての領域の各々を、前記所定数のプロセスのうち、割り当て済みの前記領域に含まれる粒子の数と前記未割り当ての領域に含まれる粒子の数との合計粒子数が、算出した前記平均粒子数を超えないプロセスに順次割り当てる、
    ことを特徴とする請求項1に記載の粒子シミュレーションプログラム。
  3. 前記特定されるプロセスに順次割り当てる処理は、
    前記未割り当ての領域の各々に含まれる粒子の数が多い順に、前記未割り当ての領域の各々を、前記所定数のプロセスの各々に割り当て済みの前記領域に含まれる粒子の数が最も少ないプロセスに順次割り当てる、
    ことを特徴とする請求項1に記載の粒子シミュレーションプログラム。
  4. コンピュータが、
    複数の領域を有する解析空間内の粒子の動きを前記複数の領域よりも少ない所定数のプロセスによってシミュレートする際に、
    前記複数の領域の各々について、前記領域に含まれる粒子の数に基づいて、前記解析空間のうちの前記領域から所定距離以内の領域に含まれる粒子の数を見積もり、
    前記複数の領域の各々について、前記領域に含まれる粒子の数と、見積もった前記粒子の数と、に基づいて、前記領域に含まれる粒子の動きをシミュレートする場合における計算負荷と、前記領域に含まれる粒子と、前記所定距離以内にある領域に含まれる粒子との通信負荷と、を示す評価値を算出し、
    前記複数の領域から、前記複数の領域の各々について算出した前記評価値が大きい順に選ばれた前記所定数の領域を、前記所定数のプロセスのうちのそれぞれ異なるプロセスに割り当て、
    前記複数の領域のうち、前記それぞれ異なるプロセスに割り当てられた前記所定数の領域以外の未割り当ての領域の各々について算出した前記評価値が大きい順に、前記未割り当ての領域の各々を、前記所定数のプロセスのうち割り当て済みの前記領域について算出した前記評価値に基づいて特定されるプロセスに順次割り当てる、
    処理を実行することを特徴とする粒子シミュレーションにおける計算機資源配分方法。
  5. 複数の領域を有する解析空間内の粒子の動きを前記複数の領域よりも少ない所定数のプロセスによってシミュレートする際に、前記複数の領域の各々について、前記領域に含まれる粒子の数に基づいて、前記解析空間のうちの前記領域から所定距離以内の領域に含まれる粒子の数を見積もり、前記複数の領域の各々について、前記領域に含まれる粒子の数と、見積もった前記粒子の数と、に基づいて、前記領域に含まれる粒子の動きをシミュレートする場合における計算負荷と、前記領域に含まれる粒子と、前記所定距離以内にある領域に含まれる粒子との通信負荷と、を示す評価値を算出し、前記複数の領域から、前記複数の領域の各々について算出した前記評価値が大きい順に選ばれた前記所定数の領域を、前記所定数のプロセスのうちのそれぞれ異なるプロセスに割り当て、前記複数の領域のうち、前記それぞれ異なるプロセスに割り当てられた前記所定数の領域以外の未割り当ての領域の各々について算出した前記評価値が大きい順に、前記未割り当ての領域の各々を、前記所定数のプロセスのうち割り当て済みの前記領域について算出した前記評価値に基づいて特定されるプロセスに順次割り当てる制御部、
    を有することを特徴とする粒子シミュレーション装置。
JP2015187666A 2015-09-25 2015-09-25 粒子シミュレーションプログラム、計算機資源配分方法、および粒子シミュレーション装置 Active JP6547547B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015187666A JP6547547B2 (ja) 2015-09-25 2015-09-25 粒子シミュレーションプログラム、計算機資源配分方法、および粒子シミュレーション装置
US15/264,918 US10970430B2 (en) 2015-09-25 2016-09-14 Computer-readable recording medium, computing machine resource allocation method, and particle simulation apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015187666A JP6547547B2 (ja) 2015-09-25 2015-09-25 粒子シミュレーションプログラム、計算機資源配分方法、および粒子シミュレーション装置

Publications (2)

Publication Number Publication Date
JP2017062651A JP2017062651A (ja) 2017-03-30
JP6547547B2 true JP6547547B2 (ja) 2019-07-24

Family

ID=58409568

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015187666A Active JP6547547B2 (ja) 2015-09-25 2015-09-25 粒子シミュレーションプログラム、計算機資源配分方法、および粒子シミュレーション装置

Country Status (2)

Country Link
US (1) US10970430B2 (ja)
JP (1) JP6547547B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112784411B (zh) * 2021-01-21 2023-05-05 东华理工大学 一种仿真地质样品的微磁建模方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02280266A (ja) 1989-04-21 1990-11-16 Toshiba Corp 並列電子計算機システム
JPH04363752A (ja) 1991-06-11 1992-12-16 Kyushu Nippon Denki Software Kk マルチプロセッサシステムの負荷制御方法
JPH05274277A (ja) * 1992-03-30 1993-10-22 Toshiba Corp 分子動力学計算装置
JPH09160884A (ja) 1995-12-04 1997-06-20 Mitsubishi Electric Corp 動的負荷分散並列計算機
US20060241928A1 (en) * 2005-04-25 2006-10-26 International Business Machines Corporation Load balancing by spatial partitioning of interaction centers
JP4742387B2 (ja) * 2006-04-20 2011-08-10 独立行政法人海洋研究開発機構 シミュレーション方法、シミュレーションプログラムおよびシミュレーション装置
WO2008118789A2 (en) * 2007-03-23 2008-10-02 D. E. Shaw Research, Llc Computation of multiple body interactions
KR101415616B1 (ko) * 2010-11-18 2014-07-09 한국전자통신연구원 파티클 기반 시뮬레이션을 위한 병렬 컴퓨팅 방법 및 그 장치
JP5704245B2 (ja) * 2011-09-20 2015-04-22 富士通株式会社 探索プログラム、探索装置、および探索方法
WO2014045416A1 (ja) * 2012-09-21 2014-03-27 富士通株式会社 シミュレーションプログラム、シミュレーション方法及びシミュレーション装置
WO2014094410A1 (zh) * 2012-12-20 2014-06-26 中国科学院近代物理研究所 颗粒流动仿真系统和方法
JP6163897B2 (ja) * 2013-06-11 2017-07-19 富士通株式会社 数値計算プログラム、数値計算方法及び情報処理装置
JP6176029B2 (ja) * 2013-09-27 2017-08-09 富士通株式会社 シミュレーション装置、シミュレーションプログラム及びシミュレーション方法
JP6229191B2 (ja) * 2014-01-24 2017-11-15 株式会社東芝 クラウド制御システム、及びクラウド制御システムの制御プログラムのスケジューリング方法
JP2015170327A (ja) * 2014-03-10 2015-09-28 富士通株式会社 シミュレーション装置、シミュレーション方法およびシミュレーションプログラム
JP6458501B2 (ja) * 2015-01-06 2019-01-30 富士通株式会社 シミュレーションプログラム、シミュレーション方法、およびシミュレーション装置
JP6544099B2 (ja) * 2015-07-10 2019-07-17 富士通株式会社 シミュレーション装置、シミュレーションプログラムおよびシミュレーション方法
US9881110B1 (en) * 2015-10-29 2018-01-30 Sohrab Mohajerin Apparatus and method for estimating and modeling turbulent flow
JP6543557B2 (ja) * 2015-11-11 2019-07-10 富士通株式会社 粒子シミュレーションプログラム、粒子シミュレーション装置、及び計算機資源配分方法

Also Published As

Publication number Publication date
JP2017062651A (ja) 2017-03-30
US20170091353A1 (en) 2017-03-30
US10970430B2 (en) 2021-04-06

Similar Documents

Publication Publication Date Title
CN110399222B (zh) Gpu集群深度学习任务并行化方法、装置及电子设备
JP2021184276A (ja) ニューラルネットワーク命令セットアーキテクチャ
US10007742B2 (en) Particle flow simulation system and method
Kerbyson et al. A performance model of the parallel ocean program
Jamshed Using HPC for Computational Fluid Dynamics: A guide to high performance computing for CFD engineers
CN104200045B (zh) 一种流域大尺度水系分布式水动力模型的并行计算方法
Chandler et al. Interpolation-based pathline tracing in particle-based flow visualization
CN114490011B (zh) N体模拟在异构架构的并行加速实现方法
Langguth et al. Scalable heterogeneous CPU-GPU computations for unstructured tetrahedral meshes
Gounley et al. Propagation pattern for moment representation of the lattice Boltzmann method
Mueller‐Roemer et al. Ternary sparse matrix representation for volumetric mesh subdivision and processing on GPUs
Navrátil Dynamic scheduling for large-scale distributed-memory ray tracing
Campeanu et al. Component allocation optimization for heterogeneous CPU-GPU embedded systems
JP6547547B2 (ja) 粒子シミュレーションプログラム、計算機資源配分方法、および粒子シミュレーション装置
TW201719397A (zh) 構造解析方法及構造解析程式
KR102742714B1 (ko) 중요 경로 기반 스케줄링 및 후처리를 통한 리소스 활용을 극대화할 수 있는 multi-GPU 기반 딥러닝 모델 추론 기법
Hung et al. Automatic clustering method for real-time construction simulation
CN103336713A (zh) 一种基于任务复制与聚簇的并行任务分配方法
KR101642823B1 (ko) 이웃 탐색 연산 시스템
Davis et al. Predictive analysis of a hydrodynamics application on large-scale cmp clusters
CN118210615A (zh) 资源分配的方法及装置
Ma et al. GPU parallelization of unstructured/hybrid grid ALE multigrid unsteady solver for moving body problems
Braun et al. HPC predictions of primary atomization with SPH: challenges and lessons learned
Chapuis et al. Predicting performance of smoothed particle hydrodynamics codes at large scales
Barker et al. A performance model of the krak hydrodynamics application

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180608

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190219

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190312

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190513

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190528

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190610

R150 Certificate of patent or registration of utility model

Ref document number: 6547547

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350