(57)【要約】【課題】重複した読み込み処理を抑えつつ、並列処理を効率的に行うことができる。【解決手段】  情報処理装置は、それぞれが異なる日時に対応付けられた複数のデータの集計処理を複数のプロセッサを用いて実行する。情報処理装置の制御部は、前記集計処理の対象期間内に設定されるウィンドウ集計期間を特定の期間ずつずらしつつ、それぞれのウィンドウ集計期間に対応付けられたデータの集計処理を実行する際に、前記集計処理の対象期間内に含まれる第１の期間に対応付けられたデータの集計処理を第１のプロセッサに割り当てるとともに、前記集計処理の対象期間内に含まれる、前記第１の期間の期初日時に対して前記ウィンドウ集計期間後の日時を期初日時とする第２の期間に対応付けられたデータの集計処理を第２のプロセッサに割り当てる。【選択図】図５
2018005262.tif 000002
【特許請求の範囲】
【請求項１】
それぞれが異なる日時に対応付けられた複数のデータの集計処理を複数のプロセッサを用いて実行する情報処理装置において、
前記集計処理の対象期間内に設定されるウィンドウ集計期間を特定の期間ずつずらしつつ、それぞれのウィンドウ集計期間に対応付けられたデータの集計処理を実行する際に、前記集計処理の対象期間内に含まれる第１の期間に対応付けられたデータの集計処理を第１のプロセッサに割り当てるとともに、前記集計処理の対象期間内に含まれる、前記第１の期間の期初日時に対して前記ウィンドウ集計期間後の日時を期初日時とする第２の期間に対応付けられたデータの集計処理を第２のプロセッサに割り当てる制御部、
を備えることを特徴とする情報処理装置。
【請求項２】
前記複数のデータを、複数の分割データとして記憶する記憶部を更に備え、
前記制御部は、
前記第２の期間の期初日時が含まれる分割データ内のウィンドウ開始時刻から集計処理を前記第２のプロセッサに割り当てる
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記複数のデータを、複数の分割データとして記憶する記憶部を更に備え、
前記制御部は、
前記第２の期間の期初日時から前記ウィンドウ集計期間後の日時と、前記第１の期間の期末日時とが、同じ分割データに含まれる場合、
前記第２の期間の期初日時から前記ウィンドウ集計期間後の日時と、前記第１の期間の期末日時とを含む分割データの次の分割データ内のウィンドウ開始時刻からの集計処理を、前記第２のプロセッサの次に集計処理をするプロセッサに割り当てる
ことを特徴とする請求項１に記載の情報処理装置。
【請求項４】
それぞれが異なる日時に対応付けられた複数のデータの集計処理を複数のプロセッサを用いて実行する情報処理方法において、
前記集計処理の対象期間内に設定されるウィンドウ集計期間を特定の期間ずつずらしつつ、それぞれのウィンドウ集計期間に対応付けられたデータの集計処理を実行する際に、前記集計処理の対象期間内に含まれる第１の期間に対応付けられたデータの集計処理を第１のプロセッサに割り当てるとともに、前記集計処理の対象期間内に含まれる、前記第１の期間の期初日時に対して前記ウィンドウ集計期間後の日時を期初日時とする第２の期間に対応付けられたデータの集計処理を第２のプロセッサに割り当てる
ことを特徴とする情報処理方法。
【請求項５】
前記複数のデータを、複数の分割データとして記憶し、
前記第２の期間の期初日時が含まれる分割データ内のウィンドウ開始時刻から集計処理を前記第２のプロセッサに割り当てる
ことを特徴とする請求項４に記載の情報処理方法。
【請求項６】
前記複数のデータを、複数の分割データとして記憶し、
前記第２の期間の期初日時から前記ウィンドウ集計期間後の日時と、前記第１の期間の期末日時とが、同じ分割データに含まれる場合、
前記第２の期間の期初日時から前記ウィンドウ集計期間後の日時と、前記第１の期間の期末日時とを含む分割データの次の分割データ内のウィンドウ開始時刻からの集計処理を、前記第２のプロセッサの次に集計処理をするプロセッサに割り当てる
ことを特徴とする請求項４に記載の情報処理方法。
【請求項７】
それぞれが異なる日時に対応付けられた複数のデータの集計処理を複数のプロセッサを用いて実行する情報処理プログラムにおいて、
前記集計処理の対象期間内に設定されるウィンドウ集計期間を特定の期間ずつずらしつつ、それぞれのウィンドウ集計期間に対応付けられたデータの集計処理を実行する際に、前記集計処理の対象期間内に含まれる第１の期間に対応付けられたデータの集計処理を第１のプロセッサに割り当てるとともに、前記集計処理の対象期間内に含まれる、前記第１の期間の期初日時に対して前記ウィンドウ集計期間後の日時を期初日時とする第２の期間に対応付けられたデータの集計処理を第２のプロセッサに割り当てる、処理を情報処理装置に実行させる
ことを特徴とする情報処理プログラム。
【請求項８】
前記複数のデータを、複数の分割データとして記憶し、
前記第２の期間の期初日時が含まれる分割データ内のウィンドウ開始時刻から集計処理を前記第２のプロセッサに割り当てる
ことを特徴とする請求項７に記載の情報処理プログラム。
【請求項９】
前記複数のデータを、複数の分割データとして記憶し、
前記第２の期間の期初日時から前記ウィンドウ集計期間後の日時と、前記第１の期間の期末日時とが、同じ分割データに含まれる場合、
前記第２の期間の期初日時から前記ウィンドウ集計期間後の日時と、前記第１の期間の期末日時とを含む分割データの次の分割データ内のウィンドウ開始時刻からの集計処理を、前記第２のプロセッサの次に集計処理をするプロセッサに割り当てる
ことを特徴とする請求項７に記載の情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理に関する。
【背景技術】
【０００２】
情報処理装置で扱われる代表的なデータに時系列データがある。時系列データは、時刻情報と、時刻情報に対応した格納対象のデータの数値データを備え、時刻順に並べて情報処理装置に格納される。情報処理装置は、該時系列データを、所定サイズの分割データに分割して格納する。
【０００３】
図１は、ウィンドウ集計の差分処理の例を説明する図である。ウィンドウ集計は、一定期間あるいは連続する一定個数の数値データ（レコード）に対して、集計処理を繰り返し行う処理である。
【０００４】
図１の例は、２０１５年の１週間分のレコードを１日毎に集計するウィンドウ集計処理である。１度目の集計データ１０１ａの集計対象は、１月１日〜１月７日までの１週間のデータである。情報処理装置は、１月１日〜１月７日までの１週間のデータを集計するため、１月１日〜１月７日のデータを読み込む。２度目の集計データ１０１ｂの集計対象は、１月２日〜１月８日までの１週間のデータである。すると、情報処理装置は、１月２日〜１月８日までの１週間のデータを集計するため、集計データ１０１ａで読み込んでいない１月８日のデータ（差分）を読み込む。なお、１月２日〜１月７日の間のデータは、１度目の集計データ１０１ａで読み込んだデータを用いればよい。以下において、各ウィンドウ集計における差分は、スライド幅とも称す。
【０００５】
３度目の集計データ１０１ｃの集計対象は、１月３日〜１月９日までの１週間のデータである。すると、情報処理装置は、１月３日〜１月９日までの１週間のデータを集計するため、集計データ１０１ａと集計データ１０１ｂで読み込んでいない１月９日のデータ（差分）を読み込む。なお、１月３日〜１月８日の間のデータは、集計データ１０１ａ及び集計データ１０１ｂで読み込んだデータを用いればよい。
【０００６】
このような、集計毎に差分のデータを読み込み、過去のデータは、過去に読み込んだデータを使用するウィンドウ集計の差分処理を用いることで、読み込み処理の処理量を軽減する方法が知られている。
【０００７】
図２は、分割並列処理の例を説明する図である。分割並列処理は、時系列データに係るデータ処理を、Central Processing Unit（ＣＰＵ）毎に割り当ててデータ処理をする処理方法である。
【０００８】
図２の例は、２０１５年の１週間分のレコードを１日毎に集計する処理を３つのＣＰＵに分割して行わせる処理である。ＣＰＵ１は、１月１日から５月６日の範囲のデータ処理が割り当てられており、該データのデータ処理をする。ＣＰＵ２は、５月１日から９月６日の範囲のデータ処理が割り当てられており、該データのデータ処理をする。ＣＰＵ３は、９月１日から１２月３１日の範囲のデータ処理が割り当てられており、該データのデータ処理をする。ここで、５月１日〜５月６日のデータは、ＣＰＵ１とＣＰＵ２とで重複して読み込まれる。９月１日〜９月６日のデータは、ＣＰＵ２とＣＰＵ３とで重複して読み込まれる。
【０００９】
なお、分割並列処理の処理性能は、以下の式で得られる。並列数（ＣＰＵ数）をＰ、全体のデータ量（ここでは、２０１５年の１月１日〜１２月３１日までのデータ量）をＤと仮定する。
合計処理量≒Ｄ
最大並列処理遅延＝Ｄ／Ｐ
バッファサイズ＝Ｄ／Ｐ
【００１０】
合計処理量は、全体のデータ量（ここでは、２０１５年の１月１日〜１２月３１日までのデータ量）のＤ及びＣＰＵ１、ＣＰＵ２、ＣＰＵ３などが重複して読み込むデータ量である。ここで、ＣＰＵ１、ＣＰＵ２、ＣＰＵ３などが重複して読み込むデータ量は、全体のデータ量に比べて小さいサイズであるため、ここでは省略する。最大並列処理遅延は、データ処理にかかると考えられる時間である。バッファサイズは、各ＣＰＵが読み込みバッファに格納するデータ量である。単純に全データを処理する場合に比べて、複数のＣＰＵが並列にデータ処理を行うことで、処理時間を短縮することができる。
【００１１】
図３は、ウィンドウ処理と並列処理を組み合わせた処理の例を説明する図である。図３の例は、２０１５年の１週間分のレコードを１日毎に集計する処理を３つのＣＰＵに分割して行わせる処理である。図３における情報処理装置に格納されている時系列データは、分割された分割データ２０１ａ〜２０１ｇを含む。分割データ２０１ａは、２０１５年１月１日〜１月５日までのデータである。分割データ２０１ｂは、１月５日の途中〜１月９日までのデータである。分割データ２０１ｃは、１月９日の途中〜１月１２日までのデータである。分割データ２０１ｄは、１月１２日の途中〜１月１５日までのデータである。分割データ２０１ｅは、１月１５日の途中〜１月１６日までのデータである。分割データ２０１ｆは、１月１６日の途中〜１月１９日までのデータである。分割データ２０１ｇは、１月１９日の途中〜１月２１日までのデータである。
【００１２】
図３に係る並列処理では、ＣＰＵ１、ＣＰＵ２、ＣＰＵ３は、各分割データのウィンドウ開始時刻からウィンドウ集計処理を開始する。ここで、ウィンドウとは、集計の管理単位であり、例えば、１日単位で行われる。分割データ２０１ａのウィンドウ開始時刻のデータを、ＣＰＵ１がウィンドウ集計処理をする。なお、図３のＣＰＵ１の矢印の左側には、ウィンドウ集計処理については、１週間分の集計処理を集計し、その後は１日分ずつの差分を集計することを示している。次に、分割データ２０１ｂのウィンドウ開始時刻のデータから、ＣＰＵ２がウィンドウ集計処理をする。ここで、分割データ２０１ｂの先頭のデータは、分割データ２０１ａの最後のデータ（１月５日）の続きのウィンドウである。分割データ２０１ｂがデータの途中から始まるため、実際には、ＣＰＵ２は、分割データ２０１ｂ内の１月６日のデータ（ウィンドウ開始時刻）からウィンドウ集計処理をする。ＣＰＵ３は、分割データ２０１ｃのウィンドウ開始時刻のデータから集計処理を開始する。ここで、分割データ２０１ｃは、分割データ２０１ｂの最後のデータ（１月９日）の続きである。そのため、実際には、ＣＰＵ３は、分割データ２０１ｃ内の１月１０日のデータ（ウィンドウ開始時刻）からウィンドウ集計処理をする。
【００１３】
ＣＰＵ２が１月６日からのデータをウィンドウ集計処理するため、ＣＰＵ１の処理対象（終了）は、１月５日から１週間後の１月１１日までのデータが処理対象となる。ＣＰＵ１は、１月１日〜１月１１日までのウィンドウ集計処理を終了すると、次の処理対象のデータをウィンドウ集計処理する。
【００１４】
なお、図３におけるウィンドウ処理と並列処理を組み合わせた処理の処理性能は、以下の式で得られる。ウィンドウサイズ（ウィンドウ集計の期間）をＷ、スライド幅をＮＢ、並列数（ＣＰＵ数）をＰ、全体のデータ量（ここでは、２０１５年の１月１日〜１２月３１日までのデータ量）をＤと仮定する。
合計処理量≒ＷＤ／ＮＢ
最大並列処理遅延＝ＮＢ＊Ｐ
バッファサイズ＝Ｗ＋ＮＢ
【００１５】
このように、各分割データのウィンドウ開始時刻からウィンドウ集計処理を開始するように設定すると、ＣＰＵ１の１月１日〜１月１１日の処理のうち、１月１０日から後のデータは、ＣＰＵ２とＣＰＵ３にも重複して読み込まれる。
【００１６】
サーバノードは、端末装置より送信される時系列データを元データとして取得し、時系列上において隣り合う分割データ同士でその範囲の一部が重複するように時系列データを分割し、その分割データをそれぞれクライアントノードに分配する。各クライアントノードは、分割データに対する予測計算を並列的に行い、得られた計算結果をサーバノードに送信する。サーバノードは、それらの計算結果を時系列に沿って集約し、１つの出力用時系列データを作成し、端末装置に出力する。このような時系列データに対する計算処理を高速に行うことができるサーバノードの技術が知られている（例えば、特許文献１を参照）。
【先行技術文献】
【特許文献】
【００１７】
【特許文献１】特開２００６−２５２３９４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１８】
図３の例において各分割データのウィンドウ開始時刻から集計処理をＣＰＵに割当てた場合、１月１０日から後のデータは、ＣＰＵ１、ＣＰＵ２、ＣＰＵ３に読み込まれる。このように、各分割データの先頭から集計処理をＣＰＵに割り当てる情報処理装置において、ＣＰＵは、同じデータを重複して読み出し、DISK Input/Output(I/O)に負荷がかかってしまう。
【００１９】
本発明は１つの側面において、重複した読み込み処理を抑えつつ、並列処理を効率的に行うことを目的とする。
【課題を解決するための手段】
【００２０】
情報処理装置は、それぞれが異なる日時に対応付けられた複数のデータの集計処理を複数のプロセッサを用いて実行する。情報処理装置の制御部は、前記集計処理の対象期間内に設定されるウィンドウ集計期間を特定の期間ずつずらしつつ、それぞれのウィンドウ集計期間に対応付けられたデータの集計処理を実行する際に、前記集計処理の対象期間内に含まれる第１の期間に対応付けられたデータの集計処理を第１のプロセッサに割り当てるとともに、前記集計処理の対象期間内に含まれる、前記第１の期間の期初日時に対して前記ウィンドウ集計期間後の日時を期初日時とする第２の期間に対応付けられたデータの集計処理を第２のプロセッサに割り当てる。
【発明の効果】
【００２１】
本発明によれば、重複した読み込み処理を抑えつつ、並列処理を効率的に行うことができる。
【図面の簡単な説明】
【００２２】
【図１】ウィンドウ集計の差分処理の例を説明する図である。
【図２】分割並列処理の例を説明する図である。
【図３】ウィンドウ処理と並列処理を組み合わせた処理の例を説明する図である。
【図４】本実施形態に係る情報処理装置の構成の例を説明するブロック図である。
【図５】ＣＰＵの開始時刻と終了時刻の決定方法の例を説明する図（その１）である。
【図６】ＣＰＵの開始時刻と終了時刻の決定方法の例を説明する図（その２）である。
【図７】ＣＰＵの開始時刻と終了時刻の決定方法の例を説明する図（その３）である。
【図８Ａ】本実施形態に係る時系列データの集計処理の例を説明する図である。
【図８Ｂ】本実施形態に係る時系列データの集計処理の例を説明する図である。
【図８Ｃ】本実施形態に係る時系列データの集計処理の例を説明する図である。
【図８Ｄ】本実施形態に係る時系列データの集計処理の例を説明する図である。
【図８Ｅ】本実施形態に係る時系列データの集計処理の例を説明する図である。
【図８Ｆ】本実施形態に係る時系列データの集計処理の例を説明する図である。
【図８Ｇ】本実施形態に係る時系列データの集計処理の例を説明する図である。
【図８Ｈ】本実施形態に係る時系列データの集計処理の例を説明する図である。
【図８Ｉ】本実施形態に係る時系列データの集計処理の例を説明する図である。
【図８Ｊ】本実施形態に係る時系列データの集計処理の例を説明する図である。
【図８Ｋ】本実施形態に係る時系列データの集計処理の例を説明する図である。
【図８Ｌ】本実施形態に係る時系列データの集計処理の例を説明する図である。
【図８Ｍ】本実施形態に係る時系列データの集計処理の例を説明する図である。
【図９】本実施形態に係る情報処理装置のハードウェア構成の例である。
【図１０】本実施形態に係る情報処理装置の集計処理の例を説明するフローチャートである。
【図１１Ａ】情報処理装置における処理期間リストを作成する処理の例を説明するフローチャートである。
【図１１Ｂ】情報処理装置における処理期間リストを作成する処理の例を説明するフローチャートである。
【図１２Ａ】処理期間リストに基づいてＣＰＵに集計処理を実行させる処理の例を説明するフローチャートである。
【図１２Ｂ】処理期間リストに基づいてＣＰＵに集計処理を実行させる処理の例を説明するフローチャートである。
【図１２Ｃ】処理期間リストに基づいてＣＰＵに集計処理を実行させる処理の例を説明するフローチャートである。
【発明を実施するための形態】
【００２３】
長い期間で時系列データを分割して格納し、時系列データを並列にストリームで取り出す情報処理装置は、初期の出力が並列処理の効果を得られない。一方、短い期間で時系列データを分割して格納し、時系列データを連続ウィンドウ間でかく並列にストリームで取り出す情報処理装置は、無駄な重複処理が増える。
【００２４】
本発明に係る情報処理装置は、無駄な重複処理を抑えつつ、並列処理を効率的に行うことができる。
【００２５】
図４は、本実施形態に係る情報処理装置の構成の例を説明するブロック図である。本発明に係る情報処理装置３００において、複数のＣＰＵ（プロセッサ）は、時系列データの集計処理を並列に実行する。情報処理装置３００は、制御部３０１、記憶部３０２、入出力部３０３を備える。
【００２６】
記憶部３０２は、複数の分割データに分割された時系列データを記憶する。入出力部３０３は、時系列データの集計処理の対象となる集計対象期間、集計期間内で集計処理を実行する期間を表すウィンドウ集計期間、各ウィンドウ集計における差分（該ウィンドウ集計期間をスライドさせる時間量を表すスライド幅）とを、ユーザの入力により取得する。
【００２７】
制御部３０１は、情報処理装置３００に搭載されている複数のＣＰＵの各々に対応した、集計処理の開始時刻と終了時刻を決定する。更に、制御部３０１は、決定した開始時刻と終了時間に基づいて各ＣＰＵに処理を実行するように制御する。制御部３０１は、無駄な読み込み処理を抑えつつ、並列処理を効率的に行うように、複数のＣＰＵの開始時刻と終了時刻を制御する。
【００２８】
図５は、ＣＰＵの開始時刻と終了時刻の決定方法の例を説明する図（その１）である。図５の例は、２０１５年の１週間分（ウィンドウ集計期間）のレコードを１日毎（スライド幅）に集計する処理を３つのＣＰＵに分割して行わせる処理である。
【００２９】
図５における情報処理装置に格納されている時系列データは、分割された分割データ２０１ａ〜２０１ｇを含む。分割データ２０１ａは、２０１５年１月１日〜１月５日までのデータである。分割データ２０１ｂは、１月５日の途中〜１月９日までのデータである。分割データ２０１ｃは、１月９日の途中〜１月１２日までのデータである。分割データ２０１ｄは、１月１２日の途中〜１月１５日までのデータである。分割データ２０１ｅは、１月１５日の途中〜１月１６日までのデータである。分割データ２０１ｆは、１月１６日の途中〜１月１９日までのデータである。分割データ２０１ｇは、１月１９日の途中〜１月２１日までのデータである。
【００３０】
図５に係る並列処理では、ＣＰＵ１、ＣＰＵ２、ＣＰＵ３は、ウィンドウ幅（ウィンドウ集計期間）ずらしてウィンドウ集計処理を開始する。具体的には、制御部３０１は、ＣＰＵ１に１月１日から集計処理を開始させると、ＣＰＵ２に１月８日(１月１日＋１週間)から処理を開始させる。制御部３０１は、ＣＰＵ３に１月１５日（１月８日＋１週間）から処理を開始させる。ここで、各ＣＰＵに割り当てられたウィンドウ集計期間の開始日時を期初日時と称す。また、各ＣＰＵに割り当てられたウィンドウ集計期間の終了日時を期末日時と称す。
【００３１】
ここで、制御部３０１は、ＣＰＵ１、ＣＰＵ２、ＣＰＵ３の順番に並列処理を実行させるとする。そのため、仮に、ＣＰＵ１の次に処理をするＣＰＵを、ＣＰＵ２とする。更に、ＣＰＵ２の次に処理をするＣＰＵを、ＣＰＵ３とする。
【００３２】
制御部３０１は、ＣＰＵ１の次に処理をするＣＰＵ２の開始時刻（１月８日）からウィンドウ集計期間（１週間）ずらした時刻（１月８日＋１週間）からスライド幅（１日）を減算した時刻を、ＣＰＵ１の終了時刻（１月１４日）とする。制御部３０１は、ＣＰＵ２の次に処理をするＣＰＵ３の開始時刻（１月１５日）からウィンドウ集計期間（１週間）ずらした時刻（１月１５日＋１週間）からスライド幅（１日）を減算した時刻を、ＣＰＵ２の終了時刻（１月２１日）とする。
【００３３】
なお、図５におけるウィンドウ処理と並列処理を組み合わせた処理の処理性能は、以下の式で得られる。ウィンドウサイズ（ウィンドウ集計の期間）をＷ、スライド幅をＮＢ、並列数（ＣＰＵ数）をＰ、全体のデータ量（ここでは、２０１５年の１月１日〜１２月３１日までのデータ量）をＤと仮定する。
合計処理量≒３Ｄ
最大並列処理遅延＝ＮＢ＊Ｐ
バッファサイズ＝Ｗ＋ＮＢ
【００３４】
本発明に係る制御部３０１は、ＣＰＵの開始時刻をウィンドウ集計期間ずつずらして設定し、終了時刻を次に処理をするＣＰＵの開始時刻とウィンドウ集計期間とスライド幅に基づいて設定する。図３の例では、ＣＰＵ１とＣＰＵ３とが重複して同じデータを読み込んでいる。一方、本発明に係る制御部３０１は、ＣＰＵの開始時刻と終了時刻を決定し制御することで、ＣＰＵ１とＣＰＵ３は、同じデータを重複して読むことが発生しなくなり、無駄な読み込み処理を抑えつつ、並列処理を効率的に行うことができる。
【００３５】
図６は、ＣＰＵの開始時刻と終了時刻の決定方法の例を説明する図（その２）である。図６の例は、２０１５年の１週間分（ウィンドウ集計期間）のレコードを１日毎（スライド幅）に集計する処理を３つのＣＰＵに分割して行わせる処理である。図６の時系列は、図５と同様に、分割データ２０１ａ〜２０１ｇを含む。
【００３６】
図６に係る並列処理では、ＣＰＵ１、ＣＰＵ２、ＣＰＵ３は、ウィンドウ幅（ウィンドウ集計期間）ずらした時刻が属する分割データの次の分割データ内のウィンドウ開始時刻からウィンドウ集計処理を開始する。
【００３７】
制御部３０１は、ＣＰＵ１に１月１日から集計処理を開始させる。ＣＰＵ１の開始時刻からウィンドウ幅加算した１月８日(１月１日＋１週間)が分割データ２０１ｂに含まれるため、制御部３０１は、分割データ２０１ｂの次の分割データ２０１ｃのウィンドウ開始時刻１月１０日からＣＰＵ２に集計処理を開始させる。ＣＰＵ２の開始時刻からウィンドウ幅加算した１月１７日(１月１０日＋１週間)が分割データ２０１ｆに含まれるため、制御部３０１は、分割データ２０１ｆの次の分割データ２０１ｇのウィンドウ開始時刻１月２０日からＣＰＵ３に集計処理を開始させる。
【００３８】
制御部３０１は、ＣＰＵ１の次に処理をするＣＰＵ２の開始時刻（１月１０日）からウィンドウ集計期間（１週間）ずらした時刻（１月１０日＋１週間）からスライド幅（１日）を減算した時刻を、ＣＰＵ１の終了時刻（１月１６日）とする。制御部３０１は、ＣＰＵ２の次に処理をするＣＰＵ３の開始時刻（１月２０日）からウィンドウ集計期間（１週間）ずらした時刻（１月２０日＋１週間）からスライド幅（１日）を減算した時刻を、ＣＰＵ２の終了時刻（１月２６日）とする。
【００３９】
なお、図６におけるウィンドウ処理と並列処理を組み合わせた処理の処理性能は、以下の式で得られる。ウィンドウサイズ（ウィンドウ集計の期間）をＷ、スライド幅をＮＢ＋α、並列数（ＣＰＵ数）をＰ、全体のデータ量（ここでは、２０１５年の１月１日〜１２月３１日までのデータ量）をＤと仮定する。ここで、各ＣＰＵは、分割データのウィンドウ開始時刻までずれて処理を開始することがあるため、スライド幅をＮＢ＋αとしている。
合計処理量≒２Ｄ
最大並列処理遅延＝（ＮＢ＋α）Ｐ
バッファサイズ＝Ｗ＋ＮＢ＋α
【００４０】
本発明に係る制御部３０１は、ＣＰＵの開始時刻をウィンドウ集計期間ずつずらした時刻が含まれる分割データ内のはじめのウィンドウ開始時刻として設定し、終了時刻を次に処理をするＣＰＵの開始時刻とウィンドウ集計期間とスライド幅に基づいて設定する。このように制御部３０１が、ＣＰＵの開始時刻と終了時刻を決定し制御することで、ＣＰＵ１とＣＰＵ３は、同じデータを重複して読むことが発生しなくなり、無駄な読み込み処理を抑えつつ、並列処理を効率的に行うことができる。更に、制御部３０１は、図５の場合と比べ、処理量を低減させることができる。
【００４１】
図７は、ＣＰＵの開始時刻と終了時刻の決定方法の例を説明する図（その３）である。図７の例は、２０１５年の１週間分（ウィンドウ集計期間）のレコードを１日毎（スライド幅）に集計する処理を３つのＣＰＵに分割して行わせる処理である。図７の時系列は、図５と同様に、分割データ２０１ａ〜２０１ｇを含む。
【００４２】
図７に係る並列処理では、ＣＰＵ１、ＣＰＵ２、ＣＰＵ３は、ウィンドウ幅（ウィンドウ集計期間）ずらした時刻を開始時刻として、ウィンドウ集計処理を開始する。ここで、ＣＰＵ３は、ＣＰＵ１からウィンドウ幅を２回分ずらした開始時刻が含まれる分割データが、ＣＰＵ１の終了時刻が含まれる分割データと同じであるか否かを判定する。ＣＰＵ３の開始時刻が含まれる分割データと２つ前のＣＰＵ１の終了時刻とが同じ分割データに含まれる場合、ＣＰＵ３の開始時刻は、該同じ分割データの次の分割データ内のはじめのウィンドウ開始時刻となる。
【００４３】
制御部３０１は、ＣＰＵ１に１月１日〜１月１４日まで処理をさせる。制御部３０１は、ＣＰＵ２に１月８日（１月１日＋１週間）から処理をさせる。次に、制御部３０１は、ＣＰＵ３に１月１５日（１月８日＋１週間）から処理を開始させようとするものの、１月１５日とＣＰＵ１の終了時刻（１月１４日）は、同じ分割データ２０１ｄに含まれる。そのため、制御部３０１は、分割データ２０１ｄの次の分割データ２０１ｅのはじめのウィンドウ開始時刻である１月１６日をＣＰＵ３の開始時刻とする。
【００４４】
なお、図７におけるウィンドウ処理と並列処理を組み合わせた処理の処理性能は、以下の式で得られる。ウィンドウサイズ（ウィンドウ集計の期間）をＷ、スライド幅をＮＢ＋β、並列数（ＣＰＵ数）をＰ、全体のデータ量（ここでは、２０１５年の１月１日〜１２月３１日までのデータ量）をＤと仮定する。ここで、各ＣＰＵは、分割データのウィンドウ開始時刻までずれて処理を開始することがあるため、スライド幅をＮＢ＋βとしている。
合計処理量≒２Ｄ
最大並列処理遅延＝（ＮＢ＋β）Ｐ
バッファサイズ＝Ｗ＋ＮＢ＋β
【００４５】
このように制御部３０１が、ＣＰＵの開始時刻と終了時刻を決定し制御することで、図６の場合と比べてバッファサイズを低減させることができる。
【００４６】
図８Ａ〜図８Ｍは、本実施形態に係る時系列データの集計処理の例を説明する図である。本実施形態に係る制御部３０１は、図５〜図７の３つの方法を組み合わせて、ＣＰＵの開始時刻と終了時刻を決定する。
【００４７】
図８における情報処理装置３００に格納されている時系列データは、２０１５年１月１日〜２月１日までのデータであり、分割データ４０１ａ〜分割データ４０１ｈに分割されている。分割データ４０１ａは、２０１５年１月１日〜１月５日までのデータである。分割データ４０１ｂは、１月５日の途中〜１月９日までのデータである。分割データ４０１ｃは、１月９日の途中〜１月１２日までのデータである。分割データ４０１ｄは、１月１２日の途中〜１月１５日までのデータである。分割データ４０１ｅは、１月１５日の途中〜１月１６日までのデータである。分割データ４０１ｆは、１月１６日の途中〜１月１９日までのデータである。分割データ４０１ｇは、１月１９日の途中〜１月２１日までのデータである。分割データ４０１ｈは、１月２１日の途中〜２月１日までのデータである。
【００４８】
さらに、情報処理装置３００の記憶部３０２は、処理テーブル４１０、処理期間リスト４２０を有する。処理テーブル４１０は、制御部３０１の各種処理において一時的に用いる値を格納するテーブルである。処理テーブル４１０は、開始時刻、終了時刻、次の開始時刻のテーブルを備える。本実施形態において、制御部３０１は、ＣＰＵの開始時刻と終了時刻とを順番に決定する。そのため、制御部３０１は、例えば、ＣＰＵ１、ＣＰＵ２、ＣＰＵ１の順番で開始時刻と終了時刻を決定する。すると、「次の」開始時刻とは、開始時刻が設定されるＣＰＵ（例えば、ＣＰＵ１）の次に集計処理をするＣＰＵ（例えば、ＣＰＵ２）に設定される開始時刻である。処理期間リスト４２０は、各ＣＰＵ（ここではＣＰＵ１とＣＰＵ２）に処理をさせる処理対象の期間（開始時刻と終了時刻）を格納するテーブルである。
【００４９】
以下に、２０１５年１月１日〜１月３１日の１週間分のレコードを１日毎に集計する情報処理装置３００の具体的な集計処理を順に説明する。
【００５０】
（１）情報処理装置３００には、ユーザによる入出力部３０３の操作により処理要求情報（クエリ）が入力される。処理要求情報には、クエリ開始時刻、クエリ終了時刻、ウィンドウ幅、スライド幅、読み込み数上限値などが含まれる。例えば、図８Ａ〜図８Ｍに係る処理要求情報として、２０１５年１月１日（クエリ開始時刻）〜１月３１日（クエリ終了時刻）の１週間分（ウィンドウ幅）のレコードを１日（スライド幅）毎に集計し、読み込み数上限値が２である情報が入力される。ここで、クエリ開始時刻とクエリ終了時刻は、２０１５年１月１日（クエリ開始時刻）〜１月３１日（クエリ終了時刻）のように、集計処理の期間である。ウィンドウ幅は、集計の対象となる期間である。スライド幅は、ウィンドウ処理におけるスライドされる幅である。読み込み数上限は、データを同時に読み出すＣＰＵの数である。
【００５１】
（２）制御部３０１は、クエリ開始時刻（２０１５年１月１日）を処理テーブル４１０の開始時刻に登録する（図８Ａ）。
【００５２】
（３）制御部３０１は、仮ＣＰＵスライド幅を、ウィンドウ幅（１週間）として計算する。仮ＣＰＵスライド幅は、ＣＰＵ１とＣＰＵ２の開始時刻における一時的に設定するずれ幅である。
【００５３】
（４）制御部３０１は、処理テーブル４１０の開始時刻（２０１５年１月１日）にウィンドウ幅（１週間）を加算した時刻を、処理テーブル４１０の終了時刻（１月８日）に登録する。更に、制御部３０１は、処理テーブル４１０の開始時刻（２０１５年１月１日）に仮ＣＰＵスライド幅（１週間）を加算した時刻を、処理テーブル４１０の次の開始時刻（１月８日）に登録する（図８Ｂ）。
【００５４】
（５）制御部３０１は、処理期間リスト４２０に登録されている最後のＣＰＵの終了時刻と、処理テーブル４１０の次の開始時刻が同じ分割データに含まれているか否かを判定する。ここでは、処理期間リスト４２０が空であるため、処理期間リスト４２０の終了時刻と処理テーブル４１０の次の開始時刻は同じ分割データに含まれていない。
【００５５】
（６）制御部３０１は、処理テーブル４１０の終了時刻（１月８日）にスライド幅（１日）を加算した結果（１月９日）が、処理テーブル４１０の次の開始時刻（１月８日）にウィンドウ幅（１週間）を加算した結果（１月１５日）よりも小さいか否かを判定する。ここでは、処理テーブル４１０の終了時刻にスライド幅を加算した結果（１月９日）は、処理テーブル４１０の次の開始時刻にウィンドウ幅を加算した結果（１月１５日）よりも小さい。
【００５６】
（７）制御部３０１は、処理テーブル４１０の終了時刻（１月８日）に、スライド幅（１日）を加算し、終了時刻を１月９日に更新する（図８Ｃ）。
【００５７】
（８）制御部３０１は、処理テーブル４１０の終了期間（ＣＰＵ１対応）が、処理テーブル４１０内の次の開始時刻（ＣＰＵ２に対応）にウィンドウ幅を加算しスライド幅を減算した時刻になるまで（６）、（７）の処理を繰り返す。その結果、制御部３０１は、ＣＰＵ２の開始時刻（１月８日）にウィンドウ幅（１週間）を加算しスライド幅（１日）を減算した時刻（１月１４日）を、終了時刻に設定する（図８Ｄ）。
【００５８】
（９）制御部３０１は、処理テーブル４１０の開始時刻と終了時刻を、処理期間リスト４２０に登録する。ここでは、処理テーブル４１０の開始時刻と終了時刻を、処理期間リスト４２０のＣＰＵ１の開始時刻と終了時刻として登録する（図８Ｅ）。
【００５９】
（１０）制御部３０１は、処理テーブル４１０内の次の開始時刻に登録されている時刻（１月８日）を、処理テーブル４１０内の開始時刻に登録する（図８Ｅ）。
【００６０】
（１１）制御部３０１は、処理テーブル４１０の開始時刻（１月８日）にウィンドウ幅（１週間）を加算した時刻を、処理テーブル４１０の終了時刻（１月１５日）に登録する。更に、制御部３０１は、制御部３０１は、処理テーブル４１０の開始時刻（１月８日）に仮ＣＰＵスライド幅（１週間）を加算した時刻を、処理テーブル４１０の次の開始時刻（１月１５日）に登録する（図８Ｆ）。
【００６１】
（１２）制御部３０１は、処理期間リスト４２０に登録されている最後のＣＰＵの終了時刻（１月１４日）と、処理テーブル４１０の次の開始時刻（１月１５日）が同じ分割データに含まれているか否かを判定する。ここでは、制御部３０１は、処理期間リスト４２０の終了時刻（１月１４日）と処理テーブル４１０の次の開始時刻（１月１５日）が同じ分割データ４０１ｄに含まれていると判定する。
【００６２】
（１３）制御部３０１は、処理テーブル４１０の次の開始時刻（１月１５日）にスライド幅（１日）を加算し、結果（１月１６日）を該次の開始時刻に登録する（図８Ｇ）。
【００６３】
（１４）制御部３０１は、処理期間リスト４２０に登録されている最後のＣＰＵの終了時刻（１月１４日）と、処理テーブル４１０の次の開始時刻（１月１６日）が同じ分割データに含まれているか否かを判定する。ここでは、制御部３０１は、処理期間リスト４２０の終了時刻（１月１４日）が分割データ４０１ｄに含まれ、処理テーブル４１０の次の開始時刻（１月１６日）が分割データ４０１ｅに含まれ、異なる分割データに含まれていると判定する。
【００６４】
（１５）制御部３０１は、処理テーブル４１０の終了時刻（１月１５日）にスライド幅（１日）を加算した結果（１月１６日）が、処理テーブル４１０の次の開始時刻（１月１６日）にウィンドウ幅（１週間）を加算した結果（１月２３日）よりも小さいか否かを判定する。ここでは、処理テーブル４１０の終了時刻にスライド幅を加算した結果（１月１６日）は、処理テーブル４１０の次の開始時刻にウィンドウ幅を加算した結果（１月２３日）よりも小さい。
【００６５】
（１６）制御部３０１は、処理テーブル４１０の終了時刻（１月１５日）に、スライド幅（１日）を加算する。
【００６６】
（１７）制御部３０１は、処理テーブル４１０の終了期間が、処理テーブル４１０内の次の開始時刻にウィンドウ幅を加算しスライド幅を減算した時刻になるまで（１５）、（１６）の処理を繰り返す。その結果、制御部３０１は、処理テーブル４１０内の次の開始時刻（１月１６日）にウィンドウ幅（１週間）を加算しスライド幅（１日）を減算した時刻（１月２２日）を、終了時刻に設定する（図８Ｈ）。
【００６７】
（１８）制御部３０１は、処理テーブル４１０の開始時刻と終了時刻を、処理期間リスト４２０に登録する。ここでは、処理テーブル４１０の開始時刻と終了時刻を、処理期間リスト４２０のＣＰＵ２の開始時刻と終了時刻として登録する（図８Ｉ）。
【００６８】
（１９）制御部３０１は、処理テーブル４１０内の次の開始時刻に登録されている時刻（１月１６日）を、処理テーブル４１０内の開始時刻に登録する（図８Ｉ）。
【００６９】
（２０）制御部３０１は、処理テーブル４１０の開始時刻（１月１６日）にウィンドウ幅（１週間）を加算した時刻を、処理テーブル４１０の終了時刻（１月２３日）に登録する。更に、制御部３０１は、制御部３０１は、処理テーブル４１０の開始時刻（１月１６日）に仮ＣＰＵスライド幅（１週間）を加算した時刻を、処理テーブル４１０の次の開始時刻（１月２３日）に登録する（図８Ｊ）。
【００７０】
（２１）制御部３０１は、処理期間リスト４２０に登録されている最後のＣＰＵの終了時刻（１月２３日）と、処理テーブル４１０の次の開始時刻（１月２３日）が同じ分割データに含まれているか否かを判定する。ここでは、制御部３０１は、処理期間リスト４２０の終了時刻（１月２３日）と処理テーブル４１０の次の開始時刻（１月２３日）が同じ分割データ４０１ｈに含まれていると判定する。
【００７１】
（２２）制御部３０１は、処理テーブル４１０の次の開始時刻（１月２３日）にスライド幅（１日）を加算し、結果を該次の開始時刻に登録する。制御部３０１は、次の開始時刻にスライド幅を加算する処理を、処理期間リスト４２０に登録されている最後のＣＰＵの終了時刻と、処理テーブル４１０の次の開始時刻が異なる分割データに含まれるようになるまで繰り返す。結果、制御部３０１は、処理テーブル４１０の次の開始時刻に２月２日を登録する（図８Ｋ）。
【００７２】
（２３）制御部３０１は、処理テーブル４１０の終了時刻（１月２３日）にスライド幅（１日）を加算した結果（１月２４日）が、処理テーブル４１０の次の開始時刻（２月２日）にウィンドウ幅（１週間）を加算した結果（２月９日）よりも小さいか否かを判定する。ここでは、処理テーブル４１０の終了時刻にスライド幅を加算した結果（１月２４日）は、処理テーブル４１０の次の開始時刻にウィンドウ幅を加算した結果（２月９日）よりも小さい。
【００７３】
（２４）制御部３０１は、処理テーブル４１０の終了時刻に、スライド幅（１日）を加算する。
【００７４】
（２５）制御部３０１は、処理テーブル４１０の終了期間が、処理テーブル４１０内の次の開始時刻にウィンドウ幅を加算しスライド幅を減算した時刻になるまで（２３）、（２４）の処理を繰り返す。その結果、制御部３０１は、処理テーブル４１０内の次の開始時刻（２月２日）にウィンドウ幅（１週間）を加算しスライド幅（１日）を減算した時刻（２月８日）を、終了時刻に設定する（図８Ｌ）。
【００７５】
（２６）制御部３０１は、終了時刻（２月８日）が既にクエリ終了時刻（１月３１日）を超えているため、処理テーブル４１０の開始時刻と該クエリ終了時刻を処理期間リスト４２０に登録する。ここでは、処理テーブル４１０の開始時刻と該クエリ終了時刻を、処理期間リスト４２０のＣＰＵ１（３行目）の開始時刻と終了時刻として登録する（図８Ｍ）。
【００７６】
このように、制御部３０１は、複数のＣＰＵの開始時刻と終了時刻を決め、処理期間リスト４２０に登録する。その後、制御部３０１は、処理期間リスト４２０に基づいて、複数のＣＰＵに集計処理を実行させる。
【００７７】
図９は、本実施形態に係る情報処理装置のハードウェア構成の例である。情報処理装置３００は、プロセッサ１１、メモリ１２、バス１５、外部記憶装置１６、ネットワーク接続装置１９を備える。さらにオプションとして、情報処理装置１００は、入力装置１３、出力装置１４、媒体駆動装置１７を備えても良い。情報処理装置１００は、例えば、コンピュータなどで実現されることがある。
【００７８】
プロセッサ１１は、ＣＰＵなどの任意の処理回路である。プロセッサ１１は、制御部３０１として動作する。更に、ウッィンドウ集計処理に割り当てられるプロセッサと制御部３０１として動作するプロセッサは、異なるプロセッサである。なお、プロセッサ１１は、例えば、外部記憶装置１６に記憶されたプログラムを実行することができる。メモリ１２は、記憶部３０２として動作する。さらに、メモリ１２は、プロセッサ１１の動作により得られたデータや、プロセッサ１１の処理に用いられるデータも、適宜、記憶する。ネットワーク接続装置１９は、他の装置との通信に使用される。ネットワーク接続装置１９は、入出力部３０３として動作することができる。
【００７９】
入力装置１３は、例えば、ボタン、キーボード、マウス等として実現され、出力装置１４は、ディスプレイなどとして実現される。バス１５は、プロセッサ１１、メモリ１２、入力装置１３、出力装置１４、外部記憶装置１６、媒体駆動装置１７、ネットワーク接続装置１９の間を相互にデータの受け渡しが行えるように接続する。外部記憶装置１６は、プログラムやデータなどを格納し、格納している情報を、適宜、プロセッサ１１などに提供する。媒体駆動装置１７は、メモリ１２や外部記憶装置１６のデータを可搬記憶媒体１８に出力することができ、また、可搬記憶媒体１８からプログラムやデータ等を読み出すことができる。ここで、可搬記憶媒体１８は、フレキシブルディスク、Ｍａｇｎｅｔ−Ｏｐｔｉｃａｌ（ＭＯ）ディスク、Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅｃｏｒｄａｂｌｅ（ＣＤ−Ｒ）やＤｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ  Ｒｅｃｏｒｄａｂｌｅ（ＤＶＤ−Ｒ）を含む、持ち運びが可能な任意の記憶媒体とすることができる。
【００８０】
図１０は、本実施形態に係る情報処理装置の集計処理の例を説明するフローチャートである。情報処理装置３００には、ユーザによる入出力部３０３の操作によりクエリ開始時刻、クエリ終了時刻、ウィンドウ幅、スライド幅、読み込み数上限値などを含む処理要求情報（クエリ）が入力される（ステップＳ１０１）。制御部３０１は、処理期間リスト４２０を生成する（ステップＳ１０２）。制御部３０１は、処理期間リスト４２０に基づいて、ＣＰＵに集計処理を実行させる。
【００８１】
図１１Ａと図１１Ｂは、情報処理装置における処理期間リストを作成する処理の例を説明するフローチャートである。入出力部３０３に、クエリ開始時刻、クエリ終了時刻、ウィンドウ幅、スライド幅、読み込み数上限値などを含む処理要求情報（クエリ）が入力される（ステップＳ１０１）。制御部３０１は、クエリ開始時刻を処理テーブル４１０の開始時刻に登録する（ステップＳ２０１）。制御部３０１は、仮ＣＰＵスライド幅を、ウィンドウ幅として計算する（ステップＳ２０２）。制御部３０１は、処理テーブル４１０の開始時刻にウィンドウ幅を加算した時刻を、処理テーブル４１０の終了時刻に登録する（ステップＳ２０３）。制御部３０１は、処理テーブル４１０の開始時刻に仮ＣＰＵスライド幅を加算した時刻を、処理テーブル４１０の次の開始時刻に登録する（ステップＳ２０４）。
【００８２】
制御部３０１は、処理期間リスト４２０に登録されている最後のＣＰＵの終了時刻と、処理テーブル４１０の次の開始時刻が同じ分割データに含まれているか否かを判定する（ステップＳ２０５）。処理期間リスト４２０の終了時刻と処理テーブル４１０の次の開始時刻が同じ分割データに含まれている場合（ステップＳ２０５でＹＥＳ）、制御部３０１は、処理テーブル４１０の次の開始時刻にスライド幅を加算し、次の開始時刻に登録する（ステップＳ２０６）。ステップＳ２０６の処理が終了すると、制御部３０１は、処理をステップＳ２０５から繰り返す。
【００８３】
処理期間リスト４２０の終了時刻と処理テーブル４１０の次の開始時刻が異なる分割データに含まれる場合（ステップＳ２０５でＮＯ）、制御部３０１は、処理テーブル４１０の終了時刻にスライド幅を加算した結果が、処理テーブル４１０の次の開始時刻にウィンドウ幅を加算した結果よりも小さいか否かを判定する（ステップＳ２０７）。終了時刻にスライド幅を加算した結果が次の開始時刻にウィンドウ幅を加算した結果よりも小さい場合（ステップＳ２０７でＹＥＳ）、制御部３０１は、処理テーブル４１０の終了時刻に、スライド幅を加算し、終了時刻を更新する（ステップＳ２０８）。ステップＳ２０８の処理が終了すると、制御部３０１は、処理をステップＳ２０７から繰り返す。
【００８４】
終了時刻にスライド幅を加算した結果が次の開始時刻にウィンドウ幅を加算した結果よりも小さくない場合（ステップＳ２０７でＮＯ）、制御部３０１は、終了時刻がクエリ終了時刻である又はクエリ終了時刻よりも大きいか否かを判定する（ステップＳ２０９）。終了時刻がクエリ終了時刻よりも小さい場合（ステップＳ２０９でＮＯ）、制御部３０１は、処理テーブル４１０の開始時刻と終了時刻を、処理期間リスト４２０に登録する（ステップＳ２１０）。制御部３０１は、処理テーブル４１０内の次の開始時刻に登録されている時刻を、処理テーブル４１０内の開始時刻に登録する（ステップＳ２１１）。制御部３０１は、ステップＳ２１１の処理が終了すると、処理をステップＳ２０３から繰り返す。
【００８５】
終了時刻がクエリ終了時刻である又はクエリ終了時刻よりも大きい場合（ステップＳ２０９でＹＥＳ）、制御部３０１は、処理テーブル４１０の開始時刻とクエリ終了時刻を処理期間リスト４２０に登録する（ステップＳ２１２）。制御部３０１は、ステップＳ２１２の処理が終了すると、図１０のステップＳ１０２に係る各ＣＰＵの処理期間リストを作成する処理を終了し、次のステップＳ１０３の処理を実行する。
【００８６】
図１２Ａ〜図１２Ｃは、処理期間リストに基づいてＣＰＵに集計処理を実行させる処理の例を説明するフローチャートである。制御部３０１は、記憶部３０２に、「実行番号」、「出力番号」に０を記憶させ、且つ、全てのＣＰＵに処理待ちの状態を示す情報を記憶させる（ステップＳ３０１）。ここで、実行番号は、制御部３０１が処理を割り当てて集計処理を実行しているＣＰＵを管理するための番号である。出力番号は、集計処理を割当てたＣＰＵが終了したか否かを管理するための番号である。
【００８７】
制御部３０１は、処理期間リスト４２０内に未処理の処理期間が登録されているか否かを判定する（ステップＳ３０２）。処理期間リスト４２０内に未処理の処理期間が登録されている場合（ステップＳ３０２でＹＥＳ）、制御部３０１は、処理待ち状態のＣＰＵがあるか否かを判定する（ステップＳ３０３）。処理待ち状態のＣＰＵがある場合（ステップＳ３０３でＹＥＳ）、制御部３０１は、未処理の処理期間をＣＰＵに割り当てる（ステップＳ３０４）。制御部３０１は、該ＣＰＵの処理番号に現在の実行番号を代入する（ステップＳ３０５）。制御部３０１は、実行番号に＋１をし、記憶部３０１に記憶させる（ステップＳ３０６）。ステップＳ３０６の処理が終了すると、制御部３０１は、処理をステップＳ３０２から繰り返す。
【００８８】
処理待ちのＣＰＵがない場合（ステップＳ３０３でＮＯ）、制御部３０１は、ＣＰＵの何れか１つの処理が終了するまで待機する（ステップＳ３０７）。制御部３０１は、処理が完了したＣＰＵに、処理番号と出力番号が同じものがあるか否かを判定する（ステップＳ３０８）。処理番号と出力番号が同じＣＰＵがある場合（ステップＳ３０８でＹＥＳ）、制御部３０１は、該ＣＰＵの処理結果を出力（記憶部に記憶）し、該ＣＰＵの状態を処理待ち状態として記憶部に記憶させる（ステップＳ３０９）。制御部３０１は、出力番号に＋１をし、記憶部３０１に記憶さあせる（ステップＳ３１０）。制御部３０１は、ステップＳ３１０の処理が完了すると、処理をステップＳ３０８から繰り返す。処理番号と出力番号が同じものがない場合（ステップＳ３０８でＮＯ）、制御部３０１は、処理をステップＳ３０２から繰り返す。
【００８９】
処理期間リスト４２０内に未処理の処理期間が登録されていない場合（ステップＳ３０２でＮＯ）、制御部３０１は、全てのＣＰＵが処理待ちの状態であるか否かを判定する（ステップＳ３１１）。全てのＣＰＵが処理待ちの状態でない場合（ステップＳ３１１でＮＯ）、制御部３０１は、処理をステップＳ３０７から繰り返す。全てのＣＰＵが処理待ちの状態である場合（ステップＳ３１１でＹＥＳ）、制御部３０１は、ＣＰＵに集計処理を実行させる処理を終了し、本発明に係る処理を終了する。
【００９０】
本発明に係る制御部３０１は、各ＣＰＵの開始時刻と終了時刻を制御することで、同じデータを重複して読むことを低減させ、無駄な読み込み処理を抑えつつ、並列処理を効率的に行うことができる。
【符号の説明】
【００９１】
３００  情報処理装置
３０１  制御部
３０２  記憶部
３０３  入出力部
【図１】
2018005262.tif 000003
【図２】
2018005262.tif 000004
【図３】
2018005262.tif 000005
【図４】
2018005262.tif 000006
【図５】
2018005262.tif 000007
【図６】
2018005262.tif 000008
【図７】
2018005262.tif 000009
【図８Ａ】
2018005262.tif 000010
【図８Ｂ】
2018005262.tif 000011
【図８Ｃ】
2018005262.tif 000012
【図８Ｄ】
2018005262.tif 000013
【図８Ｅ】
2018005262.tif 000014
【図８Ｆ】
2018005262.tif 000015
【図８Ｇ】
2018005262.tif 000016
【図８Ｈ】
2018005262.tif 000017
【図８Ｉ】
2018005262.tif 000018
【図８Ｊ】
2018005262.tif 000019
【図８Ｋ】
2018005262.tif 000020
【図８Ｌ】
2018005262.tif 000021
【図８Ｍ】
2018005262.tif 000022
【図９】
2018005262.tif 000023
【図１０】
2018005262.tif 000024
【図１１Ａ】
2018005262.tif 000025
【図１１Ｂ】
2018005262.tif 000026
【図１２Ａ】
2018005262.tif 000027
【図１２Ｂ】
2018005262.tif 000028
【図１２Ｃ】
2018005262.tif 000029