JP2019191710A - 情報処理装置、情報処理方法および情報処理プログラム - Google Patents

情報処理装置、情報処理方法および情報処理プログラム Download PDF

Info

Publication number
JP2019191710A
JP2019191710A JP2018080924A JP2018080924A JP2019191710A JP 2019191710 A JP2019191710 A JP 2019191710A JP 2018080924 A JP2018080924 A JP 2018080924A JP 2018080924 A JP2018080924 A JP 2018080924A JP 2019191710 A JP2019191710 A JP 2019191710A
Authority
JP
Japan
Prior art keywords
update
information processing
block
cell
magnetic field
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.)
Granted
Application number
JP2018080924A
Other languages
English (en)
Other versions
JP7087625B2 (ja
Inventor
巧 本田
Takumi Honda
巧 本田
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 JP2018080924A priority Critical patent/JP7087625B2/ja
Priority to US16/366,459 priority patent/US20190324909A1/en
Publication of JP2019191710A publication Critical patent/JP2019191710A/ja
Application granted granted Critical
Publication of JP7087625B2 publication Critical patent/JP7087625B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R29/00Arrangements for measuring or indicating electric quantities not covered by groups G01R19/00 - G01R27/00
    • G01R29/08Measuring electromagnetic field characteristics
    • G01R29/0864Measuring electromagnetic field characteristics characterised by constructional or functional features
    • G01R29/0892Details related to signal analysis or treatment; presenting results, e.g. displays; measuring specific signal features other than field strength, e.g. polarisation, field modes, phase, envelope, maximum value
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R33/00Arrangements or instruments for measuring magnetic variables
    • G01R33/02Measuring direction or magnitude of magnetic fields or magnetic flux
    • G01R33/10Plotting field distribution ; Measuring field distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/454Vector or matrix data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Electromagnetism (AREA)
  • Condensed Matter Physics & Semiconductors (AREA)
  • Complex Calculations (AREA)
  • Hall/Mr Elements (AREA)

Abstract

【課題】FDTD法における更新時のメモリアクセス回数を削減できる情報処理装置、情報処理方法および情報処理プログラムを提供する。【解決手段】情報処理装置は、N次元FDTD法の処理を行う。情報処理装置は、更新部を有する。更新部は、N次元の所定の座標の+1方向のセルの更新を行い、更新した値をキャッシュメモリに格納し、更新した値を格納した後に、格納した値を用いて、該所定の座標のセルの更新を行う。【選択図】図1

Description

本発明は、情報処理装置、情報処理方法および情報処理プログラムに関する。
電磁場の解析やシミュレーションに用いられるFDTD(Finite-Difference Time-Domain Method)法は、空間を格子状のセルに分割し、マクスウェル方程式を時間と空間について差分法で解くことで、電界と磁界を計算する手法である。FDTD法は、コンピュータを用いて計算される。近年のコンピュータは、例えば、キャッシュメモリとメインメモリといったように、高速小容量のメモリと低速大容量のメモリを組み合わせた階層型のメモリ構造を有する。一方、FDTD法では、時刻ごとに電界と磁界とを交互に更新するため、メインメモリに格納された前の時刻のデータを利用する。
特開2006−139723号公報 特開2009−245057号公報
しかしながら、FDTD法では、前の時刻のデータの読み込みや更新データの書き込みが多いため、メモリアクセスがボトルネックとなる。特に、階層型のメモリ構造では、低速なメインメモリに格納された前の時刻のデータを利用する場合に、アクセス遅延が増大し、処理の高速化の妨げとなる。
一つの側面では、FDTD法における更新時のメモリアクセス回数を削減できる情報処理装置、情報処理方法および情報処理プログラムを提供することにある。
一つの態様では、情報処理装置は、N次元FDTD法の処理を行う。情報処理装置は、更新部を有する。更新部は、N次元の所定の座標の+1方向のセルの更新を行い、更新した値をキャッシュメモリに格納し、前記更新した値を格納した後に、前記格納した値を用いて、該所定の座標のセルの更新を行う。
FDTD法における更新時のメモリアクセス回数を削減できる。
図1は、実施例1の情報処理装置の構成の一例を示すブロック図である。 図2は、1次元FDTD法の一例を示す図である。 図3は、1次元FDTD法における電界と磁界の関係の一例を示す図である。 図4は、2次元FDTD法の一例を示す図である。 図5は、2次元FDTD法における電界と磁界の関係の一例を示す図である。 図6は、電界の更新後に磁界を更新する場合のコードの一例を示す図である。 図7は、階層型メモリアーキテクチャの一例を示す図である。 図8は、更新順序の制約の一例を示す図である。 図9は、セルの更新順序のパターンの一例を示す図である。 図10は、セルの更新順序のパターンの組み合わせの一例を示す図である。 図11は、電界の更新後に磁界を更新する場合のメモリ状態の遷移の一例を示す図である。 図12は、電界と磁界を注目セルごとに更新する場合のメモリ状態の遷移の一例を示す図である。 図13は、電界と磁界を注目セルごとに更新する場合のコードの一例を示す図である。 図14は、実施例1の更新処理の一例を示すフローチャートである。 図15は、実施例2の情報処理装置の構成の一例を示すブロック図である。 図16は、GPUの構成の一例を示す図である。 図17は、GPUにおける電界の更新後に磁界を更新する場合の一例を示す図である。 図18は、更新処理におけるメモリ状態の遷移の一例を示す図である。 図19は、更新処理におけるメモリ状態の遷移の一例を示す図である。 図20は、更新処理におけるメモリ状態の遷移の一例を示す図である。 図21は、更新処理におけるメモリ状態の遷移の一例を示す図である。 図22は、更新処理におけるメモリ状態の遷移の一例を示す図である。 図23は、更新処理におけるメモリ状態の遷移の一例を示す図である。 図24は、更新処理におけるメモリ状態の遷移の一例を示す図である。 図25は、更新処理におけるメモリ状態の遷移の一例を示す図である。 図26は、更新処理におけるメモリ状態の遷移の一例を示す図である。 図27は、更新処理におけるメモリ状態の遷移の一例を示す図である。 図28は、3次元FDTD法における性能評価の一例を示す図である。 図29は、実施例2の更新処理の一例を示すフローチャートである。 図30は、E,H更新処理の一例を示すフローチャートである。 図31は、情報処理プログラムを実行するコンピュータの一例を示す図である。
以下、図面に基づいて、本願の開示する情報処理装置、情報処理方法および情報処理プログラムの実施例を詳細に説明する。なお、本実施例により、開示技術が限定されるものではない。また、以下の実施例は、矛盾しない範囲で適宜組みあわせてもよい。
図1は、実施例1の情報処理装置の構成の一例を示すブロック図である。図1に示す情報処理装置100は、N次元FDTD法の処理を行う情報処理装置の一例である。情報処理装置100は、N次元の所定の座標の+1方向のセルの更新を行い、更新した値をキャッシュメモリに格納し、更新した値を格納した後に、格納した値を用いて、該所定の座標のセルの更新を行う。これにより、情報処理装置100は、FDTD法における更新時のメモリアクセス回数を削減できる。なお、以下の説明では、セルを要素とも表現する場合がある。
まず、図2から図6を用いて、FDTD法における電界と磁界の計算について説明する。図2は、1次元FDTD法の一例を示す図である。図2の計算順序10に示すように、1次元FDTD法では、電界Ex(t1)を計算するには、同じ位置の時刻が1ステップ前の電界Ex(t0)および磁界Hx(t0)と、時刻が1ステップ前で位置が−1方向の磁界Hx(t0)とが必要となる。また、磁界Hx(t1)を計算するには、同じ位置の1ステップ前の磁界Hx(t0)と、同じ位置および位置が+1方向の電界Ex(t1)とが必要となる。この関係を模式的に示すと、グラフ11のように示すことができる。
図3は、1次元FDTD法における電界と磁界の関係の一例を示す図である。図3に示す表12は、1次元FDTD法における更新対象と、必要なデータとを対応付けた表である。表12では、位置をx、時刻をtで表すと、更新対象が位置x,時刻tの電界Eである場合、位置x,時刻t−1の電界Eおよび磁界Hと、位置x−1,時刻t−1の磁界Hとが必要となることを表す。また、表12では、更新対象が位置x,時刻tの磁界Hである場合、位置x,時刻t−1の磁界Hと、位置x,時刻tの電界Eと、位置x+1,時刻tの電界Eとが必要となることを表す。
図4は、2次元FDTD法の一例を示す図である。図4の依存関係13に示すように、2次元FDTD法では、電界Eを計算するには、同じ位置の時刻が1ステップ前の電界Eおよび磁界Hと、x軸y軸それぞれ−1方向の時刻が1ステップ前の磁界Hとが必要となる。また、依存関係14に示すように、磁界Hを計算するには、同じ位置の時刻が1ステップ前の磁界Hと、x軸y軸それぞれ+1方向の電界Eとが必要となる。計算順序15は、依存関係13,14を座標(0,0)〜(7,7)の領域に対して適用した場合を模式的に示したものである。なお、計算順序15では、電界Eと磁界Hとの更新は、1/2ステップずれているものとする。つまり、時刻t=1では、電界Eの更新後に磁界Hを更新することを表している。
図5は、2次元FDTD法における電界と磁界の関係の一例を示す図である。図5に示す表16は、2次元FDTD法における更新対象と、必要なデータとを対応付けた表である。表16では、位置を(x,y)、時刻をtで表す。このとき、更新対象が位置(x,y),時刻tの電界Eである場合、位置(x,y),時刻t−1の電界Eおよび磁界Hと、位置(x−1,y),時刻t−1の磁界Hと、位置(x,y−1),時刻t−1の磁界Hとが必要となることを表す。また、表16では、更新対象が位置(x,y),時刻tの磁界Hである場合、位置(x,y),時刻t−1の磁界Hと、位置(x,y),時刻tの電界Eと、位置(x+1,y),時刻tの電界Eと、位置(x,y+1),時刻tの電界Eとが必要となることを表す。
図6は、電界の更新後に磁界を更新する場合のコードの一例を示す図である。図6に示すコード17は、2次元FDTD法における解析対象の領域について、時刻tの電界Eを全セルについて更新した後で、時刻tの磁界Hを全セルについて更新する場合のコードの一例である。なお、コード17において、α,β,γは定数である。コード17では、1つのセルについて、電界Eの更新にデータを5回リードし1回ライトするとともに、演算を4回行う。各セルのデータが4バイトであるとすると、演算4回につき24バイトのメモリアクセスが生じる。つまり、演算1回あたり6バイトのメモリアクセスが生じる。
同様に、コード17では、1つのセルについて、磁界Hの更新にデータを5回リードし2回ライトするとともに、演算を8回行う。各セルのデータが4バイトであるとすると、演算8回につき28バイトのメモリアクセスが生じる。つまり、演算1回あたり3.5バイトのメモリアクセスが生じる。これに対して、GPU(Graphics Processing Unit)のメモリ性能および演算性能は、例えば、NVIDIA(登録商標)社のP100では、メモリ性能が732GB/s、演算性能が10.6Tflopsである。つまり、P100では、演算1回あたり0.069バイトのメモリアクセスとなる。このように、FDTD法が要求するメモリ性能は、既存のGPUと比べて遥かに大きく、FDTD法ではメモリアクセスがボトルネックとなる。
次に、図7を用いて階層型のメモリ構造について説明する。図7は、階層型メモリアーキテクチャの一例を示す図である。図7に示すように、近年のコンピュータは、コアとメインメモリとの間に複数階層のキャッシュメモリを備える。この様な階層的なメモリ構造では、各メモリのアクセス速度および容量が異なる。階層的なメモリ構造では、低速なメインメモリからデータを読み込むときに、高速なキャッシュメモリにデータが格納される。つまり、キャッシュメモリにデータがある場合には、高速にデータを読み込むことが可能である。なお、暫くの間参照されなかったキャッシュメモリのデータは、他のデータで上書きされる。図7の例では、L1キャッシュに格納されているデータは最も高速に読み込むことができるが、L1〜LLキャッシュ内に格納されていないデータは、メインメモリから読み込むことになり、ボトルネックとなる。
続いて、情報処理装置100の構成について説明する。図1に示すように、情報処理装置100は、通信部110と、表示部111と、操作部112と、記憶部120と、制御部130とを有する。なお、情報処理装置100は、図1に示す機能部以外にも既知のコンピュータが有する各種の機能部、例えば各種の入力デバイスや音声出力デバイス等の機能部を有することとしてもかまわない。
通信部110は、例えば、NIC(Network Interface Card)等によって実現される。通信部110は、図示しないネットワークを介して他の情報処理装置と有線または無線で接続され、他の情報処理装置との間で情報の通信を司る通信インタフェースである。通信部110は、例えば、他の端末から解析対象のデータを受信する。また、通信部110は、他の端末に、解析結果を送信する。
表示部111は、各種情報を表示するための表示デバイスである。表示部111は、例えば、表示デバイスとして液晶ディスプレイ等によって実現される。表示部111は、制御部130から入力された表示画面等の各種画面を表示する。
操作部112は、情報処理装置100のユーザから各種操作を受け付ける入力デバイスである。操作部112は、例えば、入力デバイスとして、キーボードやマウス等によって実現される。操作部112は、ユーザによって入力された操作を操作情報として制御部130に出力する。なお、操作部112は、入力デバイスとして、タッチパネル等によって実現されるようにしてもよく、表示部111の表示デバイスと、操作部112の入力デバイスとは、一体化されるようにしてもよい。
記憶部120は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、ハードディスクや光ディスク等の記憶装置によって実現される。記憶部120は、電界記憶部121と、磁界記憶部122とを有する。また、記憶部120は、制御部130での処理に用いる情報を記憶する。なお、本実施例では、電界記憶部121および磁界記憶部122は、メインメモリに格納した状態を想定して説明するが、FDTD法の演算が完了した後のデータは、ハードディスクやフラッシュメモリ等の記憶装置に記憶するようにしてもよい。
電界記憶部121は、FDTD法における解析対象の領域について、セル(要素)ごとに電界成分を記憶する。
磁界記憶部122は、FDTD法における解析対象の領域について、セル(要素)ごとに磁界成分を記憶する。
制御部130は、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)等によって、内部の記憶装置に記憶されているプログラムがRAMを作業領域として実行されることにより実現される。また、制御部130は、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現されるようにしてもよい。
制御部130は、設定部131と、更新部132とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部130の内部構成は、図1に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
設定部131は、例えば、ユーザから入力された解析対象の空間のパラメータを更新部132に設定する。パラメータは、例えば、空間の透磁率、導電率、電界および磁界の初期状態、電界および磁界の発信源に対応する更新式等が挙げられる。また、設定部131は、電界記憶部121および磁界記憶部122の各セルに対応する配列の初期化を行う。
更新部132は、設定部131による配列の初期化が完了すると、解析対象の空間の各セルについて、電界成分(電界E)および磁界成分(磁界H)の更新を開始する。なお、以下の説明では、電界Eおよび磁界Hを電界成分および磁界成分ともいう。また、以下の説明では、電界成分および磁界成分を纏めて電磁界成分ともいう。ここで、図8から図10を用いて更新順序の制約について説明する。
図8は、更新順序の制約の一例を示す図である。図8に示すように、1次元FDTD法では、座標xの注目セルの更新前に、座標x+1のセルを先に更新する。2次元FDTD法では、座標(x,y)の注目セルの更新前に、座標(x+1,y)、座標(x,y+1)のセルを先に更新する。3次元FDTD法では、座標(x,y,z)の注目セルの更新前に、座標(x+1,y,z)、座標(x,y+1,z)、座標(x,y,z+1)のセルを先に更新する。すなわち、更新部132は、磁界の更新式の依存関係の順にセルを更新するように更新順序に制約を設ける。例えば、(0,0)〜(2,2)で表す領域では、(2,2)→(1,2)→(0,2)→(2,1)→(1,1)→(0,1)→(2,0)→(1,0)→(0,0)の順となる。更新部132は、この様に更新順序に制約を設けることで、セルごとに電界と磁界の更新を行うことができる。
図9は、セルの更新順序のパターンの一例を示す図である。図9に示すように、セルの更新順序のパターンは、例えば「パターン1」から「パターン5」に示すような順序が考えられる。また、「パターン3」では、同じ矢印のセルの更新に順序はなく、同じ矢印に含まれるセルであれば、どのセルから更新してもよい。すなわち、更新部132は、解析対象の領域における座標の値が最大値であるセルから、座標の値が最小値であるセルに向かう順にセルの更新を行う。
図10は、セルの更新順序のパターンの組み合わせの一例を示す図である。図10に示すように、図9に示すセルの更新順序のパターンは組み合わせてもよい。図10の例は、セルを複数含む処理ブロック単位の更新順序は「パターン5」とし、処理ブロック内のセルの更新順序は「パターン2」とした場合である。
更新部132は、電磁界成分の更新を開始すると、全セルの電磁界成分の更新が完了したか否かを判定する。更新部132は、全セルの電磁界成分の更新が完了していないと判定した場合には、磁界の更新式の依存関係順に更新していないセルを1つ選択する。すなわち、更新部132は、図9に示すセルの更新順序のパターンに従って、更新していないセルを1つ選択する。更新部132は、図8に示すセルの更新順序の制約に従って、選択したセルの電界成分の更新を行い、その後、当該セルの磁界成分の更新を行って、全セルの電磁界成分の更新が完了したか否かの判定に戻る。
一方、更新部132は、全セルの電磁界成分の更新が完了したと判定した場合には、全ステップの計算が終了したか否かを判定する。更新部132は、全ステップの計算が終了していないと判定した場合には、時刻のステップを1つ進めて、次のステップについて全セルの電磁界成分の更新を行う。また、更新部132は、全ステップの計算が終了した場合には、電磁界成分の更新を終了する。
ここで、図11および図12を用いて、電磁界成分の更新方法ごとのメモリ状態の遷移について説明する。図11は、電界の更新後に磁界を更新する場合のメモリ状態の遷移の一例を示す図である。つまり、図11は、メモリアクセスがボトルネックとなっている従来の更新の手法に対応する。図11では、CPU20とキャッシュメモリ21とメインメモリ22とを有する場合において、処理の流れに応じたメモリ状態の遷移を表す。CPU20は、メインメモリ22から電界データEc1および磁界データHc1を読み込むと、電界データEc1および磁界データHc1は、キャッシュメモリ21にキャッシュされる。CPU20は、キャッシュメモリ21に更新した電界データEc2を格納する。キャッシュメモリ21の電界データEc2は、メインメモリ22の電界データEc1を上書きして更新する。
次に、CPU20は、メインメモリ22から電界データEc3および磁界データHc2を読み込むと、電界データEc3および磁界データHc2は、キャッシュメモリ21にキャッシュされる。このとき、キャッシュメモリ21に格納された電界データEc2は、電界データEc3で上書きされる。CPU20は、キャッシュメモリ21に更新した電界データEc4を格納する。以後、CPU20は、メインメモリ22の電界データが全て更新されるまで処理を繰り返す。
CPU20は、電界成分の更新が完了すると、磁界成分の更新を開始する。CPU20は、メインメモリ22から電界データEc2,Ec4および磁界データHc1を読み込むと、電界データEc2,Ec4および磁界データHc1は、キャッシュメモリ21にキャッシュされる。すなわち、CPU20は、電界成分の更新時に一度キャッシュメモリ21に格納された電界データEc2,Ec4がその後の処理で上書きされるため、再度メインメモリ22から読み込んでいる。CPU20は、キャッシュメモリ21に更新した磁界データHc3を格納する。キャッシュメモリ21の磁界データHc3は、メインメモリ22の磁界データHc1を上書きして更新する。このように、図11の例では、電界の更新および磁界の更新それぞれでセルの電磁界成分を低速なメインメモリ22から読み込むことになる。
図12は、電界と磁界を注目セルごとに更新する場合のメモリ状態の遷移の一例を示す図である。図12は、本実施例の更新の手法に対応する。図12では、CPU20aとキャッシュメモリ21とメインメモリ22とを有する場合において、処理の流れに応じたメモリ状態の遷移を表す。なお、CPU20aは、更新部132と同様の処理も行うものとする。
CPU20aは、メインメモリ22から電界データEr1および磁界データHr1,Hr2を読み込むと、電界データEr1および磁界データHr1,Hr2は、キャッシュメモリ21にキャッシュされる。CPU20aは、キャッシュメモリ21に更新した電界データEr2および磁界データHr3を格納する。キャッシュメモリ21の電界データEr2および磁界データHr3は、それぞれメインメモリ22の電界データEr1および磁界データHr1を上書きして更新する。つまり、CPU20aは、注目セルのキャッシュされた電界成分が電界データEr2に更新された直後に、キャッシュメモリ21に格納された電界データEr2を参照して磁界成分を磁界データHr3に更新する。
次に、CPU20aは、メインメモリ22から電界データEr3および磁界データHr4を読み込むと、電界データEr3および磁界データHr4は、キャッシュメモリ21にキャッシュされる。このとき、キャッシュメモリ21に格納された磁界データHr3は、磁界データHr4で上書きされる。CPU20aは、キャッシュメモリ21に更新した電界データEr4および磁界データHr5を格納する。このとき、キャッシュメモリ21に格納された電界データEr3および磁界データHr2は、それぞれ電界データEr4および磁界データHr5で上書きされる。以後、CPU20aは、メインメモリ22の電界データおよび磁界データが全て更新されるまで処理を繰り返す。このように、図12の例では、キャッシュメモリ21に格納された電界データおよび磁界データを参照するので、低速なメインメモリ22へのアクセス回数を低減できる。また、図12の例では、一度のキャッシュで電磁界成分の更新ができる。
図13は、電界と磁界を注目セルごとに更新する場合のコードの一例を示す図である。図13に示すコード23は、2次元FDTD法における解析対象の領域について、時刻tの電界Eと磁界Hとを注目セルごとに更新する場合のコードの一例である。なお、コード23において、α,β,γは定数である。コード23では、1つのセルについて、図6に示すコード17と同じ回数のメモリアクセスが発生するが、電界成分の更新時に用いたデータは、磁界成分の更新時にキャッシュメモリ21から読み込めるので、その分のメモリアクセスが高速化できる。
言い換えると、更新部132は、N次元の所定の座標の+1方向のセルの更新を行い、更新した値をキャッシュメモリ21に格納し、更新した値を格納した後に、格納した値を用いて、該所定の座標のセルの更新を行う。また、更新部132は、所定の座標のセルの電界成分を更新し、所定の座標のセルおよび所定の座標の+1方向のセルの更新後の電界成分と、所定の座標のセルの更新前の磁界成分とを用いて、所定の座標のセルの磁界成分を更新する。また、更新部132は、解析対象の領域における座標の値が最大値であるセルから、座標の値が最小値であるセルに向かう順にセルの更新を行う。
次に、実施例1の情報処理装置100の動作について説明する。図14は、実施例1の更新処理の一例を示すフローチャートである。
設定部131は、電界記憶部121および磁界記憶部122の各セルに対応する配列の初期化を行う(ステップS1)。
更新部132は、設定部131による配列の初期化が完了すると、解析対象の空間の各セルについて、電磁界成分の更新を開始する。更新部132は、全セルの電磁界成分の更新が完了したか否かを判定する(ステップS2)。更新部132は、全セルの電磁界成分の更新が完了していないと判定した場合には(ステップS2:否定)、磁界の更新式の依存関係順に更新していないセルを1つ選択する(ステップS3)。
更新部132は、選択したセルの電界成分を更新する(ステップS4)。更新部132は、選択したセルの磁界成分を更新し(ステップS5)、ステップS2に戻る。
一方、更新部132は、全セルの電磁界成分の更新が完了したと判定した場合には(ステップS2:肯定)、全ステップの計算が終了したか否かを判定する(ステップS6)。更新部132は、全ステップの計算が終了していないと判定した場合には(ステップS6:否定)、時刻のステップを1つ進めて、ステップS2に戻る。
更新部132は、全ステップの計算が終了したと判定した場合には(ステップS6:肯定)、解析対象の空間の各セルについて、電磁界成分の更新を終了する。これにより、情報処理装置100は、FDTD法における更新時のメモリアクセス回数を削減できる。また、情報処理装置100は、各セルの電磁界成分の更新を、メインメモリの1回のスキャン走査で行うことができる。
なお、上記実施例1では、キャッシュメモリ21を1階層として説明したが、これに限定されない。例えば、L1キャッシュからL3キャッシュまでの3階層のキャッシュメモリのような多階層のキャッシュメモリを用いてもよい。
このように、情報処理装置100は、N次元FDTD法の処理を行う情報処理装置である。つまり、情報処理装置100は、N次元の所定の座標の+1方向のセルの更新を行い、更新した値をキャッシュメモリに格納し、更新した値を格納した後に、格納した値を用いて、該所定の座標のセルの更新を行う。その結果、情報処理装置100は、FDTD法における更新時のメモリアクセス回数を削減できる。
また、情報処理装置100は、所定の座標のセルの電界成分を更新し、所定の座標のセル、および、所定の座標の+1方向のセルの更新後の電界成分と、所定の座標のセルの更新前の磁界成分とを用いて、所定の座標のセルの磁界成分を更新する。その結果、情報処理装置100は、電磁界成分の更新時に用いるデータの一部をキャッシュメモリから取得できる。
また、情報処理装置100は、解析対象の領域における座標の値が最大値であるセルから、座標の値が最小値であるセルに向かう順にセルの更新を行う。その結果、情報処理装置100は、電磁界成分の更新時に用いるデータの一部をキャッシュメモリから取得できる。
上記実施例1では、CPU20aにおける電磁界成分の更新について説明したが、GPUを用いた電磁界成分の更新に適用してもよく、この場合の実施の形態につき、実施例2として説明する。なお、実施例1の情報処理装置100と同一の構成には同一符号を付すことで、その重複する構成および動作の説明については省略する。
図15は、実施例2の情報処理装置の構成の一例を示すブロック図である。図15に示す情報処理装置200は、実施例1の情報処理装置100と比較して、制御部130に代えて制御部230を有し、さらに、GPU240を有する。また、制御部230は、制御部130と比較して、設定部131に代えて設定部231を有し、更新部132を除いている。
設定部231は、実施例1の設定部131と同様に、例えば、ユーザから入力された解析対象の空間のパラメータをGPU240に設定する。また、設定部231は、電界記憶部121および磁界記憶部122の各セルに対応する配列E,Hと時刻tの初期化を行う。設定部231は、初期化を行った電界データおよび磁界データをGPU240に出力する。なお、電界データおよび磁界データは、電界記憶部121および磁界記憶部122からGPU240にDMA(Direct Memory Access)転送してもよい。
設定部231は、電界データおよび磁界データをGPU240に出力すると、GPU関数を呼び出して、GPU240にE,H更新処理の実行を指示する。設定部231は、GPU240から更新終了の通知を受け付けると、電界記憶部121および磁界記憶部122を参照し、解析結果を、例えば表示部111に表示する。なお、GPU240におけるE,H更新処理後の電界データおよび磁界データは、例えばDMA転送を用いて、GPU240から電界記憶部121および磁界記憶部122に格納される。
ここで、図16を用いてGPUの構成について説明する。図16は、GPUの構成の一例を示す図である。図16のGPU30は、GPU240のハードウェア構成の一例である。GPU30は、グローバルメモリ31と、複数のストリーミングプロセッサ32とを有する。ストリーミングプロセッサ32は、複数のコア33と、各コア33が共有するシェアードメモリ34とを有する。なお、グローバルメモリ31は、オフチップメモリとも呼ばれ、低速であるが大容量のメモリである。シェアードメモリ34は、オンチップメモリとも呼ばれ、高速であるが小容量のメモリである。
図16のグリッド35は、GPU30に対応する階層的なスレッド構造の一例である。グリッド35は、例えば、CUDA(Compute Unified Device Architecture)(登録商標)の階層的なスレッド構造の一例である。グリッド35は、複数のブロック36を有する。各ブロック36は、複数のスレッド37を有する。同じブロック36内の各スレッド37は、同じシェアードメモリ34上のデータの共有と実行中の同期が可能である。なお、スレッド37の数は、コア33の数よりも多い。また、ブロック36は、非同期にストリーミングプロセッサ32に割り当てられる。このため、ブロック36間のスレッド37で同期をとるには、一度GPU30の処理を終了させることになる。すなわち、処理中のシェアードメモリ34のデータは、アクセス出来なくなるので、複数のブロック36からアクセス可能なグローバルメモリ31に書き込んでおくことになる。
図15の説明に戻って、GPU240は、グローバルメモリ241と、複数のブロック242とを有する。グローバルメモリ241は、電界241aと、磁界241bと、カウンタ241cと、管理配列241dといった領域を有する。グローバルメモリ241は、実施例1のメインメモリ22に相当し、図16のグローバルメモリ31に対応する。
電界241aには、GPU240でE,H更新処理を行う際に、電界データが格納される。電界データは、電界成分の更新に伴って随時更新される。電界241aは、複数のセルを含む処理ブロック単位で、各ブロック242によって更新される。
磁界241bには、GPU240でE,H更新処理を行う際に、磁界データが格納される。磁界データは、磁界成分の更新に伴って随時更新される。磁界241bは、電界241aと同様に、複数のセルを含む処理ブロック単位で、各ブロック242によって更新される。
カウンタ241cは、排他制御のカウンタであり、カウンタ値を用いて各ブロック242が更新する処理ブロックを指定する。つまり、カウンタ241cは、非同期に起動されるブロック242に、動的に磁界の更新式の依存関係の順に処理ブロックを割り当てるために用いる。すなわち、カウンタ241cは、全てのブロック242が1つのカウンタを共有する。
管理配列241dは、電界成分および磁界成分それぞれについて、更新状況を管理する配列である。管理配列241dは、電界241aおよび磁界241bの処理ブロックごとに時刻tの値を持つ。つまり、管理配列241dは、他のブロック242の更新状況を確認し、待機できるようにするものである。すなわち、電界成分の更新では磁界成分を、磁界成分の更新では電界成分を、他のブロック242の担当領域(処理ブロック)から参照するため、参照先が更新されたか否かを表すフラグとして、管理配列241dを用いる。
ブロック242は、図16のGPU30のハードウェア構成のうち、ストリーミングプロセッサ32に対応する。つまり、ブロック242は、グリッド35の階層的スレッド構造のうち、ブロック36に対応する。ブロック242は、図16のスレッド37に対応するスレッドT0〜T2と、図16のシェアードメモリ34に対応するシェアードメモリ242aとを有する。シェアードメモリ242aは、スレッドT0〜T2からアクセス可能なメモリであり、実施例1のキャッシュメモリ21に相当する。
また、各ブロック242は、実施例1の更新部132に相当し、設定部231からの指示に応じて、解析対象の空間の各処理ブロックについて、電界成分および磁界成分の更新を開始する。すなわち、ブロック242は、複数のセルを含む処理ブロック単位で磁界の更新式の依存関係順に電磁界成分を更新する。つまり、実施例2における各処理ブロックの更新順序のパターンは、実施例1における各セルの更新順序のパターンに対応する。
ブロック242は、設定部231のGPU関数の呼び出しに応じて、電磁界成分の更新処理(E,H更新処理)を実行する。ブロック242は、カウンタ241cの排他的インクリメント操作を実行する。つまり、カウンタ241cは、あるブロック242がインクリメント前のカウンタ値を取得して、カウンタ241cをインクリメントするまで、他のブロック242からのアクセスを受け付けない。
ブロック242は、全ての処理ブロック(要素)の更新が終了したか否かを判定する。ブロック242は、全ての処理ブロックの更新が終了したと判定した場合には、時刻tをインクリメントする。ブロック242は、時刻tが所定の時刻T以下であるか否かを判定する。ブロック242は、時刻tが所定の時刻T以下であると判定した場合には、インクリメントした時刻tについてE,H更新処理を実行する。ブロック242は、時刻tが所定の時刻Tより大きいと判定した場合には、E,H更新処理を終了する。
一方、ブロック242は、全ての処理ブロックの更新が終了していないと判定した場合には、カウンタ241cのカウンタ値をもとに計算座標を算出する。ブロック242は、管理配列241dを参照し、注目処理ブロックの電界成分の更新において参照する処理ブロックの更新が完了したか否かを判定する。ブロック242は、参照する処理ブロックの更新が完了していないと判定した場合には、引き続き、管理配列241dを参照する。
ブロック242は、参照する処理ブロックの更新が完了したと判定した場合には、注目処理ブロックの電界成分を更新する。ブロック242は、注目処理ブロックの電界成分の更新が完了すると、管理配列241dを参照し、注目処理ブロックの磁界成分の更新において参照する処理ブロックの更新が完了したか否かを判定する。ブロック242は、参照する処理ブロックの更新が完了していないと判定した場合には、引き続き、管理配列241dを参照する。
ブロック242は、参照する処理ブロックの更新が完了したと判定した場合には、注目処理ブロックの磁界成分を更新する。ブロック242は、注目処理ブロックの磁界成分を更新すると、当該注目処理ブロックの電磁界成分の更新が完了したとして、次の処理ブロックのE,H更新処理に進む。
ここで、図17を用いて、電界の更新後に磁界を更新する従来の更新手法について説明する。図17は、GPUにおける電界の更新後に磁界を更新する場合の一例を示す図である。図17では、CPU38とGPU39とが電磁界成分の更新処理を行う。GPU39は、グローバルメモリ40とブロック41とを有する。また、図17の説明では、処理ブロックを「ブロック0」〜「ブロック3」の4つの処理ブロックとした場合とする。
CPU38は、電磁界成分に対応する配列E,Hを初期化し、時刻t=0に設定する(ステップS11)。CPU38は、初期化したデータをGPU39に出力する。GPU39は、初期化したデータをグローバルメモリ40に格納する。CPU38は、GPU関数を呼び出す(ステップS12)。GPU39は、呼び出しに応じて電界成分を更新する(ステップS13)。このとき、GPU39は、時刻tの電界成分の「ブロック0」〜「ブロック3」を、それぞれブロック41が処理し、グローバルメモリ40の同じ領域に、時刻t+1の電界成分として格納する。
CPU38は、電界成分の更新が完了すると、再度、GPU関数を呼び出す(ステップS14)。GPU39は、呼び出しに応じて磁界成分を更新する(ステップS15)。GPU39は、時刻tの磁界成分の「ブロック0」〜「ブロック3」を、それぞれブロック41が処理し、グローバルメモリ40の同じ領域に、時刻t+1の磁界成分として格納する。このとき、磁界成分の更新では、他のブロック41が更新した電界成分の値を参照する。なお、電界成分の更新では、同様に、他のブロック41が更新した磁界成分の値を参照する。従って、図17の例では、データの整合性をとるために、電界成分の更新と磁界成分の更新とが別のGPU関数に分かれることになる。すなわち、図17の例では、電界成分と磁界成分とをそれぞれ更新する2つのGPU関数を、時刻t≦Tとなるまで繰り返すことになる(ステップS16)。
このように、図17の例では、電磁界成分の更新において、全ての要素(処理ブロック)に対してグローバルメモリ40からの読み書きが必要となってくる。つまり、図17の例では、グローバルメモリ40(オフチップメモリ)のバンド幅に律速されることになる。これに対し、実施例2では、電磁界成分の更新を同じGPU関数内で行うことで、グローバルメモリ40へのアクセス回数を削減して高速化する。
続いて、図18から図27を用いて、実施例2の更新処理におけるメモリ状態の遷移について説明する。図18から図27は、更新処理におけるメモリ状態の遷移の一例を示す図である。図18から図27の例では、ブロック242−1とブロック242−2の2つのブロック242がE,H更新処理を行う場合について説明する。また、管理配列241dは、電界の管理配列241d−Eと、磁界の管理配列241d−Hとを設ける。なお、図18から図27の電界241aおよび磁界241bは、9つの処理ブロックを有するものとする。各処理ブロックは、一番右上の処理ブロックを「ブロック0」、「ブロック0」の左隣を「ブロック1」、「ブロック0」の下を「ブロック2」、「ブロック1」の左隣を「ブロック3」、「ブロック1」の下を「ブロック4」とする。また、各処理ブロックは、「ブロック2」の下を「ブロック5」、「ブロック3」の下を「ブロック6」、「ブロック4」の下を「ブロック7」、「ブロック6」の下を「ブロック8」とする。
図18に示すように、ブロック242−1のスレッドT0は、カウンタ241cをインクリメントする(ステップS21)。カウンタ241cは、カウンタ値が「0」から「1」に変わる。
図19に示すように、ブロック242−1のスレッドT0は、カウンタ241cからインクリメント前のカウンタ値「0」を取得してシェアードメモリ242a−1に格納する(ステップS22)。
図20に示すように、ブロック242−1は、電界241aおよび磁界241bの処理ブロックのうち、最も座標値が大きい「ブロック0」の電界データおよび磁界データをシェアードメモリ242a−1に格納する(ステップS23)。また、ブロック242−2のスレッドT0は、カウンタ241cをインクリメントする(ステップS24)。カウンタ241cは、カウンタ値が「1」から「2」に変わる。
図21に示すように、ブロック242−2は、電界241aおよび磁界241bの処理ブロックのうち、更新順序の制約に基づいて「ブロック0」の左隣の「ブロック1」の電界データおよび磁界データをシェアードメモリ242a−2に格納する(ステップS25)。
図22に示すように、ブロック242−1は、磁界の管理配列241d−Hを参照する。ブロック242−1は、図中の点線で囲った処理ブロックに対応する時刻がt=0である場合、「ブロック0」の時刻t=1の電界の算出の際に参照する処理ブロックの更新が完了していると判定する(ステップS26)。同様に、ブロック242−2は、磁界の管理配列241d−Hを参照する。ブロック242−2は、図中の破線で囲った処理ブロックに対応する時刻がt=0である場合、「ブロック1」の時刻t=1の電界の算出の際に参照する処理ブロックの更新が完了していると判定する(ステップS27)。すなわち、ブロック242−1は、磁界の管理配列241d−Hの点線で囲った処理ブロックに対応する時刻がtならば、時刻t+1の電界が計算可能となる。また、ブロック242−2は、磁界の管理配列241d−Hの破線で囲った処理ブロックに対応する時刻がtならば、時刻t+1の電界が計算可能となる。
図23に示すように、ブロック242−1およびブロック242−2は、電界241aの処理ブロック「ブロック0」および「ブロック1」について、それぞれスレッドT0〜T2により処理ブロック内のセルの更新を行う(ステップS28)。すなわち、ブロック242−1およびブロック242−2は、複数のセルを含む領域(処理ブロック)に対応し、該領域内を複数のスレッドが並列処理することでセルを更新する。このとき、ブロック242−1およびブロック242−2は、担当領域外の処理ブロックに含まれるセルの磁界データを用いる場合、担当領域外の処理ブロックのセルから磁界データを取得する。図23では、ブロック242−2のスレッドT0は、処理ブロック「ブロック1」の電界データのうち左下の角のセルを更新する際に、グローバルメモリ241の磁界241bから磁界データを取得する(ステップS29)。
図24に示すように、ブロック242−1は、電界データの計算が完了すると、シェアードメモリ242a−1からグローバルメモリ241の電界241aの処理ブロック「ブロック0」に電界データを書き込んで更新する。同様に、ブロック242−2は、電界データの計算が完了すると、シェアードメモリ242a−2からグローバルメモリ241の電界241aの処理ブロック「ブロック1」に電界データを書き込んで更新する(ステップS30)。また、ブロック242−1は、電界の管理配列241d−Eの処理ブロック「ブロック0」に対応する箇所を時刻t=1に更新する。同様に、ブロック242−2は、電界の管理配列241d−Eの処理ブロック「ブロック1」に対応する箇所を時刻t=1に更新する(ステップS31)。
図25に示すように、ブロック242−1は、電界の管理配列241d−Eを参照する。ブロック242−1は、図中の点線で囲った処理ブロックに対応する時刻がt=1である場合、「ブロック0」の時刻t=1の磁界の算出の際に参照する処理ブロックの更新が完了していると判定する(ステップS32)。同様に、ブロック242−2は、電界の管理配列241d−Eを参照する。ブロック242−2は、図中の破線で囲った処理ブロックに対応する時刻がt=1である場合、「ブロック1」の時刻t=1の磁界の算出の際に参照する処理ブロックの更新が完了していると判定する(ステップS33)。すなわち、ブロック242−1は、電界の管理配列241d−Eの点線で囲った処理ブロックに対応する時刻がt+1ならば、時刻t+1の磁界が計算可能となる。また、ブロック242−2は、電界の管理配列241d−Eの破線で囲った処理ブロックに対応する時刻がt+1ならば、時刻t+1の磁界が計算可能となる。
図26に示すように、ブロック242−1およびブロック242−2は、磁界241bの処理ブロック「ブロック0」および「ブロック1」について、それぞれスレッドT0〜T2により処理ブロック内のセルの更新を行う(ステップS34)。このとき、ブロック242−1およびブロック242−2は、担当領域外の処理ブロックに含まれるセルの電界データを用いる場合、担当領域外の処理ブロックのセルから磁界データを取得する。図26では、ブロック242−2のスレッドT2は、処理ブロック「ブロック1」の磁界データのうち右下の角のセルを更新する際に、グローバルメモリ241の電界241aから電界データを取得する(ステップS35)。
図27に示すように、ブロック242−1は、磁界データの計算が完了すると、シェアードメモリ242a−1からグローバルメモリ241の磁界241bの処理ブロック「ブロック0」に磁界データを書き込んで更新する。同様に、ブロック242−2は、磁界データの計算が完了すると、シェアードメモリ242a−2からグローバルメモリ241の磁界241bの処理ブロック「ブロック1」に磁界データを書き込んで更新する(ステップS36)。
また、ブロック242−1は、磁界の管理配列241d−Hの処理ブロック「ブロック0」に対応する箇所を時刻t=1に更新する。同様に、ブロック242−2は、磁界の管理配列241d−Hの処理ブロック「ブロック1」に対応する箇所を時刻t=1に更新する(ステップS37)。すなわち、ブロック242−1およびブロック242−2は、カウンタ241cの値に基づいて、更新する処理ブロック(セル)を決定し、決定した処理ブロック(セル)の更新結果を管理配列241dに格納する。
ブロック242−1およびブロック242−2は、ステップS21〜S37を電界241aおよび磁界241bの全ての処理ブロックについて繰り返す。ブロック242−1およびブロック242−2は、その後、所定の時刻TまでステップS21〜S37を繰り返すことで、所定の時刻Tまでの解析結果を得ることができる。
図28は、3次元FDTD法における性能評価の一例を示す図である。図28では、GPUとして上述のP100を用いている。nは、入力サイズを示す。つまり、n×n×nの3次元FDTD法である。時刻tは、100ステップとしている。図28に示すように、従来のGPU実装である電界と磁界をそれぞれ更新する場合と比較して、実施例2のGPU実装である電界と磁界を同時に更新する場合は、1.10〜1.25倍の高速化を達成している。
続いて、実施例2の情報処理装置200の動作について説明する。図29は、実施例2の更新処理の一例を示すフローチャートである。
設定部231は、電界記憶部121および磁界記憶部122の各セルに対応する配列E,Hと時刻tの初期化を行う(ステップS51)。設定部231は、初期化を行った電界データおよび磁界データをGPU240に出力する(ステップS52)。設定部231は、電界データおよび磁界データをGPU240に出力すると、GPU関数を呼び出して、GPU240にE,H更新処理の実行を指示する(ステップS53)。
GPU240は、E,H更新処理を実行し(ステップS54)、E,H更新処理後の電界データおよび磁界データを電界記憶部121および磁界記憶部122に格納する。GPU240は、設定部231に対して更新終了を通知する(ステップS55)。
設定部231は、GPU240から更新終了の通知を受け付けると、電界記憶部121および磁界記憶部122を参照し、解析結果を、例えば表示部111に表示する。これにより、情報処理装置200は、FDTD法における更新時のメモリアクセス回数を削減できる。
ここで、図30を用いてGPU240におけるE,H更新処理を説明する。図30は、E,H更新処理の一例を示すフローチャートである。
GPU240のブロック242は、設定部231のGPU関数の呼び出しに応じて、E,H更新処理を実行する。ブロック242は、カウンタ241cの排他的インクリメント操作を実行する(ステップS541)。
ブロック242は、全ての処理ブロックの更新が終了したか否かを判定する(ステップS542)。ブロック242は、全ての処理ブロックの更新が終了していないと判定した場合には(ステップS542:否定)、カウンタ241cのカウンタ値をもとに計算座標を算出する(ステップS543)。ブロック242は、管理配列241dを参照し(ステップS544)、注目処理ブロックの電界成分の更新において参照する処理ブロックの更新が完了したか否かを判定する(ステップS545)。ブロック242は、参照する処理ブロックの更新が完了していないと判定した場合には(ステップS545:否定)、ステップS544に戻る。
ブロック242は、参照する処理ブロックの更新が完了したと判定した場合には(ステップS545:肯定)、注目処理ブロックの電界成分を更新する(ステップS546)。ブロック242は、注目処理ブロックの電界成分の更新が完了すると、管理配列241dを参照し(ステップS547)、注目処理ブロックの磁界成分の更新において参照する処理ブロックの更新が完了したか否かを判定する(ステップS548)。ブロック242は、参照する処理ブロックの更新が完了していないと判定した場合には(ステップS548否定)、ステップS547に戻る。
ブロック242は、参照する処理ブロックの更新が完了したと判定した場合には(ステップS548:肯定)、注目処理ブロックの磁界成分を更新し(ステップS549)、ステップS541に戻る。
一方、ブロック242は、ステップS542において、全ての処理ブロックの更新が終了したと判定した場合には(ステップS542:肯定)、時刻tをインクリメントする(ステップS550)。ブロック242は、時刻tが所定の時刻T以下であるか否かを判定する(ステップS551)。ブロック242は、時刻tが所定の時刻T以下であると判定した場合には(ステップS551:肯定)、ステップS541に戻り、インクリメントした時刻tについてE,H更新処理を実行する。ブロック242は、時刻tが所定の時刻Tより大きいと判定した場合には(ステップS551:否定)、更新処理後の電界データおよび磁界データを電界記憶部121および磁界記憶部122に格納してE,H更新処理を終了する。また、ブロック242は、設定部231に更新終了を通知する。これにより、情報処理装置200は、FDTD法における更新時のメモリアクセス回数を削減できる。
なお、上記実施例2では、NVIDIA社のGPUの構成を一例として説明したが、これに限定されない。例えば、シェアードメモリ242aが複数の階層を有するような構成であってもよい。また、AMD(登録商標)社のGPUのように、コンピュートユニット群とL1キャッシュとの組を複数持つシェーダエンジンと、各コンピュートユニット群からアクセス可能なL2キャッシュやメインメモリを有するような構成であってもよい。なお、コンピュートユニットは、上述のシェアードメモリ242aに相当するローカルデータシェアと呼ばれる高速メモリを有する。
このように、情報処理装置200は、複数の更新部に対応するブロック242と、更新するセル(処理ブロック)の排他制御を行うカウンタと、セル(処理ブロック)の更新状況を管理する管理配列とを有する。また、情報処理装置200は、カウンタの値に基づいて、更新するセル(処理ブロック)を決定し、決定したセル(処理ブロック)の更新結果を管理配列に格納する。その結果、情報処理装置200は、並列処理を行う場合であってもFDTD法における更新時のメモリアクセス回数を削減できる。
また、情報処理装置200では、更新部に対応するブロック242は、ストリーミングプロセッサ32に対応するブロック36であり、キャッシュメモリ21は、ストリーミングプロセッサ32のシェアードメモリ242aである。その結果、情報処理装置200は、GPUを用いたFDTD法における更新時のメモリアクセス回数を削減できる。
また、情報処理装置200では、カウンタ241cおよび管理配列241dは、複数のブロック242からアクセス可能なグローバルメモリ241に配置される。その結果、情報処理装置200は、各ブロック242に適切に電磁界成分の更新処理を割り振ることができる。
また、情報処理装置200では、ブロック242は、複数のセルを含む領域(処理ブロック)に対応し、該領域内を複数のスレッドが並列処理することでセルを更新する。その結果、情報処理装置200は、コア33の利用効率を上げて処理を高速化できる。
なお、図示した各部の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各部の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、設定部131と更新部132とを統合してもよい。また、図示した各処理は、上記の順番に限定されるものでなく、処理内容を矛盾させない範囲において、同時に実施してもよく、順序を入れ替えて実施してもよい。
さらに、各装置で行われる各種処理機能は、CPU(またはMPU、MCU(Micro Controller Unit)等のマイクロ・コンピュータ)上で、その全部または任意の一部を実行するようにしてもよい。また、各種処理機能は、CPU(またはMPU、MCU等のマイクロ・コンピュータ)で解析実行されるプログラム上、またはワイヤードロジックによるハードウェア上で、その全部または任意の一部を実行するようにしてもよいことは言うまでもない。
ところで、上記の各実施例で説明した各種の処理は、予め用意されたプログラムをコンピュータで実行することで実現できる。そこで、以下では、上記の各実施例と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。図31は、情報処理プログラムを実行するコンピュータの一例を示す図である。
図31に示すように、コンピュータ300は、各種演算処理を実行するCPU301と、データ入力を受け付ける入力装置302と、モニタ303とを有する。また、コンピュータ300は、記憶媒体からプログラム等を読み取る媒体読取装置304と、各種装置と接続するためのインタフェース装置305と、他の情報処理装置等と有線または無線により接続するための通信装置306とを有する。また、コンピュータ300は、各種情報を一時記憶するRAM307と、ハードディスク装置308とを有する。また、各装置301〜308は、バス309に接続される。
ハードディスク装置308には、図1に示した設定部131および更新部132の各処理部と同様の機能を有する情報処理プログラムが記憶される。または、ハードディスク装置308には、図15に示した設定部231、および、GPU240のブロック242の各処理部と同様の機能を有する情報処理プログラムが記憶される。また、ハードディスク装置308には、図1または図15に示した電界記憶部121、磁界記憶部122、および、情報処理プログラムを実現するための各種データが記憶される。
入力装置302は、例えば、コンピュータ300の管理者から操作情報等の各種情報の入力を受け付ける。モニタ303は、例えば、コンピュータ300の管理者に対して表示画面等の各種画面を表示する。インタフェース装置305は、例えば印刷装置等が接続される。通信装置306は、例えば、図1または図15に示した通信部110と同様の機能を有し図示しないネットワークと接続され、他の情報処理装置と各種情報をやりとりする。
CPU301は、ハードディスク装置308に記憶された各プログラムを読み出して、RAM307に展開して実行することで、各種の処理を行う。また、これらのプログラムは、コンピュータ300を図1に示した設定部131および更新部132として機能させることができる。または、これらのプログラムは、コンピュータ300を図15に示した設定部231およびブロック242として機能させることができる。
なお、上記の情報処理プログラムは、必ずしもハードディスク装置308に記憶されている必要はない。例えば、コンピュータ300が読み取り可能な記憶媒体に記憶されたプログラムを、コンピュータ300が読み出して実行するようにしてもよい。コンピュータ300が読み取り可能な記憶媒体は、例えば、CD−ROMやDVD(Digital Versatile Disc)、USB(Universal Serial Bus)メモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、LAN等に接続された装置にこの情報処理プログラムを記憶させておき、コンピュータ300がこれらから情報処理プログラムを読み出して実行するようにしてもよい。
100,200 情報処理装置
110 通信部
111 表示部
112 操作部
120 記憶部
121 電界記憶部
122 磁界記憶部
130,230 制御部
131,231 設定部
132 更新部
240 GPU
241 グローバルメモリ
241a 電界
241b 磁界
241c カウンタ
241d 管理配列
242 ブロック
242a シェアードメモリ
T0,T1,T2 スレッド

Claims (9)

  1. N次元FDTD法の処理を行う情報処理装置であって、
    N次元の所定の座標の+1方向のセルの更新を行い、更新した値をキャッシュメモリに格納し、前記更新した値を格納した後に、前記格納した値を用いて、該所定の座標のセルの更新を行う更新部、
    を有することを特徴とする情報処理装置。
  2. 前記更新部は、前記所定の座標のセルの電界成分を更新し、前記所定の座標のセル、および、前記所定の座標の+1方向のセルの更新後の電界成分と、前記所定の座標のセルの更新前の磁界成分とを用いて、前記所定の座標のセルの磁界成分を更新する、
    ことを特徴とする請求項1に記載の情報処理装置。
  3. 前記更新部は、解析対象の領域における座標の値が最大値であるセルから、前記座標の値が最小値であるセルに向かう順にセルの更新を行う、
    ことを特徴とする請求項1または2に記載の情報処理装置。
  4. 複数の前記更新部と、
    更新するセルの排他制御を行うカウンタと、
    セルの更新状況を管理する管理配列と、を有し、
    前記更新部は、前記カウンタの値に基づいて、前記更新するセルを決定し、決定した前記セルの更新結果を前記管理配列に格納する、
    ことを特徴とする請求項1〜3のいずれか1つに記載の情報処理装置。
  5. 前記更新部は、ストリーミングプロセッサに対応するブロックであり、前記キャッシュメモリは、前記ストリーミングプロセッサのシェアードメモリである、
    ことを特徴とする請求項4に記載の情報処理装置。
  6. 前記カウンタおよび前記管理配列は、複数の前記ブロックからアクセス可能なグローバルメモリに配置される、
    ことを特徴とする請求項5に記載の情報処理装置。
  7. 前記ブロックは、複数の前記セルを含む領域に対応し、該領域内を複数のスレッドが並列処理することで前記セルを更新する、
    ことを特徴とする請求項5または6に記載の情報処理装置。
  8. N次元FDTD法の処理をコンピュータが実行する情報処理方法であって、
    N次元の所定の座標の+1方向のセルの更新を行い、更新した値をキャッシュメモリに格納し、前記更新した値を格納した後に、前記格納した値を用いて、該所定の座標のセルの更新を行う、
    処理を前記コンピュータが実行することを特徴とする情報処理方法。
  9. N次元FDTD法の処理をコンピュータに実行させる情報処理プログラムであって、
    N次元の所定の座標の+1方向のセルの更新を行い、更新した値をキャッシュメモリに格納し、前記更新した値を格納した後に、前記格納した値を用いて、該所定の座標のセルの更新を行う、
    処理を前記コンピュータに実行させることを特徴とする情報処理プログラム。
JP2018080924A 2018-04-19 2018-04-19 情報処理装置、情報処理方法および情報処理プログラム Active JP7087625B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018080924A JP7087625B2 (ja) 2018-04-19 2018-04-19 情報処理装置、情報処理方法および情報処理プログラム
US16/366,459 US20190324909A1 (en) 2018-04-19 2019-03-27 Information processing apparatus and information processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018080924A JP7087625B2 (ja) 2018-04-19 2018-04-19 情報処理装置、情報処理方法および情報処理プログラム

Publications (2)

Publication Number Publication Date
JP2019191710A true JP2019191710A (ja) 2019-10-31
JP7087625B2 JP7087625B2 (ja) 2022-06-21

Family

ID=68236440

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018080924A Active JP7087625B2 (ja) 2018-04-19 2018-04-19 情報処理装置、情報処理方法および情報処理プログラム

Country Status (2)

Country Link
US (1) US20190324909A1 (ja)
JP (1) JP7087625B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111368436A (zh) * 2020-03-06 2020-07-03 重庆邮电大学 导电板上弯曲线电磁耦合效应的时域建模分析方法

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111209249B (zh) * 2020-01-10 2021-11-02 中山大学 一种时域有限差分法硬件加速器系统及其实现方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4597640B2 (ja) 2004-11-15 2010-12-15 株式会社エヌ・ティ・ティ・ドコモ Fdtd演算装置、fdtd演算方法
JP5190823B2 (ja) 2008-03-31 2013-04-24 国立大学法人室蘭工業大学 電磁波解析装置および電磁波解析方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
南武志ほか: "冗長な計算を伴わない3次元FDTD法の時空間タイリング", 情報処理学会論文誌 論文誌トランザクション 2012(平成24)年度▲2▼ [CD−ROM], vol. 第6巻 第1号, JPN6021050555, 15 April 2013 (2013-04-15), JP, pages 56 - 65, ISSN: 0004666401 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111368436A (zh) * 2020-03-06 2020-07-03 重庆邮电大学 导电板上弯曲线电磁耦合效应的时域建模分析方法

Also Published As

Publication number Publication date
US20190324909A1 (en) 2019-10-24
JP7087625B2 (ja) 2022-06-21

Similar Documents

Publication Publication Date Title
TWI656481B (zh) 關於序列平行化消耗的方法、電腦可讀取媒體和系統
JP4316574B2 (ja) グラフィック処理を用いた粒子操作方法及び装置
JP5461533B2 (ja) ローカル及びグローバルのデータ共有
JP3889195B2 (ja) 画像処理装置、画像処理システムおよび画像処理方法
JP7379581B2 (ja) 特殊目的計算ユニットを用いたハードウェアダブルバッファリング
JP2020537788A (ja) 汎用化画像処理の画像前処理
US11042486B2 (en) Virtual memory management
JP6335335B2 (ja) タイルベースのレンダリングgpuアーキテクチャのための任意のタイル形状を有する適応可能なパーティションメカニズム
TWI533222B (zh) 處理任務的工作分配控制
US10411709B1 (en) Circuit arrangements and methods for dividing a three-dimensional input feature map
KR102594657B1 (ko) 비순차적 리소스 할당을 구현하는 방법 및 장치
CN109219805A (zh) 一种多核系统内存访问方法、相关装置、系统及存储介质
US11106968B1 (en) Circuit arrangements and methods for traversing input feature maps
WO2019127507A1 (zh) 数据处理方法、设备、dma控制器及计算机可读存储介质
JP7087625B2 (ja) 情報処理装置、情報処理方法および情報処理プログラム
JP7126136B2 (ja) 再構成可能なキャッシュアーキテクチャおよびキャッシュコヒーレンシの方法
WO2023005352A1 (zh) 数据处理的装置、方法、计算机设备和存储介质
JP2021513172A (ja) グラフィックス処理ユニット上の高性能スパース三角解
US9947073B2 (en) Memory-aware matrix factorization
JP6714158B2 (ja) 制御装置、制御方法及び制御プログラム
JP2021531572A (ja) Mac回路中の異なるカーネルを使用してデータのセットに対して連続するmac演算を実施すること
TWI749331B (zh) 具有記憶體內運算架構的記憶體及其操作方法
GB2596363A (en) Hierarchical acceleration structures for use in ray tracing systems
US20210288650A1 (en) Semiconductor device and circuit layout method
US11810238B2 (en) Hierarchical acceleration structures for use in ray tracing systems

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210113

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211221

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220203

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: 20220510

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220523

R150 Certificate of patent or registration of utility model

Ref document number: 7087625

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150