(57)【要約】【課題】分割法を用いた粒子挙動解析においてメモリの使用効率を高めること。【解決手段】第１演算処理部１０１は、自ノードに割り当てられたＭＰＩプロセスを実行して粒子挙動の計算を行う。データ取得部１０２は、この計算に用いられるデータを取得して第１演算処理部１０１に供給する。記憶領域確保部１０３は、第１演算処理部１０１が粒子挙動の計算を行う際にワークエリアとして用いる記憶領域を確保する。第２演算処理部２０１は、記憶領域確保部１０３によって確保された記憶領域、すなわち第１演算処理部１０１が利用する記憶領域を用いて粒子挙動の計算を行う。情報通信部１０４は、第１演算処理部１０１及び第２演算処理部２０１が行った粒子挙動の計算結果等の情報を他のノードの情報通信部１０４と通信する。【選択図】図３
2017049823.tif 000002
【特許請求の範囲】
【請求項１】
第１コア及び第２コアを有する第１プロセッサの前記第１コアに割り当てられる第１計算部であって、粒子挙動の計算で用いられる分割法に基づいて決まる第２プロセッサと通信し、粒子挙動の計算を当該計算のために確保された記憶領域を用いて行う第１計算部と、
前記第２コアに割り当てられる第２計算部であって、前記粒子挙動の計算を前記第１計算部からの指示に基づいて前記確保された記憶領域を用いて行う第２計算部と
を備える粒子挙動解析装置。
【請求項２】
前記第１及び第２プロセッサはＭＰＩ（Message Passing Interface）に従う並列処理により前記粒子挙動の計算を行い、
前記確保された記憶領域は前記ＭＰＩに従い前記第１プロセッサについて確保された記憶領域であり、
前記第１及び第２計算部は、ＯｐｅｎＭＰに従い共有メモリ型の並列処理を行う
請求項１に記載の粒子挙動解析装置。
【請求項３】
前記第１及び第２コアは、ループ処理を並列で行う場合、ＯｐｅｎＭＰで定められたループ・スケジュールのタイプに基づいて各コアの負荷を分散させる
請求項２に記載の粒子挙動解析装置。
【請求項４】
前記第１及び第２コアは、ＮＩＣ（Network Interface Card）経由で接続される第１通信路を介さずに通信を行い、又は、前記第１通信路及びＣＰＵ（Central Processing Unit）同士を接続する第２通信路を介さずに通信を行う
請求項１から３のいずれか１項に記載の粒子挙動解析装置。
【請求項５】
請求項１から４のいずれか１項に記載の粒子挙動解析装置を複数備える粒子挙動解析システム。
【請求項６】
コンピュータを、
第１コア及び第２コアを有する第１プロセッサの前記第１コアに割り当てられる第１計算部であって、粒子挙動の計算で用いられる分割法に基づいて決まる第２プロセッサと通信し、粒子挙動の計算を当該計算のために確保された記憶領域を用いて行う第１計算部と、
前記第２コアに割り当てられる第２計算部であって、前記粒子挙動の計算を前記第１計算部からの指示に基づいて前記確保された記憶領域を用いて行う第２計算部
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、粒子挙動解析装置、粒子挙動解析システム及びプログラムに関する。
【背景技術】
【０００２】
特許文献１には、接触判定の対象となる各壁面を解析対象物と見立て、それぞれを力マトリクスの決められた位置に対応付けて分散処理を行い、力分割法を用いた粒子解析を行う技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−１８６３７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
力分割法を用いた粒子解析では、ＭＰＩ（Message Passing Interface）に従った並列化が行われるが、その場合に各ＭＰＩプロセスをコア毎に割り当てると、各ＭＰＩプロセスがメモリをそれぞれに確保するため、１つのＭＰＩプロセスが使用するメモリサイズが小さくなる。そのため、例えばＭＰＩプロセス毎に必要とするメモリサイズにばらつきがあると、或るＭＰＩプロセスはメモリサイズを使い切り、他のＭＰＩプロセスはメモリサイズに余裕があるというように、メモリの使用効率が低くなる。
本発明は、分割法を用いた粒子挙動解析においてメモリの使用効率を高めることを目的とする。
【課題を解決するための手段】
【０００５】
本発明の請求項１に係る粒子挙動解析装置は、第１コア及び第２コアを有する第１プロセッサの前記第１コアに割り当てられる第１計算部であって、粒子挙動の計算で用いられる分割法に基づいて決まる第２プロセッサと通信し、粒子挙動の計算を当該計算のために確保された記憶領域を用いて行う第１計算部と、前記第２コアに割り当てられる第２計算部であって、前記粒子挙動の計算を前記第１計算部からの指示に基づいて前記確保された記憶領域を用いて行う第２計算部とを備えることを特徴とする。
【０００６】
本発明の請求項２に係る粒子挙動解析装置は、請求項１に記載の構成において、前記第１及び第２プロセッサはＭＰＩ（Message Passing Interface）に従う並列処理により前記粒子挙動の計算を行い、前記確保された記憶領域は前記ＭＰＩに従い前記第１プロセッサについて確保された記憶領域であり、前記第１及び第２計算部は、ＯｐｅｎＭＰに従い共有メモリ型の並列処理を行うことを特徴とする。
【０００７】
本発明の請求項３に係る粒子挙動解析装置は、請求項２に記載の構成において、前記第１及び第２コアは、ループ処理を並列で行う場合、ＯｐｅｎＭＰで定められたループ・スケジュールのタイプに基づいて各コアの負荷を分散させることを特徴とする。
【０００８】
本発明の請求項４に係る粒子挙動解析装置は、請求項１から３のいずれか１項に記載の構成において、前記第１及び第２コアは、ＮＩＣ（Network Interface Card）経由で接続される第１通信路を介さずに通信を行い、又は、前記第１通信路及びＣＰＵ（Central Processing Unit）同士を接続する第２通信路を介さずに通信を行うことを特徴とする。
【０００９】
本発明の請求項５に係る粒子挙動解析システムは、請求項１から４のいずれか１項に記載の粒子挙動解析装置を複数備えることを特徴とする。
【００１０】
本発明の請求項６に係るプログラムは、コンピュータを、第１コア及び第２コアを有する第１プロセッサの前記第１コアに割り当てられる第１計算部であって、粒子挙動の計算で用いられる分割法に基づいて決まる第２プロセッサと通信し、粒子挙動の計算を当該計算のために確保された記憶領域を用いて行う第１計算部と、前記第２コアに割り当てられる第２計算部であって、前記粒子挙動の計算を前記第１計算部からの指示に基づいて前記確保された記憶領域を用いて行う第２計算部として機能させることを特徴とする。
【発明の効果】
【００１１】
請求項１、５、６に係る発明によれば、分割法を用いた粒子挙動解析において、各コアに第１計算部だけが割り当てられる場合に比べてメモリの使用効率を高めることができる。
請求項２に係る発明によれば、並列コンピューティングの規格に従ってメモリの使用効率を高めることができる。
請求項３に係る発明によれば、ループ・スケジュールのタイプに基づくループ処理の割り当てが行われない場合に比べて、計算時間を短くすることができる。
請求項４に係る発明によれば、コア同士の通信に第１通信路又は第２通信路が用いられる場合に比べて、コア同士の通信にボトルネックを生じにくくさせることができる。
【図面の簡単な説明】
【００１２】
【図１】実施例に係る粒子挙動解析システムの全体構成を表す図
【図２】粒子挙動解析装置のハードウェア構成を表す図
【図３】粒子挙動解析システムの機能構成を表す図
【図４】情報通信部が行う通信の一例を表す図
【図５】力分割法で用いられる力マトリクスの一例を表す図
【図６】ノードが有する各コアに割り当てられた機能の一例を表す図
【図７】各コアが用いる記憶領域を説明するための図
【図８】本発明及び比較例における計算速度及びメモリ使用量の例を表す図
【図９】変形例の粒子挙動解析装置のハードウェア構成を表す図
【発明を実施するための形態】
【００１３】
［１］実施例
図１は実施例に係る粒子挙動解析システム１の全体構成を表す。粒子挙動解析システム１は、力分割法を用いて粒子挙動解析を行うシステムである。力分割法とは、粒子挙動の計算で用いられる分割法の１つである。分割法とは、膨大な計算を複数のプロセッサによる並列処理で行う場合に、それらの計算を分割して各プロセッサに割り振る方法である。
【００１４】
粒子挙動解析システム１は、本実施例では、プリンタ装置及びファクシミリ装置などの画像形成装置で用いられる粒子（トナー粒子やキャリア粒子など）を解析対象とする。なお、解析対象の粒子はこれに限定されず、画像形成装置以外の装置で用いられる粒子が解析対象であってもよい。
【００１５】
粒子挙動解析システム１は、粒子挙動解析装置１０−１、１０−２、・・・、１０−１５、１０−１６という複数（１６台）の粒子挙動解析装置（それぞれを区別しない場合は「粒子挙動解析装置１０」という）と、ＵＩ（User Interface）装置２と、通信回線管理装置３と、これらの装置が接続された通信回線４とを備える。通信回線４は、データのやり取りを仲介するシステムであり、例えばＬＡＮ（Local Area Network）である。ＵＩ装置２は、粒子挙動解析に関する操作の受け付けや表示を行う装置であり、粒子挙動解析システム１のユーザインターフェースとしてユーザに利用される。通信回線管理装置３は、ルーティング機能を有し、通信回線４の通信状態を管理する。
【００１６】
複数の粒子挙動解析装置１０は、通信回線４を介して互いに情報を伝達し合い、粒子挙動解析処理を並列的に実行する。各粒子挙動解析装置１０は、それぞれが通信の主体となる装置であり、ノードともいう。本実施例では、各ノードがそれぞれ１つのプロセッサとして扱われ、力分割法により各ノード（すなわち各プロセッサ）に粒子挙動解析処理において必要な粒子挙動の計算（粒子間の相互作用力の計算等）が割り当てられる。
【００１７】
複数の粒子挙動解析装置１０のうちの１台（例えば粒子挙動解析装置１０−１）は、粒子挙動解析システム１の全体を統括する機能を有し、各ノードの動作を制御する。この粒子挙動解析装置１０のことを以下では「ノード統括装置」という。ノード統括装置は、並列コンピューティングの規格であるＭＰＩ（Message Passing Interface）に従って各ノードに対して前述した粒子挙動の計算を行うためのＭＰＩプロセスの割り当てを行う。
【００１８】
図２は粒子挙動解析装置１０のハードウェア構成を表す。粒子挙動解析装置１０は、ＣＰＵ（Central Processing Unit）１１と、ＲＡＭ（Random Access Memory）１２と、ＲＯＭ（Read Only Memory）１３と、ＨＤＤ（Hard Disk Drive）１４と、通信Ｉ／Ｆ（InterFace）１５と、これらを接続するバス５とを備えるコンピュータである。
【００１９】
ＣＰＵ１１は、粒子挙動解析装置１０の各部を制御する演算処理装置である。粒子挙動解析システム１においては、２以上のコア（本実施例では８つのコア）を有する演算処理装置がＣＰＵ１１として用いられている。ＣＰＵ１１は、ＲＯＭ１３又はＨＤＤ１４に記憶されたプログラムを、ワークエリアとしてのＲＡＭ１２に読み出して実行する。ＣＰＵ１１は、ＲＡＭ１２上にプログラムを実行するための記憶領域を確保し、確保した記憶領域に、プログラム及びそのプログラムで利用されるデータを展開する。通信Ｉ／Ｆ１５は、通信回路を有するＮＩＣ（Network Interface Card）を備え、通信回線４を介した通信を行う。
【００２０】
図３は粒子挙動解析システム１の機能構成を表す。粒子挙動解析装置１０は、記憶領域確保部１０３と、データ取得部１０２と、第１演算処理部１０１と、情報通信部１０４と、複数の第２演算処理部２０１と、記憶部３００とを備える。記憶領域確保部１０３、データ取得部１０２、第１演算処理部１０１及び情報通信部１０４は、ＣＰＵ１１が有する８つのコアのうちの１つ（これを「第１コア１００」という）により実現され、複数の第２演算処理部２０１は残りの７つのコア（これらをそれぞれ「第２コア２００」という）のそれぞれによって実現される。記憶部３００は本実施例ではＲＡＭ１２によって実現される。
【００２１】
第１演算処理部１０１は、上述したノード統括装置により割り当てられたＭＰＩプロセスを実行して、自ノードに割り当てられた粒子挙動の計算を行う。データ取得部１０２は、この計算に用いられるデータを取得して第１演算処理部１０１に供給する。粒子挙動の計算に用いられるデータは、例えばＵＩ装置２によってノード統括装置に格納され、データ取得部１０２は格納されたデータから自ノードに割り当てられた粒子挙動の計算で用いるものを取得する。
【００２２】
記憶領域確保部１０３は、第１演算処理部１０１が上記の粒子挙動の計算を行う際にワークエリアとして用いる記憶領域を確保する。記憶領域確保部１０３は、確保した記憶領域を表す情報（例えばアドレス空間を表す情報）を第１演算処理部１０１に通知する。第１演算処理部１０１はこうして粒子挙動の計算のために確保された記憶領域を用いて粒子挙動の計算を行う。
【００２３】
第１演算処理部１０１は、粒子挙動の計算を自身とともに並列的に実行するスレッドを生成する。このスレッドが複数の第２演算処理部２０１である。第１演算処理部１０１及び第２演算処理部２０１は、この並列処理を、並列コンピューティングの規格であるＯｐｅｎＭＰに従って行う。具体的には、第１演算処理部１０１は、生成したスレッドである第２演算処理部２０１に対して行うべき粒子挙動の計算を指示する。
【００２４】
第２演算処理部２０１は、粒子挙動の計算を第１演算処理部１０１からの指示に基づいて行う。また、ＯｐｅｎＭＰは共有メモリ型並列コンピューティングで用いられる規格であるため、第２演算処理部２０１は、記憶領域確保部１０３によって確保された記憶領域、すなわち第１演算処理部１０１が利用する記憶領域を用いて粒子挙動の計算を行う。記憶部３００は、こうして第１演算処理部１０１及び第２演算処理部２０１によってデータの書き込みや読み出しが行われる記憶領域を有している。第２演算処理部２０１は、計算結果を第１演算処理部１０１に供給する。
【００２５】
第１演算処理部１０１は、自身が行った粒子挙動の計算結果と、第２演算処理部２０１が行った粒子挙動の計算結果とを情報通信部１０４に供給する。情報通信部１０４は、第１演算処理部１０１及び第２演算処理部２０１が行った粒子挙動の計算結果等の情報を他のノードの情報通信部１０４と通信する。
【００２６】
図４は情報通信部１０４が行う通信の一例を表す。図４では、粒子挙動解析装置１０―１、１０−２、１０−３、１０−４が表されている。図４の例では、粒子挙動解析装置１０―１の情報通信部１０４が、粒子挙動解析装置１０―２及び１０−４の情報通信部１０４と通信を行っている。情報通信部１０４の通信相手は力分割法に基づいて決まる。この通信相手の決まり方について図５を参照して説明する。
【００２７】
図５は力分割法で用いられる力マトリクスの一例を表す。図５の例では、３２粒子の挙動の計算を１６台のノード（図１に表す粒子挙動解析装置１０）で並列的に行う場合に用いられる力マトリクスが表されている。この力マトリクスでは、各粒子に対応する番号を＃０から＃３１と設定し、粒子＃０、＃１はノード＃０、粒子＃２、＃３はノード＃１、…、粒子＃３０＃３１はノード＃１５というように各粒子と各ノードとが対応付けられている。
【００２８】
図５の例では、１６台のノードで３２粒子について並列計算するので、４行４列の力マトリクスに配置される各ノードは、先ず、それぞれ２個の粒子に着目して、着目粒子ごとに対象となる他の粒子との相互作用力を計算する。このとき、各ノードは、複数種類の多体粒子間相互作用力（磁気相互作用力、静電相互作用力、機械的相互作用力）を、力マトリクス中の自身を中心とする行方向および列方向に存在する通信相手となる通信ノードに分散して計算する。このとき、複数種類の多体粒子間相互作用力に対しては、それぞれ別の力マトリクスを用いて計算する。
【００２９】
各ノードは、相互作用力を計算すると、その計算結果を次のように他のノードと通信する。例えばノード＃６は、自身を中心とする行方向に存在するノード＃４、＃５、＃７と通信し、それらが計算した複数種類の多体粒子間相互作用力を自身が計算した複数種類の多体粒子間相互作用力に足し合わせ、分散して計算した各相互作用力の全総和値を求める。この全総和値は、静電気力、磁気力、機械的接触力などの複数の相互作用力を一括して表わしたものとなる。
【００３０】
各ノードは、複数の相互作用を一括して表している全総和値を使用して、各粒子の運動方程式を解き、位置座標を計算する。各ノードは、こうして求めた各粒子の位置座標を、自身を中心とする行方向及び列方向に存在するノードに送信し、計算情報を更新する。各ノードは、予め決められた計算ステップに到達するまで、以上の粒子挙動解析処理（相互作用力の計算処理、他ノードとの通信処理、全総和値の算出処理、位置座標の更新処理）を繰り返す。
【００３１】
以上のとおり、粒子挙動解析装置１０（これを「第１ノード」という）が有する情報通信部１０４は、粒子挙動の計算で用いられる分割法である力分割法に基づいて決まる他の粒子挙動解析装置１０（これを「第２ノード」という）と通信する。こうして第１ノードの第１演算処理部１０１及び情報通信部１０４は、第２ノードと通信し、記憶部３００に確保された記憶領域を用いて挙動計算を行う第１計算部として機能する。
【００３２】
また、第２演算処理部２０１は、第１計算部からの指示に基づいて粒子挙動の計算を記憶部３００に確保された記憶領域を用いて行う第２計算部として機能する。第１計算部は上述したＭＰＩプロセスを第１コア１００が実行することにより実現され、第２計算部は上述したスレッドを第２コア２００が実行することにより実現される。
【００３３】
図６はノードが有する各コアに割り当てられた機能の一例を表す。図６では、ＣＰＵ１１が有する１つの第１コア１００（コア＃１）と、７つの第２コア２００−１（コア＃２）、２００−２（コア＃３）、・・・、２００−７（コア＃８）が表されている。第１コア１００は上述したＭＰＩプロセスを実行することで第１計算部を実現し、第２コア２００は上述したスレッドを実行することで第２計算部を実現している。
【００３４】
以上で述べたとおり、粒子挙動解析システム１においては、第１及び第２ノードがＭＰＩに従う並列処理により粒子挙動の計算を行う。ＭＰＩは分散メモリ型の並列処理の規格であるため、記憶領域はＭＰＩプロセス毎に確保される。例えば図３に表す粒子挙動解析装置１０が第１ノードだとすれば、図３に表す記憶部３００が有する記憶領域がＭＰＩに従い第１ノードについて確保される。一方、第１ノード内では、第１計算部（第１演算処理部１０１及び情報通信部１０４）及び第２計算部（第２演算処理部２０１）が、ＯｐｅｎＭＰに従い共有メモリ型の並列処理を行う。
【００３５】
図７は各コアが用いる記憶領域を説明するための図である。図７（ａ）では、図６で述べたようにＣＰＵ１１が有する１つの第１コア１００がＭＰＩプロセスを実行し、７つの第２コア２００がスレッドを実行することと、これら８つのコアがいずれもＲＡＭ１２に確保された１つの記録領域（＃１〜＃８）を用いることが表されている。この場合、各コアは、確保された記憶領域全体の中に空きがあれば自由にそこを用いて粒子挙動の計算処理を行う。
【００３６】
一方、図７（ｂ）では、ＣＰＵ１１ｘが有する８つのコアがそれぞれＭＰＩプロセスを実行し、それら８つのコアがＲＡＭ１２ｘにそれぞれ確保した別々の記録領域＃１〜＃８を用いることが表されている。この場合の８つのコアは、それぞれが上述した第１計算部を実現することになる。この場合、各コアは、自身が確保した記憶領域に空きがなくなると、他のコアが確保した記憶領域に空きがあってもそこを利用した処理を行えない。
【００３７】
このように、本実施例によれば、力分割法を用いた粒子挙動解析を行う場合、具体的にはそれぞれが複数のコアを有する複数のノードで粒子挙動の計算の並列処理を行う場合に、第１計算部だけを各コアに割り当てる場合に比べて、メモリの使用効率が高められる。また、本実施例では、ＭＰＩ及びＯｐｅｎＭＰのように並列コンピューティングの規格に従ってメモリの使用効率が高められている。
【００３８】
以下、使用するコア数を変化させた場合に、複数のコアに１つのＭＰＩプロセスを割り当ててそれら複数のコアがＯｐｅｎＭＰに従うメモリ共有型の並列処理を行う本発明と、複数のコアのそれぞれにＭＰＩプロセスを割り当てて並列処理を行う比較例とを比較した結果を説明する。
【００３９】
図８は本発明及び比較例における計算速度及びメモリ使用量の例を表す。図８では、本発明の実施の例及び比較例における相対計算速度とメモリ使用量（ＧＢ：Giga Byte）とを比較したグラフが表されている。相対計算速度とは、４コアにおける計算速度に対する、使用コア数を増やした場合の計算速度の比率である。この値が大きいほど計算速度が速いことを意味する。また、メモリ使用量は全ノードで使用されるメモリの記憶領域の合計を表している。本発明の実施の例としては、使用コア数に関わらずＭＰＩプロセスを割り当てるコアを４つに固定し、残りのコアにはスレッドを実行させており、比較例としては、使用コア数の増加に合わせてＭＰＩプロセスを増やして複数のコアのそれぞれにＭＰＩプロセスを割り当てて実行させている。
【００４０】
本発明の例では、使用コア数が４コアの場合、１プロセッサが１コアを有するものとして、各プロセッサ（各コア）に１つのＭＰＩプロセスが割り当てられる。これは比較例と共通の構成になるため、計算速度及びメモリ使用量（２２ＧＢ）とも差が生じていない。この場合、１つのＭＰＩプロセス当たりのメモリ使用量はどちらも２２ＧＢ÷４＝５．５ＧＢとなる。
【００４１】
使用コア数が１６コアの場合、本発明の例では１プロセッサが４コアを有するものとして４つのプロセッサにそれぞれ１つのＭＰＩプロセスが割り当てられる。この場合でも本発明の例ではメモリ使用量は使用コア数が４コアの場合と変わらない（２２ＧＢのまま）。これは、本発明の例では、使用コア数が４コア及び１６コアのいずれの場合でも、１つのＭＰＩプロセスに割り当てられる記憶領域が５．５ＧＢと変わっていないためである。
【００４２】
一方、比較例では、使用コア数が１６コアの場合、使用コア数が４コアの場合に比べてメモリ使用量が増加する（４１ＧＢ。使用コア数が４コアの場合の約１．８６倍）が、１つのＭＰＩプロセス当たり（つまり１コア当たり）のメモリ使用量は減少している（４１÷１６＝約２．６ＧＢ。使用コア数が４コアの場合の約０．４７倍）。
【００４３】
そして、比較例では使用コア数を４コアから１６コアに増やした場合に、メモリ使用量が１．８６倍になったにもかかわらず計算速度が約２．３倍にしかならないのに対し、本発明の例では同じ場合にメモリ使用量が変わらない上に計算速度が約３．２倍になっている。これは、本発明では比較例に比べてメモリの使用効率が高められていることを意味している。その理由としては、例えば記憶領域を共有するコア同士でキャッシュしたデータも共有されることなどが考えられる。
【００４４】
［２］変形例
上述した実施例は本発明の実施の一例に過ぎず、以下のように変形させてもよい。また、実施例及び各変形例は必要に応じて組み合わせて実施してもよい。
【００４５】
［２−１］ＣＰＵ毎の割り当て
実施例では各ノードにＭＰＩプロセスが割り当てられたが、これに限らない。
図９は本変形例の粒子挙動解析装置１０ａのハードウェア構成を表す。粒子挙動解析装置１０ａは、ＣＰＵ１１ａ−１、１１ａ−２、・・・、１１ａ−１５及び１１ａ−１６（これらを区別しない場合は「ＣＰＵ１１ａ」という）という１６個のＣＰＵ１１ａと、ＲＡＭ１２、ＲＯＭ１３、ＨＤＤ１４及び通信Ｉ／Ｆ１５と、これらを接続するバス５とを備える。
【００４６】
各ＣＰＵ１１ａは、いずれも図２に表すＣＰＵ１１のように２以上のコアを有する。粒子挙動解析装置１０ａにおいては、各ＣＰＵ１１ａにＭＰＩプロセスが割り当てられる。各ＣＰＵ１１ａでは、図６に表す例のように、１つの第１コア１００がＭＰＩプロセスを実行して上述した第１計算部を実現し、他の７つの第２コア２００がスレッドを実行して上述した第２計算部を実現する。そして、各ＣＰＵ１１ａで実現される第１計算部同士が通信を行って粒子挙動の計算が行われる。
【００４７】
実施例では各ノードが並列処理を行うプロセッサとして用いられていたが、本変形例では各ＣＰＵが並列処理を行うプロセッサとして用いられている。そのため、本変形例の粒子挙動解析装置１０ａは複数のプロセッサを備えることになる。この粒子挙動解析装置１０ａにおいても、実施例のように記憶領域が第１計算部及び第２計算部で共有されるので、実施例のように、第１計算部だけを各コアに割り当てる場合に比べて、メモリの使用効率が高められる。
【００４８】
なお、実施例及び本変形例では、第１コア１００及び第２コア２００が、ＮＩＣ経由で接続される第１通信路（例えば通信回線４）及びＣＰＵ同士を接続する第２通信路（例えばバス５）を介さずに通信を行っている。各プロセッサにおいては、ＭＰＩプロセス及び各スレッド同士での通信（ＯｐｅｎＭＰに従う並列処理における通信であり、コア同士の通信となる）が頻繁に行われるため、このコア同士の通信における通信速度は速いほど望ましい。また、コア同士の通信の通信経路に１ヵ所でも通信速度が遅い通信路が含まれていると、その通信路が含まれていない場合に比べて、その通信路がボトルネックになって並列処理が遅くなる。
【００４９】
例えば複数ノードを１つのプロセッサとして用いると、コア同士の通信に第１通信路（例えば通信回線４）が用いられることになり、この第１通信路がボトルネックになる。また、複数ＣＰＵを１つのプロセッサとして用いると、この通信に第２通信路（例えばバス５）が用いられることになり、この第２通信路がボトルネックになる。実施例及び本変形例では、第１コア１００及び第２コア２００のコア同士の通信が前述のとおり行われることで、この通信に第１通信路又は第２通信路が用いられる場合に比べて、コア同士の通信にボトルネックが生じにくくなっている。なお、コア同士の通信に第２通信路が用いられてもよい。その場合でも、コア同士の通信に第１通信路が用いられる場合に比べれば、この通信にボトルネックが生じにくくなる。
【００５０】
なお、本発明は、コア同士の通信を上記の第１通信路又は第２通信路のいずれか、あるいは両方を介して行う装置やシステムへの適用を除外するものではない。この場合でも、メモリの使用効率が高められるという点では実施例と変わらない。
【００５１】
［２−２］ループ処理
プロセッサが有する複数のコアがそれぞれループ処理を計算する場合がある。粒子挙動解析システム１では、各プロセッサではＯｐｅｎＭＰに従って並列処理が行われるので、各コアが計算するループ処理の割り当てをＯｐｅｎＭＰで定められたループ・スケジュールのタイプに基づいて行ってもよい。ループ・スケジュールのタイプには、ｓｔａｔｉｃ、ｄｙｎａｍｉｃ、ｇｕｉｄｅｄの３つがある。
【００５２】
ｓｔａｔｉｃでは、何番目のループ処理をどのコア（スレッド）が行うかが予め決まっており、ｓｉｚｅで指定したチャンク数で順次ループ処理が実行される。ｄｙｎａｍｉｃでは、ｓｉｚｅで指定したチャンク数毎に空いているコア（スレッド）にループ処理が割り当てられていく。ｇｕｉｄｅｄでは、始めは大きなチャンク数でループ処理が割り当てられ、徐々に小さなチャンク数でループ処理が割り当てられる。
【００５３】
本変形例では、例えばループ処理の計算量のばらつきが少ない場合にはｓｔａｔｉｃタイプを指定して各コアの処理能力が効率よく利用される。また、ループ処理の計算量のばらつきが多い場合にはｄｙｎａｍｉｃタイプを指定することで、オーバーヘッドがかかるもののループ処理の計算量のばらつきがあっても各コアの処理能力が効率よく利用される。また、ループ処理の計算量のばらつきがそれらの中間である場合にはｇｕｉｄｅｄタイプを指定することで、初期においてはチャンク数が大きいため各コアの処理能力が効率よく利用され、終盤ではチャンク数が小さいため各コアが極力均等に計算を行うように（ループ処理を行わないコアが極力出ないように）なり、各コアの処理能力が効率よく利用される。
【００５４】
以上のとおり、本変形例では、第１コア１００及び第２コア２００が、ループ処理を並列で行う場合、ＯｐｅｎＭＰで定められたループ・スケジュールのタイプに基づいて各コアの負荷を分散させている。これにより、プロセッサ（各ノードや各ＣＰＵ）が複数のループ処理を行う場合に、ループ・スケジュールのタイプに基づく割り当てが行われない場合に比べて、計算時間が短くなる。
【００５５】
［２−３］分割法
実施例では粒子挙動の計算で用いられる分割法として力分割法が用いられたが、これに限らず、例えば粒子分割法や領域分割法（空間分割法）などが用いられてもよい。いずれの場合も、複数のコアを有するプロセッサ同士が通信を行って並列処理を行うものであれば、本発明を適用することで実施例のようにメモリの使用効率が高められる。
【００５６】
［２−４］複数のコア
各プロセッサ（各粒子挙動解析装置や各ＣＰＵ）が備えるコアの数は実施例（コアが８つ）と異なっていてもよく、７つ以下であってもよいし、９つ以上であってもよい。いずれの場合も、プロセッサは、２以上のコアを備えていればよい。そうすれば、１つのコアが第１コアとしてＭＰＩプロセッサを割り当てられ、それ以外の１以上のコアが第２コアとしてスレッドを実行することになる。
【００５７】
［２−５］発明のカテゴリ
本発明は、粒子挙動解析装置及びそれを複数備える粒子挙動解析システムとして捉えられる。また、本発明は、粒子挙動解析装置が実施する処理を実現するための処理方法や粒子挙動解析装置として用いられるコンピュータを、図３に表す各部として機能させるためのプログラムとしても捉えられる。このプログラムは、それを記憶させた光ディスク等の記録媒体の形態や、インターネット等の通信回線を介してコンピュータにダウンロード及びインストールさせて利用可能にするなどの形態で提供される。
【符号の説明】
【００５８】
１…粒子挙動解析システム、２…ＵＩ装置、３…通信回線管理装置、４…通信回線、１０…粒子挙動解析装置、１１…ＣＰＵ、１２…ＲＡＭ、１３…ＲＯＭ、１４…ＨＤＤ、１５…通信Ｉ／Ｆ、１００…第１コア、１０１…第１演算処理部、１０２…データ取得部、１０３…記憶領域確保部、１０４…情報通信部、２００…第２コア、２０１…第２演算処理部、３００…記憶部
【図１】
2017049823.tif 000003
【図２】
2017049823.tif 000004
【図３】
2017049823.tif 000005
【図４】
2017049823.tif 000006
【図５】
2017049823.tif 000007
【図６】
2017049823.tif 000008
【図７】
2017049823.tif 000009
【図９】
2017049823.tif 000010
【図８】
2017049823.tif 000011