(57)【要約】【課題】複数の演算装置による処理の効率を改善する。【解決手段】本願に係る演算システムは、異なる種類の論理回路の組み合わせを変更可能な演算装置であって、追加可能な演算装置と、当該演算装置がアクセス可能な記憶装置との組を複数含む演算システムであって、前記演算装置は、前記論理回路を組み合わせることで、処理対象となる情報を示す指示情報に基づいて、自装置がアクセス可能な記憶装置が有する記憶領域のうち当該情報を格納する記憶領域のアドレスを特定する処理と、特定されたアドレスを用いて、前記記憶装置にアクセスする処理とを実行することを特徴とする。【選択図】図１
2019204433.tif 000002
【特許請求の範囲】
【請求項１】
異なる種類の論理回路の組み合わせを変更可能な演算装置であって、追加可能な演算装置と、当該演算装置がアクセス可能な記憶装置との組を複数含む演算システムであって、
前記演算装置は、前記論理回路を組み合わせることで、
処理対象となる情報を示す指示情報に基づいて、自装置がアクセス可能な記憶装置が有する記憶領域のうち当該情報を格納する記憶領域のアドレスを特定する処理と、
特定されたアドレスを用いて、前記記憶装置にアクセスする処理と
を実行することを特徴とする演算システム。
【請求項２】
前記複数の記憶装置は、所定のファイルを分割した分割情報をそれぞれ記憶し、
前記演算装置は、前記論理回路を組み合わせることで、
自装置がアクセス可能な記憶装置に格納された分割情報を用いて、所定の演算を行う処理と、
各演算処理による前記所定の演算の結果を収集する処理と
を実行することを特徴とする請求項１に記載の演算システム。
【請求項３】
前記複数の記憶装置は、所定のファイルを分割した分割情報を冗長性を担保するように記憶し、
前記演算装置のうち、所定の演算装置は、前記論理回路を組み合わせることで、
他の演算装置に故障が生じたか否かを判定する処理と、
他の演算装置に故障が生じたと判定された場合は、当該演算装置がアクセス可能な記憶装置に格納された分散情報を特定する処理と、
特定された分散情報と同じ分散情報が格納された記憶装置にアクセス可能な演算装置を特定する処理と、
特定された演算装置に対し、故障が生じたと判定された他の演算装置が実行していた演算を実行させる処理と
を実行することを特徴とする請求項１または２に記載の演算システム。
【請求項４】
異なる種類の論理回路の組み合わせを変更可能な演算装置であって、追加可能な演算装置と、当該演算装置がアクセス可能な記憶装置との組を複数含む演算システムが実行する演算方法であって、
前記演算装置が前記論理回路を組み合わせることで、
処理対象となる情報を示す指示情報に基づいて、自装置がアクセス可能な記憶装置が有する記憶領域のうち当該情報を格納する記憶領域のアドレスを特定する処理と、
特定されたアドレスを用いて、前記記憶装置にアクセスする処理と
を実行することを特徴とする演算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算システムおよび演算方法に関する。
【背景技術】
【０００２】
従来、演算装置が実行する各種の演算処理を効率化するために、様々な対策が実施されている。このような技術の一例として、複数のサブ処理ユニットを用いて処理を実行する際に、サブ処理ユニットでエラーが検出された場合は、各サブ処理ユニットの負荷に基づいて、エラーが検出されたサブ処理ユニットが実行していた処理を他のサブ処理ユニットに再割り当てする技術が知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−３３２４０２号公報
【非特許文献】
【０００４】
【非特許文献１】“分散処理技術「Hadoop」とは”＜インターネット＞https://oss.nttdata.com/hadoop/hadoop.html（平成３０年５月１日検索）
【非特許文献２】“ＦＰＧＡのしくみと開発に使うソフトとハード”，丹下  昌彦＜インターネット＞http://toragi.cqpub.co.jp/Portals/0/backnumber/2009/03/p096-097.pdf（平成３０年５月１日検索）
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した技術では、単一の演算装置内で実行される処理に過ぎず、複数の演算装置が協調して処理を実行する際の効率を改善する余地がある。
【０００６】
本願は、上記に鑑みてなされたものであって、複数の演算装置による処理の効率を改善することを目的とする。
【課題を解決するための手段】
【０００７】
本願に係る演算システムは、異なる種類の論理回路の組み合わせを変更可能な演算装置であって、追加可能な演算装置と、当該演算装置がアクセス可能な記憶装置との組を複数含む演算システムであって、前記演算装置は、前記論理回路を組み合わせることで、処理対象となる情報を示す指示情報に基づいて、自装置がアクセス可能な記憶装置が有する記憶領域のうち当該情報を格納する記憶領域のアドレスを特定する処理と、特定されたアドレスを用いて、前記記憶装置にアクセスする処理とを実行することを特徴とする。
【発明の効果】
【０００８】
実施形態の一態様によれば、複数の演算装置による処理の効率を改善することができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施形態に係る演算システムの一例を示す図である。
【図２】図２は、実施形態に係る演算装置の構成例を示す図である。
【図３】図３は、実施形態に係るファイルデータベースに登録される情報の一例を示す図である。
【図４】図４は、実施形態に係る演算装置データベースに登録される情報の一例を示す図である。
【図５】図５は、実施形態に係る演算装置が演算処理の結果を集約する処理の一例を示す図である。
【図６】図６は、実施形態に係る判定処理の流れの一例を説明するシーケンス図である。
【図７】図７は、実施形態に係る演算装置が実行するメモリアクセスの一例を示す図である。
【図８】図８は、実施形態に係る演算システムが実行する処理の流れの一例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下に、本願に係る演算システムおよび演算方法を実施するための形態（以下、「実施形態」と記載する。）について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る演算システムおよび演算方法が限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
【００１１】
［実施形態］
〔１−１．演算システムの一例〕
まず、図１を用いて、演算システム１が実行する演算処理の一例について説明する。なお、以下の説明では、演算システム１が複数の演算装置１００ａ〜１００ｅ（以下、「演算装置１００」と総称する場合がある。）を用いて所定の処理を実行する処理の一例について説明する。
【００１２】
図１は、実施形態に係る演算システムの一例を示す図である。図１では、演算システム１は、情報処理装置１０と、複数の演算装置１００を有する。
【００１３】
情報処理装置１０は、例えば、ＰＣ（Personal  Computer）やサーバ装置等により実現される情報処理装置である。また、情報処理装置１０は、各種のネットワークを介して、各演算装置１００と通信可能に接続されており、各演算装置１００との間で情報の送受信を行う。
【００１４】
演算装置１００は、以下に説明する演算処理を実行する演算装置である。ここで、演算装置１００は、製造後に利用者が内部の論理回路を定義あるいは変更することができる集積回路であり、所謂ＰＬＤ（Programmable  Logic  Device）である。より具体的には、演算装置１００は、ＦＰＧＡ（Field-Programmable  Gate  Array）により実現される。また、演算装置１００は、所定の記憶装置を有し、情報処理装置１０から提供される情報を記憶することができる。
【００１５】
〔１−２．演算処理の一例〕
図１に示す演算システム１において、各演算装置１００は、所定のファイルを分割したデータを冗長性を保持した状態で管理する。そして、各演算装置１００は、各演算装置ごとに保持する情報を用いた演算処理を実行し、実行結果を集約することで、所定のファイルに対する演算処理を実現する。また、各演算装置１００は、このようなデータの管理および演算を、内部の論理回路を定義することにより実現する。
【００１６】
例えば、情報処理装置１０は、処理対象となるファイルを複数のデータＡ〜データＣに分割する（ステップＳ１）。そして、情報処理装置１０は、各演算装置の記憶領域に分割したデータＡ〜データＣを冗長化した状態で分散登録する（ステップＳ２）。例えば、情報処理装置１０は、演算装置１００ａ、１００ｃ、１００ｅにデータＡを保持させ、演算装置１００ｂ、１００ｃ、１００ｄにデータＢを保持させ、演算装置１００ｂ、１００ｄ、１００ｅにデータＣを提供する。また、情報処理装置１０は、どの演算装置１００ａ〜１００ｅに対してどのデータを保持させたかを示すメタデータを演算装置１００ｆに提供する。
【００１７】
このような場合、各演算装置１００ａ〜ｅは、演算装置内の記憶領域にデータを保持し、キーバリュー方式によりデータの管理を実行する（ステップＳ３）。そして、演算装置１００ｆは、演算装置１００ａ〜１００ｅが故障したか否かを判定し、いずれかの演算装置１００ａ〜１００ｅが故障した場合は、故障した演算装置と同じデータを他の演算装置から参照して処理を実行するように、故障していない演算装置を制御する（ステップＳ４）。
【００１８】
例えば、データＡ〜データＣを用いた演算処理を実行する処理の一例について説明する。例えば、マスタとなる演算装置１００ｆは、ファイルに対する処理をデータＡ〜データＣに対する複数のタスクＡ〜タスクＣに分割する。また、演算装置１００ｆは、メタデータを参照し、各演算装置１００ａ〜１００ｅが保持するデータを特定する。そして、演算装置１００ｆは、特定したデータに対する処理のタスクを、各演算装置１００ａ〜１００ｃに対して割り当てる。このような場合、演算装置１００ａ〜１００ｅは、自装置の記憶装置に保持されたデータを用いて、演算装置１００ｆから受付けたタスクを実行する。
【００１９】
ここで、演算装置１００ｆは、各演算装置１００ａ〜１００ｅからハートビートと呼ばれる信号を定期的に受信している。そして、演算装置１００ｆは、例えば、演算装置１００ａから所定の期間の間ハードビートを受信しなくなった場合は、演算装置ａが故障したと判定する。このような場合、演算装置１００ｆは、演算装置ａに実行させていたタスクを特定するとともに、演算装置ａが保持していたデータＡと同じデータを保持する演算装置１００ｃ、１００ｅを特定する。そして、演算装置１００ｆは、演算装置ａに実行させていたタスクを、演算装置１００ｃもしくは演算装置１００ｅに実行させる。
【００２０】
また、演算装置１００ｆは、各演算装置１００ａ〜１００ｅによるタスクの実行結果を集約する。例えば、演算装置１００ｆは、キーバリュー方式で実行結果を取得する。このような場合、演算装置１００ｆは、同じキーが付与されたバリューの値を集約することで、全体としての処理結果、すなわち、データＡ〜データＣの元となるファイルに対する所定の処理の結果を取得する。
【００２１】
すなわち、演算システム１においては、各演算装置１００が、内部の演算回路を定義することにより、所謂ＨＡＤＯＯＰ的に処理を実行する。例えば、各演算装置１００は、ＨＤＦＳ（Hadoop  Distributed  File  System）やHadoop  MapReduceに従って、データの保持および管理を実行する。また、各演算装置はＣＰＵ、ＧＰＵ、ＦＰＧＡなどの異なる複数種類を組み合わせることができ、後から追加も可能になるため、スケーラビリティの向上につながる。なお、演算システム１においては、演算装置の追加を行う際、その演算装置がアクセス可能なメモリ等の主記憶装置の追加を行ってもよく、行わずともよい。すなわち、演算システム１においては、演算装置と主記憶装置との組単位で、演算装置の追加を行ってもよく、演算装置のみの追加を行ってもよい。また、各演算装置が主記憶装置にアクセスする手法については、イリノイプロトコル等任意のプロトコルが採用可能である。
【００２２】
〔２．演算装置の構成〕
以下、上記した演算処理を実現する演算装置１００が有する機能構成の一例について説明する。図２は、実施形態に係る演算装置の構成例を示す図である。図２に示す例では、マスタとして動作する演算装置の一例について記載した。
【００２３】
例えば、演算装置１００は、プロセッサ１１０、入出力装置１２０、メモリコントローラ１３０、記憶部１４０およびＦＰＧＡ１５０を有する。プロセッサ１１０は、演算装置１００が有するプロセッサであり、例えば、ＡＲＭアーキテクチャやＰＯＷＥＲアーキテクチャを採用したプロセッサ若しくはマイクロプロセッサである。そして、プロセッサ１１０は、ＦＰＧＡ１５０と連携することで、各種の演算処理を実行する。
【００２４】
例えば、プロセッサ１１０は、プロセッサコア１１１とキャッシュメモリ１１２とを有する。プロセッサコア１１１は、論理演算や四則演算を実現する所謂コアであり、ＡＬＵ（Arithmetic  Logic  Unit）から構成される算術論理演算装置により実現される。キャッシュメモリ１１２は、プロセッサ１１０が有する補助記憶装置である。より具体的には、キャッシュメモリ１１２は、主記憶装置２００よりもプロセッサコア１１１が高速にアクセスすることができる記憶装置であり、所謂キャッシュメモリである。
【００２５】
入出力装置１２０は、演算装置１００と情報処理装置１０や他の演算装置１００との間の通信を中継する装置であり、所謂Ｉ／Ｏ（Input  Output）装置である。例えば、入出力装置１２０は、ＵＳＢ（Universal  Serial  Bus）、イーサーネット、ＳＤ（Secure  Digital）、ＵＡＲＴ（Universal  Asynchronous  Receiver/Transmitter）、ＳＰＩ（Serial  Peripheral  Interface）、Ｉ２Ｃ、ＧＰＩＯ（General-purpose  input/output）等、各種の通信規格に沿って外部装置ＯＡとの間の通信を制御する各種の入出力装置により実現される。
【００２６】
メモリコントローラ１３０は、演算装置１００による記憶部１４０へのメモリアクセスを制御する。より具体的には、メモリコントローラ１３０は、ページング方式により主記憶装置２００に格納されたデータの読み出しや書込みを行う。
【００２７】
記憶部１４０は、ＲＡＭ（Random  Access  Memory)、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子等の記憶装置によって実現される。記憶部１４０は、ファイルデータベース１４１および演算装置データベース１４２が登録されている。なお、演算装置１００がマスタとして動作する場合は、ファイルデータベース１４１は、登録されていなくともよい。また、演算装置１００がスレーブとして動作する場合は、演算装置データベース１４２は、登録されていなくともよい。
【００２８】
ファイルデータベース１４１は、処理対象となるファイルを分割したデータが登録される。例えば、図３は、実施形態に係るファイルデータベースに登録される情報の一例を示す図である。なお、図３には、記憶部１４０が有する記憶領域を示すアドレスと、そのアドレスが示す記憶領域に登録されるデータの一例について記載した。
【００２９】
例えば、図３に示す例では、アドレスが「アドレス＃１」である記憶領域に「データ＃１」が登録されている。ここで、演算装置１００は、キーバリュー方式でデータの管理を行う。このため、例えば、データ＃１に対応するキーの値が「キー値＃１」である場合、「キー値＃１」に対して所定の関数ｆ（例えば、ハッシュ関数等）を適用した値がアドレス＃１となっている。
【００３０】
なお、図３に示す例では、「アドレス＃１」や、「キー値＃１」といった概念的な値を記載したが、実際には、記憶領域を示す各種の数値や文字列、キー値を構成する数値や文字列等が採用されることとなる。また、図３に示す例では、「データ＃１」といった概念的な値を記載したが、実際には、処理対象となるファイルを分割したデータが登録されることとなる。
【００３１】
図２に戻り、説明を続ける。演算装置データベース１４２は、所謂メタデータであり、各演算装置１００に関する情報が登録される。例えば、図４は、実施形態に係る演算装置データベースに登録される情報の一例を示す図である。図４に示すように、演算装置データベース１４２には、「演算装置ＩＤ（Identifier）」、「マスタ情報」、「演算装置情報」、「振り分けタスク」、および「振り分けデータ」が対応付けて登録されている。
【００３２】
ここで、「演算装置ＩＤ」とは、演算装置１００の識別子である。「マスタ情報」とは、どの演算装置がマスタであるかを示す情報である。また、「演算装置情報」とは、対応付けられた演算装置ＩＤが示す演算装置に関する各種の情報である。また、「振り分けタスク」とは、対応付けられた演算装置ＩＤが示す演算装置に対して割り当てられたタスクを示す情報である。また、「振り分けデータ」とは、対応付けられた演算装置ＩＤが示す演算装置に対して振り分けられたデータの識別子である。
【００３３】
図４に示す例では、演算装置データベース１４２には、演算装置ＩＤ「１００ａ」、マスタ情報「０」、演算装置情報「情報＃１」、振り分けタスク「タスクＡ」、および振り分けデータ「データＡ」が対応付けて登録されている。このような情報は、例えば、演算装置ＩＤ「１００ａ」が示す演算装置（例えば、演算装置１００ａ）が、スレーブであり、演算装置情報が「情報＃１」である旨を示す。また、このような情報は、演算装置１００ａに対して、「タスクＡ」の実行が振り分けられており、「データＡ」が示すデータが振り分けられている旨を示す。
【００３４】
図２に戻り、説明を続ける。ＦＰＧＡ１５０は、外部装置ＯＡから受付けたＨＤＬ（Hardware  Description  Language）に従って回路を構成することで、以下の機能を実現する。そして、ＦＰＧＡ１５０は、以下の機能を発揮することで、ＨＡＤＯＯＰ的に、データの管理および処理を実現する。例えば、ＦＰＧＡ１５０は、取得部１６１、通信部１６２、判定部１６３、特定部１６４、および演算制御部１６５として動作する。
【００３５】
例えば、演算装置１００がスレーブとして動作する場合、取得部１６１は、処理対象となるデータを取得する。例えば、取得部１６１は、情報処理装置１０から分割されたデータを取得する。より具体的には、取得部１６１は、キーバリュー形式で、分割されたデータを取得する。このような場合、取得部１６１は、キー値を所定の関数ｆでアドレスに変換し、記憶部１４０が有する記憶領域のうち変換後のアドレスが示す記憶領域にデータを格納する。
【００３６】
また、例えば、演算装置１００がマスタとして動作する場合、取得部１６１は、どの演算装置にどのデータを振り分けたかを示すメタデータを取得する。例えば、取得部１６１は、情報処理装置１０からメタデータを取得する。このような場合、取得部１６１は、演算装置データベース１４２を記憶部１４０内に生成し、メタデータが示す演算装置１００とその演算装置１００に振り分けられたデータを示す識別子との組を、演算装置データベース１４２に登録する。
【００３７】
通信部１６２は、演算装置１００間の通信を制御する。例えば、演算装置１００がマスタとして動作する場合、通信部１６２は、他の演算装置１００から送信されるハートビートを受信する。また、演算装置１００がスレーブとして動作する場合、通信部１６２は、マスタとなる演算装置１００に対して所定の時間間隔でハートビートを送信する。
【００３８】
判定部１６３は、他の演算装置に故障が生じたか否かを判定する。例えば、演算装置１００がマスタとして動作する場合、判定部１６３は、他の演算装置１００からハートビートが所定の時間間隔で受信されているか否かを判定する。そして、判定部１６３は、いずれかの演算装置１００からハートビートが受信されなくなってから所定の時間が経過した場合は、その演算装置１００が故障したと判定する。なお、演算装置１００がスレーブとして動作する場合、ＦＰＧＡ１５０は、判定部１６３を構成せずともよい。
【００３９】
特定部１６４は、他の演算装置に故障が生じたと判定された場合は、その演算装置１００がアクセス可能な記憶装置に格納された分散情報を特定する。また、特定部１６４は、特定された分散情報と同じ分散情報が格納された記憶装置にアクセス可能な演算装置１００を特定する。
【００４０】
例えば、特定部１６４は、判定部１６３により演算装置１００ａが故障したと判定された場合は、演算装置データベース１４２を参照し、演算装置１００ａに対して割り当てられていたタスクと振り分けデータとを特定する。続いて、演算装置データベース１４２は、特定した振り分けデータと同じデータが振り分けられている演算装置であって、故障していない演算装置（例えば、演算装置１００ｃ）を特定する。なお、演算装置１００がスレーブとして動作する場合、ＦＰＧＡ１５０は、特定部１６４を構成せずともよい。
【００４１】
演算制御部１６５は、各演算装置１００に対して振り分けられたデータを用いて、各種の演算処理を実行する。例えば、演算制御部１６５は、演算装置１００がスレーブとして動作する場合、以下の処理を実行する。まず、演算制御部１６５は、処理対象となる情報を示す指示情報に基づいて、自装置がアクセス可能な記憶装置が有する記憶領域のうち当該情報を格納する記憶領域のアドレスを特定する。そして、演算制御部１６５は、特定されたアドレスを用いて、記憶装置にアクセスし、記憶装置に格納された分割情報を用いて、所定の演算を行う。
【００４２】
例えば、演算制御部１６５は、演算装置１００に割り当てられたタスクが処理対象とするデータのキー値を特定する。続いて、演算制御部１６５は、キー値を所定の関数ｆによりアドレスに変換し、記憶部１４０に登録されているデータのうち、変換後のアドレスが示す記憶領域に登録されていたデータを読み出す。そして、演算制御部１６５は、読み出したデータとタスクとをプロセッサ１１０に提供し、タスクが示す処理をプロセッサ１１０に実行させる。その後、演算制御部１６５は、プロセッサ１１０による演算結果をマスタとなる演算装置１００へと送信する。
【００４３】
一方、演算制御部１６５は、演算装置１００がマスタとして動作する場合、以下の処理を実行する。まず、演算制御部１６５は、他の演算装置１００による演算の結果を収集する。そして、演算制御部１６５は、各演算装置１００による演算の結果を集約する。例えば、図５は、実施形態に係る演算装置が演算処理の結果を集約する処理の一例を示す図である。図５に示すように、演算制御部１６５は、ＭａｐＲｅｄｕｃｅジョブにより、演算処理の結果を集約する。
【００４４】
例えば、演算制御部１６５は、スレーブとなる演算装置１００から受信した演算結果に対し、所定の処理を実行することで、キーバリュー形式のデータに変換するＭａｐ処理を実行する。続いて、演算制御部１６５は、変換後のデータを同一のキーごとに集約したデータを生成し、生成したデータに対して所定の処理を実行するＲｅｄｕｃｅ処理を実行する。そして、演算制御部１６５は、Ｒｅｄｕｃｅ処理の結果を、分割前のファイルに対する処理の結果として出力する。
【００４５】
図２に戻り、説明を続ける。また、演算制御部１６５は、演算装置１００がマスタとして動作する場合、特定部１６４により特定された演算装置１００に対し、故障が生じたと判定された他の演算装置１００が実行していた演算を実行させる。例えば、演算制御部１６５は、演算装置１００ａが故障したと判定され、特定部１６４が演算装置１００ｃを特定した場合、演算装置１００ｃに対してタスクＡを実行させる。そして、演算制御部１６５は、演算装置１００ｃからタスクＡの実行結果を収集し、収集したタスクＡの実行結果を他のタスクの実行結果と共に集約する。
【００４６】
なお、上述した例では、情報処理装置１０によりファイルの分割が行われる例について記載したが、実施形態は、これに限定されるものではない。例えば、マスタとして動作する演算装置１００が有するＦＰＧＡ１５０が、ファイルの分割および割り当てを実現してもよい。
【００４７】
例えば、図６は、実施形態に係る判定処理の流れの一例を説明するシーケンス図である。なお、図６に示す例では、演算装置１００ａがマスタとして動作する例について記載した。例えば、演算装置１００ａは、割り当て対象となる処理を複数のデータＡ〜Ｄに分割し（ステップＳ１０）、分割した各データ、すなわち、各配列の部分を各演算装置１００ｂ〜１００ｃに割り当てる（ステップＳ１１）。ここで、演算装置１００ａは、スレーブとなる演算装置１００ｂ〜１００ｃのみならず、マスタである演算装置１００ａにも、配列の割り当てを行ってもよい。
【００４８】
このような場合、各演算装置１００ａ〜１００ｄは、それぞれ割り当てられた配列の処理を実行する。例えば、演算装置１００ａは、データＡの合計を求める計算を実行し（ステップＳ１２）、演算装置１００ｂは、データＢの合計を求める計算を実行し（ステップＳ１３）、演算装置１００ｃは、データＣの合計を求める計算を実行し（ステップＳ１４）、演算装置１００ｄは、データＤの合計を求める計算を実行する（ステップＳ１５）。
【００４９】
また、演算装置１００ａは、演算装置１００ｂ〜１００ｃによる計算結果を収集する。そして、演算装置１００ａは、演算装置１００ａ〜１００ｄによる計算の結果を集約する。例えば、演算装置１００ａは、ステップＳ１２〜Ｓ１５による部分合計の合計を算出し（ステップＳ１６）、処理を終了する。
【００５０】
〔３．演算装置が実行するメモリアクセスの一例〕
次に、図７を用いて、演算装置１００が実行するメモリアクセスの一例について説明する。図７は、実施形態に係る演算装置が実行するメモリアクセスの一例を示す図である。例えば、演算装置１００は、図７中（Ａ）に示すように、キー値から算出されたアドレス「０ｘ１０００」、「０ｘ４０００」、「０ｘ８０００」、「０ｘ１８００」を記憶領域「Ｖ０」に格納する。このような場合、演算装置１００は、アドレス「０ｘ１０００」が示す記憶領域に登録されたデータ「Ｘ」、「０ｘ４０００」が示す記憶領域に登録されたデータ「Ｚ」、「０ｘ８０００」が示す記憶領域に登録されたデータ「Ｗ」、「０ｘ１８００」が示す記憶領域に登録されたデータ「Ｙ」を読み出す。そして、演算装置１００は、読み出したデータ「Ｘ」、「Ｚ」、「Ｗ」、「Ｙ」を記憶領域「Ｖ１」に格納する。
【００５１】
また、例えば、演算装置１００は、図７中（Ｂ）に示すように、キー値から算出されたアドレス「０ｘ１０００」、「０ｘ４０００」、「０ｘ８０００」、「０ｘ１８００」を記憶領域「Ｖ２」に格納するとともに、記憶領域「Ｖ３」に、書込み対象となるデータ「Ｘ」、「Ｚ」、「Ｗ」、「Ｙ」を登録する。このような場合、演算装置１００は、アドレス「０ｘ１０００」が示す記憶領域にデータ「Ｘ」を格納し、「０ｘ４０００」が示す記憶領域にデータ「Ｚ」を格納し、「０ｘ８０００」が示す記憶領域にデータ「Ｗ」を格納し、「０ｘ１８００」が示す記憶領域にデータ「Ｙ」を格納する。
【００５２】
〔４．演算装置が実行する処理の流れの一例〕
次に、図８を用いて、演算システム１が実行する処理の一例について説明する。図８は、実施形態に係る演算システムが実行する処理の流れの一例を示すフローチャートである。例えば、演算システム１は、処理対象となるファイルを分割し（ステップＳ１０１）、分割データの保存先となる演算装置１００を決定する（ステップＳ１０２）。そして、演算システム１は、分割データを冗長化して分割保存し（ステップＳ１０３）、各演算装置１００が有するＦＰＧＡを用いて、分割データの分散管理を実行する（ステップＳ１０４）。
【００５３】
〔５．その他〕
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文章中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
【００５４】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【００５５】
例えば、図２に示す例では、演算装置１００が記憶部１４０を有する例について記載したが、実施形態は、これに限定されるものではない。例えば、演算装置１００は、演算装置１００とは個別のメモリと接続され、メモリコントローラ１３０を介して、メモリに対する各種のメモリアクセスを行ってもよい。
【００５６】
また、上記してきた各実施形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【００５７】
〔６．効果〕
上述したように、演算システム１は、異なる種類の論理回路の組み合わせを変更可能な演算装置であって、追加可能な演算装置１００と、演算装置１００がアクセス可能な記憶装置（例えば、記憶部１４０）との組を複数含む演算システムであって、演算装置１００は、論理回路を組み合わせることで、処理対象となる情報を示す指示情報に基づいて、自装置がアクセス可能な記憶装置が有する記憶領域のうち情報を格納する記憶領域のアドレスを特定する。そして、演算装置１００は、特定されたアドレスを用いて、記憶装置にアクセスする。
【００５８】
また、各記憶装置は、所定のファイルを分割した分割情報をそれぞれ記憶し、各演算装置１００は、論理回路を組み合わせることで、自装置がアクセス可能な記憶装置に格納された分割情報を用いて、所定の演算を行い、各演算処理による所定の演算の結果を収集する。
【００５９】
また、各記憶装置は、所定のファイルを分割した分割情報を冗長性を担保するように記憶する。また、マスタとして動作する演算装置１００は、論理回路を組み合わせることで、他の演算装置１００に故障が生じたか否かを判定し、他の演算装置１００に故障が生じたと判定された場合は、その演算装置１００がアクセス可能な記憶装置に格納された分散情報を特定する。また、マスタとして動作する演算装置１００は、特定された分散情報と同じ分散情報が格納された記憶装置にアクセス可能な演算装置１００を特定する。そして、マスタとして動作する演算装置１００は、特定された演算装置１００に対し、故障が生じたと判定された他の演算装置１００が実行していた演算を実行させる。
【００６０】
このように、演算システム１は、各演算装置１００に論理回路を組み合わせることで、ＨＡＤＯＯＰ的なデータの管理を実行させる。すなわち、演算システム１は、ＦＰＧＡを用いてＨＡＤＯＯＰの処理を実行させる。この、結果、演算システム１は、複数の演算装置１００による処理の効率を改善することができる。
【００６１】
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の欄に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
【００６２】
また、上記してきた「部（section、module、unit）」は、「手段」や「回路」などに読み替えることができる。例えば、生成部は、生成手段や生成回路に読み替えることができる。
【符号の説明】
【００６３】
１００  演算装置
１１０  プロセッサ
１１１  プロセッサコア
１１２  キャッシュメモリ
１２０  入出力装置
１３０  メモリコントローラ
１４０  記憶部
１４１  ファイルデータベース
１４２  演算装置データベース
１５０  ＦＰＧＡ
１６１  取得部
１６２  通信部
１６３  判定部
１６４  特定部
１６５  演算制御部
【図１】
2019204433.tif 000003
【図２】
2019204433.tif 000004
【図３】
2019204433.tif 000005
【図４】
2019204433.tif 000006
【図５】
2019204433.tif 000007
【図６】
2019204433.tif 000008
【図７】
2019204433.tif 000009
【図８】
2019204433.tif 000010