IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オラクル・インターナショナル・コーポレイションの特許一覧

<>
  • 特許-計算プロセスの動的並列化 図1
  • 特許-計算プロセスの動的並列化 図2
  • 特許-計算プロセスの動的並列化 図3
  • 特許-計算プロセスの動的並列化 図4
  • 特許-計算プロセスの動的並列化 図5
  • 特許-計算プロセスの動的並列化 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-11-11
(45)【発行日】2022-11-21
(54)【発明の名称】計算プロセスの動的並列化
(51)【国際特許分類】
   G06F 9/48 20060101AFI20221114BHJP
   G06F 9/38 20060101ALI20221114BHJP
   G06F 9/50 20060101ALI20221114BHJP
【FI】
G06F9/48 300H
G06F9/38 370Z
G06F9/50 150E
【請求項の数】 15
(21)【出願番号】P 2019563486
(86)(22)【出願日】2018-04-27
(65)【公表番号】
(43)【公表日】2020-07-09
(86)【国際出願番号】 US2018029769
(87)【国際公開番号】W WO2018212958
(87)【国際公開日】2018-11-22
【審査請求日】2020-12-23
(31)【優先権主張番号】15/596,306
(32)【優先日】2017-05-16
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】コラチャラ,スブラマンヤム
(72)【発明者】
【氏名】シュ,ジエンウー
(72)【発明者】
【氏名】ホン,タク
(72)【発明者】
【氏名】ロッデンベリー,ラリー
(72)【発明者】
【氏名】フアン,ドンション
(72)【発明者】
【氏名】ホスラビ,メディ
(72)【発明者】
【氏名】ホランド,フィリップ
(72)【発明者】
【氏名】パテル,ビマル
(72)【発明者】
【氏名】モハン,アヌープ
(72)【発明者】
【氏名】シェティ,キラン
(72)【発明者】
【氏名】ラン,ウェイガン
(72)【発明者】
【氏名】ブレメケ,エリク
(72)【発明者】
【氏名】フアン,ヂービン
(72)【発明者】
【氏名】コルター,スコット
【審査官】河合 弘明
(56)【参考文献】
【文献】特開平04-058370(JP,A)
【文献】特開2009-151645(JP,A)
【文献】大越 雄一,外5名,「GPUクラスタを用いた大規模生体シミュレーションにおけるCPU・GPU間データ転送の効率化」,情報処理学会 研究報告 ハイパフォーマンスコンピューティング(HPC) 2013-HPC-140 [online] ,情報処理学会,2013年07月24日,第2013-HPC-140巻,第31号,pp.1-7
【文献】Judith MESKILL,「Oracle Retail Predictive Application Server Administration Guide for the Classic Client」,Release 14.1,Oracle Corporation,2014年12月,p.9-10,インターネット <URL: https://docs.oracle.com/cd/E12478_01/rpas/pdf/141/rpas-141-classic-admin.pdf>
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/455-9/54
G06F 9/38
(57)【特許請求の範囲】
【請求項1】
ルールベースの数式のセットを評価するために並列計算プランを生成するためのコンピュータによって実行される方法であって、
前記ルールベースの数式のセットを複数のタスクユニットに分割するステップと、
前記複数のタスクユニットを、並列化可能なタスクグループのシーケンシャルなセットに配列するステップとを備え、前記ルールベースの数式のセットに関連付けられた論理的依存性および問題分割によってシーケンシャルな順序が決定され、前記方法はさらに、
前記並列化可能なタスクグループのシーケンシャル実行順序と、前記並列化可能なタスクグループの各々の中の前記タスクユニットの並列実行順序とを備える前記並列計算プランを生成するステップを備え、
前記ルールベースの数式の各々は、1つ以上の右辺の項と、当該右辺の項の関数として表される左辺の項を含み、
前記複数のタスクユニットは、前記ルールベースの数式のセットにおける前記ルールベースの数式の各々を評価するために必要な1つ以上の初期化タスクユニットを備え、
各前記1つ以上の初期化タスクユニットは、前記ルールベースの数式の各々について、当該数式の左辺の項に関連付けられた記憶場所をクリアすること、および前記右辺の項に関連付けられたデータを定量化した定量化データを格納するデータ構造を作成することを含む、コンピュータによって実行される方法。
【請求項2】
前記複数のタスクユニットは、前記数式のセットにおける前記ルールベースの数式の各々を評価するために必要な1つ以上集約のタスクユニットと、1つ以上の計算タスクユニットとを備え、前記集約のタスクユニットは前記右辺の項に関連付けられたデータを定量化するため実行され、前記定量化データ前記計算タスクユニットにより使用され、前記集約のタスクユニットの実行は前記計算タスクユニットの実行に先行する、請求項1に記載のコンピュータによって実行される方法。
【請求項3】
前記並列化可能なタスクグループのシーケンシャルなセットからの1つ以上の並列化可能なタスクグループを並列化可能なサブタスクグループの並列なセットに分割するステップをさらに備える、請求項1または2に記載のコンピュータによって実行される方法。
【請求項4】
前記並列化可能なサブタスクグループの並列なセットは、前記並列化可能なタスクグループのシーケンシャルなセットからの前記1つ以上の並列化可能なタスクグループの範囲ベースの並列化によって生成される、請求項3に記載のコンピュータによって実行される方法。
【請求項5】
前記並列計算プランは、計算エンジンによって生成され、中間層レイヤーに送られて、スケジューリングされ、実行される、請求項1~4のいずれかに記載のコンピュータによって実行される方法。
【請求項6】
前記計算エンジンは、小売り予測アプリケーションサーバ(RPAS)の一部である、請求項5に記載のコンピュータによって実行される方法。
【請求項7】
前記並列計算プランは、コンピュータのクラスタにわたる並列実行をスケジューリングされる、請求項1~6のいずれかに記載のコンピュータによって実行される方法。
【請求項8】
ルールベースの数式のセットを評価するために並列計算プランを生成するためのシステムであって、
ルールベースの数式の1つ以上のセットを複数のタスクユニットに分割するための第1のユニットと、
前記複数のタスクユニットを、並列化可能なタスクグループのシーケンシャルなセットに配列するための第2のユニットとを備え、前記ルールベースの数式のセットに関連付けられた論理的依存性および問題分割によってシーケンシャルな順序が決定され、前記システムはさらに、
前記並列化可能なタスクグループのシーケンシャル実行順序と、前記並列化可能なタスクグループの各々の中の前記タスクユニットの並列実行順序とを備える前記並列計算プランを生成するための第3のユニットを備え、
前記ルールベースの数式の各々は、1つ以上の右辺の項と、当該右辺の項の関数として表される左辺の項を含み、
前記複数のタスクユニットは、前記ルールベースの数式のセットにおける前記ルールベースの数式の各々を評価するために必要な1つ以上の初期化タスクユニットを備え、
各前記1つ以上の初期化タスクユニットは、前記ルールベースの数式の各々について、当該数式の左辺の項に関連付けられた記憶場所をクリアすること、および前記右辺の項に関連付けられたデータを定量化した定量化データを格納するデータ構造を作成することを含む、システム。
【請求項9】
前記複数のタスクユニットは、前記数式のセットにおける前記ルールベースの数式の各々を評価するために必要な1つ以上の集約のタスクユニットと、1つ以上の計算タスクユニットとを備え、前記集約のタスクユニットは前記右辺の項に関連付けられたデータを定量化するため実行され、前記定量化データは前記計算タスクユニットにより使用され、前記集約のタスクユニットの実行は前記計算タスクユニットの実行に先行する、請求項8に記載のシステム。
【請求項10】
前記第2のユニットは、さらに、前記並列化可能なタスクグループのシーケンシャルなセットからの1つ以上の並列化可能なタスクグループを並列化可能なサブタスクグループの並列なセットに分割する、請求項8または9に記載のシステム。
【請求項11】
前記並列化可能なサブタスクグループの並列なセットは、前記並列化可能なタスクグループのシーケンシャルなセットからの前記1つ以上の並列化可能なタスクグループの範囲ベースの並列化によって生成される、請求項10に記載のシステム。
【請求項12】
前記第1のユニットおよび前記第2のユニットは、計算エンジンを構成し、前記計算エンジンによって生成された前記並列計算プランは、中間層レイヤーに送られて、スケジューリングされ、実行される、請求項8~11のいずれかに記載のシステム。
【請求項13】
前記計算エンジンは、小売り予測アプリケーションサーバ(RPAS)の一部であり、前記並列計算プランは、コンピュータのクラスタにわたる並列実行をスケジューリングされる、請求項12に記載のシステム。
【請求項14】
前記並列計算プランは、コンピュータのクラスタにわたる並列実行をスケジューリングされる、請求項8~13のいずれかに記載のシステム。
【請求項15】
請求項1~7のいずれかに記載の方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
分野
一実施形態は、一般にプランニングシステムに向けられ、特にプランニングシステムにおける計算プロセスの向上に向けられる。
【背景技術】
【0002】
背景情報
プランニングシステムは、小売業者が小売業全体にわたって売上高、営業利益率および在庫回転率を計画および管理することに役立つ。このようなシステムでは、ビジネスロジックは、「ルール」を使用して表されてもよい。たとえば、ルール:売上高=価格×個数は、「売上高」を一個当たりの「価格」および販売「個数」に応じて表し、一個当たりの「価格」に販売「個数」を乗算することによってそれを評価する。ルールにおける各項は、プランニングデータベースにおけるデータオブジェクトにマッピングされる。大規模なプランニングシステムは、このようなルールを数百から数千個含んでもよい。これらのルールは、予め構成されるか、または動的に生成される。このようなルールは、時にはオンラインで、時にはバッチ形式で、頻繁に再評価されなければならない。データの量が多く、システムにおいて定義されるルールの数が多いために、計算の性能がプランニングシステムの全体性能の重要な側面になる。
【発明の概要】
【0003】
概要
一実施形態は、ルールベースの数式のセットを評価するために並列計算プランを生成するシステムに向けられる。上記システムは、上記ルールベースの数式のセットを複数のタスクユニットに分割する。次いで、上記システムは、上記複数のタスクユニットを、並列化可能なタスクグループのシーケンシャルなセットに再配列し、上記ルールベースの数式のセットに関連付けられた論理的依存性および問題分割によってシーケンシャルな順序が決定される。
【図面の簡単な説明】
【0004】
図1】本発明の実施形態に係る、計算プロセスを最適化するための並列計算プラン生成モジュールを含むコンピュータサーバ/システムのブロック図である。
図2】本発明の実施形態に係る計算並列化プランのブロック図である。
図3】本発明の実施形態に係るRPASプラットフォーム上での計算並列化プラン実行の動作フロー図である。
図4】本発明の実施形態に係る並列計算プランにおけるシーケンシャル順序付け基準の図である。
図5】本発明の実施形態に係るメジャー(measure)ベースの並列化された計算プランのブロック図である。
図6】本発明の実施形態に係るメジャーベースおよび範囲ベースの並列化された計算プランのブロック図である。
【発明を実施するための形態】
【0005】
詳細な説明
アナリティクスの計画および管理のためのルールベースの数式の評価は、数式間の論理的相互依存性によって決定されるシーケンシャルなプロセスである。数式のセットの評価は、しばしば、シーケンシャルなパターンを含む。なぜなら、特定の数式の評価は、リスト内の他の箇所に登場する数式の計算結果に左右され得るからである。したがって、既存の計算プラットフォームに関連付けられた計算エンジンは、既存の論理的依存性を識別し、それに応じて、ルールセットまたはルールベースの数式リストの評価を実行するために必要な計算プロセスをシーケンシャル化する。しかし、ルールセットのシーケンシャルな評価は、ビッグデータアナリティクスおよび管理のための高度にスケーラブルな計算および処理プラットフォームを提供する新たな技術および高性能ハードウェアアーキテクチャの開発と足並みをそろえてこなかった。新たな高性能の計算および処理アーキテクチャの利用を可能にする革新的アプローチを使用して、ルールベースの数式リストまたはルールセットの評価に関連する速度およびスケーラビリティを向上させる必要がある。
【0006】
旧世代のソリューションは、「スケールアップ」によって(すなわち、より高価なハードウェアを利用することによって)性能問題に対処する傾向がある。しかし、クラウドアプローチでは、既存のソリューションは、「水平スケーリング」によって(すなわち、より多くのコモディティハードウェアを追加して実行を並列に行うことによって)性能問題に対処する傾向がある。ルールベースの計算では、水平スケーリングアプローチにおける重要な問題は、ルールベースの計算を並列に実行することに関連する難しさである。既存のソリューションでは、可能なら、アプリケーション開発者または設計者が、どのようにして計算を分割して並列に実行できるかを指定する。
【0007】
本発明の実施形態では、シーケンシャルに実行される計算ステップを、並列化されたタスクグループのシーケンシャルなセットに分解することによって、ルールベースの数式の計算のための並列化が実行される。本発明の実施形態によって開示されているルールベースの数式の計算プロセスを並列化することは、新たな高性能のスケーラブルな計算および処理プラットフォームを十分に活用することができる新規のアプローチであり、従来のアプローチと比較して速度、時間および効率の点で大幅な性能の向上をもたらす。
【0008】
なお、本発明の実施形態によれば、並列化されたまたは並列化可能なタスクまたはサブタスクグループとは、複数の処理ノードにわたってまたは複数の処理スレッドを使用して並列に実行され得る、同一の階層計算レベルにおける論理的に独立したオペレーションを含むタスクまたはサブタスクのグループを指す。タスクまたはタスクユニットとは、実行プラン内で個々に実行可能なオペレーションの一単位を指す。
【0009】
さらに、本発明の実施形態によれば、並列化されたまたは並列化可能なタスクグループのシーケンシャルなセットとは、シーケンシャルな実行順序に従って配列されることにより、各々の並列化されたタスクグループの並列実行が、以前にシーケンシャルなセットの中に登場した1つ以上の並列化されたタスクグループの完了に左右される複数の並列化されたタスクグループを指す。このシーケンシャルな順序は、ルールセットにおける数式間の論理的依存性および/または問題分割(すなわち、関連する計算の階層レベル)によって決められてもよい。
【0010】
実施形態は、ルールベースの数式リストを評価するために計算プロセスのシーケンシャルな側面の実行に並列化を導入する。実施形態は、ルールベースの数式リストに固有の論理的依存性のセットによって実現されるシーケンシャルな順序を維持しながら、シーケンシャルなステップの評価に関与するタスクおよびオペレーション間の並列化を導入する。その結果、シーケンシャルに実行される計算ステップのセットに関与する各計算ステップは、より速い速度で、より高い時間およびリソース利用効率で評価を行うことになる。複数のシーケンシャルな計算ステップを実行することを含む従来のルールセット評価アプローチと比較して、本発明の実施形態では、たとえばシーケンシャルな計算ステップを1つ以上の並列化されたタスクグループのセットとして再構築することによって、ルールセット評価プロセスに関連付けられた時間およびリソース利用を大幅に向上させる。
【0011】
上記のように、既存のソリューションは、アプリケーション開発者または分析者に頼って、どのようにして計算プロセスを直接的または間接的に並列に実行できるかを指定する。これは、一般に、「スパーク」もしくは「Java(登録商標)ストリームAPI」などのアプリケーションプログラミングインターフェイス(「API」)またはスクリプトを使用することによって達成され、または実行フローをパイプライン(たとえば、「アパッチピッグ」または「クランチ」)として指定することによって達成される。並列化を実行プロセスに組み込むこれらの既存の方法論の共通の特徴は、それらが予め定義されなければならないことである。本発明の実施形態では、ルールセット評価に関与する実行プロセスを動的に並列化して、性能を実質的に向上させてオペレーション時間を削減するユニークな方法について説明する。
【0012】
実施形態では、ルールベースの数式のセットを自動的に分析して、1つ以上のコンピュータクラスタにわたって並列に実行可能な計算タスクのセットに変換することによって、ルールセット計算性能を向上させる。実施形態では、ルールベースの数式のセットを分析し、論理的依存性および問題分割に基づいてルールをより小さなタスクに分解し、次いで、生成されたタスクおよび問題分割に基づいてルールのセットのための並列実行プランを自動的に生成する。次いで、実行プランは、送られて、コンピュータクラスタを利用して並列に実行される。
【0013】
スケーラブルプロセッサアーキテクチャ(「SPARC」)などの既存の技術は、プログラミング言語を介して並列化を実行する。したがって、計算プロセスにおける依存性を指定して実行順序を決定するのは、プログラマである。これに対して、本発明の実施形態は、ルールベースの数式のセットのための並列実行プランを生成することを含む計算並列化への高度に設定可能で動的なアプローチを開示する。したがって、本発明の実施形態によれば、依存性は、評価対象のルールベースの数式に基づいて動的にアドレス指定される。
【0014】
本発明の実施形態では、ルールセットを評価することに関連付けられた計算は、複数のより小さなタスクに分割され、複数の並列化されたタスクグループに配列される。並列化されたタスクグループに配列されるタスクは、並列に実行され得る各々のルールベースの数式の構成要素を備える。これらの構成要素は、前に引き出されて、1つ以上の並列化されたタスクグループの一部として並列に実行されてもよく、1つ以上の並列化されたタスクグループは、さらに、1つ以上の並列化されたサブタスクグループに細分されてもよい。SPARCに関する1つの相違点は、開示されている実施形態では数式および範囲に基づいて並列化が実行されることである。
【0015】
図1は、本発明の実施形態に係るコンピュータサーバ/システム(すなわち、システム10)のブロック図である。単一のシステムとして示されているが、システム10の機能は、分散システムとして実現されてもよい。さらに、本明細書に開示されている機能は、ネットワーク上で結合され得る別々のサーバまたはデバイス上で実現されてもよい。さらに、システム10の1つ以上の構成要素は、含まれていなくてもよい。たとえば、データベース管理システムの機能の場合は、システム10は、一般にディスプレイ24または図1に示される1つ以上の他の構成要素を必要としないサーバであってもよい。
【0016】
システム10は、情報を通信するためのバス12または他の通信機構と、情報を処理するための、バス12に結合されたプロセッサ22とを含む。プロセッサ22は、プロセッサ22が複数の計算を並列に実行できるように各ノードが独立してスケジューリングされ得るように処理ノードのクラスタも備えてもよい。プロセッサ22は、いかなるタイプの汎用または特殊目的プロセッサであってもよい。システム10は、情報およびプロセッサ22によって実行される命令を格納するためのメモリ14をさらに含む。メモリ14は、1つ以上のルールセットのための1つ以上の並列化された実行テーブルまたは計算プランも含んでもよく、これらの1つ以上の並列化された実行テーブルまたは計算プランは、複数の処理ノードにわたる並列実行をスケジューリングされてもよい。メモリ14は、ランダムアクセスメモリ(「RAM」)、リードオンリメモリ(「ROM」)、磁気もしくは光ディスクなどのスタティックストレージ、またはその他のタイプのコンピュータ読取可能媒体の任意の組み合わせで構成することができる。システム10は、ネットワークへのアクセスを提供するためのネットワークインターフェイスカードなどの通信装置20をさらに含む。したがって、ユーザは、直接的に、またはネットワークを介してリモートで、またはその他の方法で、システム10と接続してもよい。
【0017】
コンピュータ読取可能媒体は、プロセッサ22によってアクセス可能であって、かつ、揮発性および不揮発性媒体、リムーバブルおよびノンリムーバブル媒体、ならびに通信媒体を含む任意の入手可能な媒体であってもよい。通信媒体は、搬送波または他の搬送機構などの変調データ信号の中にコンピュータ読取可能な命令、データ構造、プログラムモジュールまたは他のデータを含んでもよく、任意の情報配信媒体を含む。
【0018】
プロセッサ22は、さらに、バス12を介して液晶ディスプレイ(「LCD」)などのディスプレイ24に結合されてもよい。キーボード26およびコンピュータマウスなどのカーソル制御装置28は、さらに、ユーザが必要に応じてシステム10と接続できるようにバス12に結合されてもよい。
【0019】
一実施形態では、メモリ14は、プロセッサ22によって実行されたときに機能を提供するソフトウェアモジュールを格納する。これらのモジュールは、オペレーティングシステム機能をシステム10に提供するオペレーティングシステム15を含む。これらのモジュールは、並列化された実行スキームを生成するための並列計算プラン生成モジュール16、および本明細書に開示されている全ての他の機能をさらに含む。システム10は、オラクル社製のオラクルデータベースシステムまたは任意のデータベース管理システムに対する追加機能などの、より大規模なシステムの一部であってもよい。したがって、システム10は、追加機能モジュール18などの1つ以上の追加機能モジュールを含み得る。データベース17は、並列計算プラン生成モジュール16および追加機能モジュール18(すなわち、データベース管理モジュール)に集中ストレージを提供するようにバス12に結合される。一実施形態では、データベース17は、非構造化照会言語(「NoSQL」)データベースであり、並列計算プラン生成モジュール16は、オラクル小売り予測アプリケーションサーバ(「RPAS」)の一部として実現される。本発明のさまざまな実施形態に関連付けられたこれらの例示的な特徴、すなわちNoSQLデータベースおよびRPASについては、以下でさらに詳細に説明する。
【0020】
オラクル小売り予測アプリケーションサーバ(一般に「RPAS」と称される)は、予想およびプランニングアプリケーションを開発するための設定可能なソフトウェアプラットフォームである。RPASプラットフォームは、多次元データベース構造バッチおよびオンライン処理、設定可能なスライス・アンド・ダイスユーザインターフェイス、高性能の設定可能な計算エンジン、インポートおよびエクスポートなどのユーザセキュリティおよびユーティリティ機能などの機能を提供する。
【0021】
RPASは、オラクル小売り需要予想、オラクル製品財務計画、オラクル品揃え計画、オラクルアイテム計画、オラクルサイズプロファイル最適化、オラクル補充最適化およびオラクル高度在庫計画などのオラクル小売りソリューションフットプリントの一部である相当数のアプリケーションの基礎である。現在のところ、RPASは、2つのデータ永続性オプション、すなわちオラクル・バークレー・データベースに基づく専有のデータストア、またはオラクルRDBMS、を提供する。
【0022】
NoSQLデータベースは、リレーショナルデータベースで使用される表形式の関係以外の手段でモデル化されるデータの格納および検索のための機構を提供する。NoSQLデータベースは、ビッグデータおよびリアルタイムウェブアプリケーションでますます使用されるようになっている。NoSQLシステムは、SQLのような照会言語をサポートできることを強調するために、時には「ノット・オンリー・SQL」とも呼ばれる。このアプローチに対する動機付けとしては、設計がシンプルであること、マシンのクラスタへの「水平」スケーリング(リレーショナルデータベースにとっての問題である)がよりシンプルであること、および可用性に対する微調整がきくことが挙げられる。NoSQLデータベースによって使用されるデータ構造(たとえば、キーバリュー、ワイドカラム、グラフまたはドキュメント)は、リレーショナルデータベースでデフォルトで使用されるものとは異なっており、NoSQLにおけるいくつかのオペレーションを高速化する。所与のNoSQLデータベースの特定の適性は、それが解決しなければならない問題に左右される。往々にして、NoSQLデータベースによって使用されるデータ構造は、リレーショナルデータベーステーブルよりも「柔軟性がある」とも考えられる。
【0023】
一般に、本発明の実施形態では、各ステップを複数の独立したタスクおよびサブタスクに分割することによって、ルールセット評価に関与する各々のシーケンシャルな計算ステップ中に並列化を生じさせ、これらの複数の独立したタスクおよびサブタスクは、可能なときは並列に実行されてもよく、可能でないときはサブタスクが順番に実行される。
【0024】
図2は、本発明の実施形態に係る並列化プランの概要を示す。並列計算プラン202は、図2における204,206,208および210によって指定されるルールベースの数式リストまたはルールセットの評価を実行するために1つ以上のシーケンシャルな計算ステップを含む。シーケンシャルなステップは、各々のシーケンシャルな計算ステップが実行可能になる前に以前のステップの完了を必要とするようにシーケンシャルな関係を維持する。しかし、各々のシーケンシャルなステップは、並列タスクのセットとして実行されてもよい。タスクは、実行プラン内で個々に実行可能なオペレーションの一単位である。
【0025】
図2における計算プラン202を参照して、第1のシーケンシャルなステップ204は、独立して同時に実行され得る並列タスク1~4に分解される。この並列実行の結果、第1のシーケンシャルなステップ204は、より早く完了することになり、その結果、第2のシーケンシャルなステップ206が早く開始される。同様に、第2のシーケンシャルなステップ206は、図2に示されるように並列化可能なタスクのセットとして実行されてもよく、その結果、第3のシーケンシャルなステップ208の開始がさらに早められる。同一のオペレーションが第4のシーケンシャルなステップ210でも同様に行われる。このようにして、計算プラン202は、シーケンシャルなステップの並列実行により、大幅なスピードアップを提供しながら計算ステップのシーケンシャルな順序を維持する並列化可能なタスクグループのシーケンスに分解される。
【0026】
図3は、実施形態に係る並列化された計算プロセスの動作フローを示す。サーバ側のマイクロサービス層302が、ルールセット評価プロセスを起動する。命令がRPAS層304に送られ、そこで、並列化された計算プランが計算エンジン(CalcEngine)によって生成される。CalcEngineは、ルールセットの評価を実行するために必要なタスクのシーケンシャルかつ並列な実行パターンを論理的に判断し、それに応じて実行プランを生成する。バックエンドで実行されるCalcEngineは、タスクスケジューリング機能を持たないため、プランは、一旦CalcEngineによって生成されると、中間層マイクロサービス層302に戻されて、実行され、並列実行のための処理ノードのクラスタに分散される。たとえば、CalcEngineによって生成された実行プランが、たとえば並列に実行され得る500個の並列タスクを含むように特定のシーケンシャルなステップを指定する場合、マイクロサービス層302は、1つの計算タスクを各ノードに割り当てる500個のノードにオペレーションを分散させてもよい。図3に示されるように、計算プランの実行は、RPAS層におけるタスク実行部308,310および312にわたるタスクの第1のセットの並列実行をスケジューリングするマイクロサービス層302によって指示される。実行が完了すると、プラン実行部は、計算の次のシーケンシャルなステップに関連付けられた並列タスクの後続のセットがスケジューリングされて、タスク実行部314,316および318に割り当てられ得るように通知される。このようにして、シーケンシャルなステップに含まれるタスクは、複数のタスク実行部にわたって同時に実行され、これにより、ルールセットの評価が大幅にスピードアップされる。
【0027】
図3に示されるように、マイクロサービス層(中間層)302は、前の並列化されたタスクグループを実行するタスク実行部から完了通知を受信したときにのみ並列タスクの各セットがスケジューリングされるので計算のシーケンシャルな順序が維持されることを確実にしながら、タスクの並列実行をスケジューリングする。計算プランは、NoSQLデータベース層320におけるプラン/タスクテーブル319に格納される。タスクの実行は、メジャーデータテーブルからメジャーデータを読み取ることと、タスクの実行結果を用いてメジャーデータテーブルを更新することとを含む。したがって、NoSqlデータベース層320は、メジャーデータテーブル320も含む。メジャーは、特定のタイプのデータを保持するエンティティに相当する。たとえば、メジャーは、「売上高」について作成されてもよい。そして、売上高メジャーは、全てのストック・キーピング・ユニット(「SKU」)についての関連データ(すなわち、売上データ)を含む。
【0028】
ルールエンジンによって生成される最初のルールベースの数式リストは、分解されて、複数のシーケンシャルに順序付けられた計算ステップとして再編成される。計算ステップのシーケンシャルな順序は、計算ステップ間の論理的依存性および数式リストにおける評価対象のメジャーの交差によって決まる。したがって、他の数式の結果に依存しない全ての数式、たとえばA=5またはB=今日は、一緒に1つのシーケンシャルなステップにプールされて、並列に実行されてもよい。しかし、特定の数式は、他の数式の評価結果に依存し得る。たとえば、数式「A=B.top」の評価では、「B」の計算を最初に完了させる必要がある。したがって、「B」の評価は、この場合、「A」の評価に先行しなければならないため、シーケンシャルな計算順序は、このシーケンシャルな関係を反映しなければならない。
【0029】
上記のように、ルールセットの評価に必要なシーケンシャルな順序およびシーケンシャルな計算ステップの数を判断するための1つの基準は、計算が実行される階層または交差レベルである。たとえば、より高いレベルでのメジャーの計算は、より低いレベルでのこのメジャーに関連付けられた値の集約を必要とし得る。計算レベルの変化は、並列処理レベルの変化を伴うため、新たな計算ステップを必要とし得る。したがって、数式のレベル間評価に関連付けられた計算は、さまざまなシーケンシャルなステップにおいて評価されるが、同一レベルの数式に関連付けられた計算は、同一のステップにおいて並列に評価され得る。上記の関連付けられた計算レベルに加えて、ルールセットにおける数式間の論理的依存性は、本発明の実施形態に係るルールセットの完全な評価に関連付けられた複数のシーケンシャルな計算ステップの境界を明示する障壁として機能する。
【0030】
既存の論理的依存性および関連付けられた計算間の交差またはレベル変化に基づいて、ルールベースの数式リストがシーケンシャルな計算ステップのセットに分解されて再編成されると、次のステップでは、各ステップに関連付けられた計算を実行する。ルールベースの数式は、1つ以上の右辺(「RHS」)メジャー(項)の関数として表される左辺(「LHS」)メジャー(項)を含む式または数式として表されてもよい。したがって、シーケンシャルな計算ステップに関連付けられた計算を実行することは、RHSメジャーの関数としてLHSメジャーを評価することを含んでもよい。この動作は、最初に、RHSメジャーを定量化するために集約サブタスクを実行することを必要とし得る。集約サブタスクの実行は、さらに、初期化サブタスクの完了を必要とし得て、この初期化サブタスクは、関連付けられた記憶場所から1つ以上のLHSメジャーインスタンスをクリアすることと、新たなRHSメジャーインスタンスのためのデータ構造を集約レベルで作成することとを含む。したがって、計算ステップは、シーケンシャルに順序付けられたサブタスクセット、すなわち、メジャーデータをクリーンアップして、集約レベルメジャーインスタンスを格納するための新たなデータ構造を作成するための初期化サブタスクと、集約レベルメジャーインスタンスを生成するための集約サブタスクと、最後に、集約レベルメジャーインスタンスをパラメータとして使用して実際の数式を評価するための計算サブタスクとを含んでもよい。
【0031】
複数の初期化サブタスクは、オペレーションの独立性のために同時に実行されてもよい。同様に、独立したメジャーインスタンスを含む複数の集約サブタスクは、並列に実行されてもよい。したがって、含まれる計算のタイプによっては、いくつかの計算ステップは、初期化サブタスクおよび/または集約サブタスクのうちの一方または両方を含まなくてもよい。したがって、計算プランの形成は、動的なプロセスである。最後の計算ステップに続く計算プランの終了時に、最後のクリアアップタスクが実行されてもよい。
【0032】
図4は、実施形態に係る並列計算プラン402を示す。図4に示されるように、計算プラン402は、依存性および/または交差もしくは問題分割基準に基づいてシーケンシャルな計算ステップ404~410のセットに分解される。
【0033】
図5は、並列化されたタスクグループ502,504および506をそれぞれ含む3つのサブステップのシーケンスへの第1のシーケンシャルなステップ404の並列分割を示す。並列化されたタスクグループ502は、クリーンアップタスク508とデータ構造作成タスク510とを含む初期化オペレーションを実行する。クリーンアップタスク508は、初期化ステップ502に配列されて並列に実行され得る、評価対象のルールセットにおける全ての数式に関連付けられたメジャークリアタスクに相当し得る。評価対象のルールセットにおける全ての数式に関連付けられたデータ構造またはメジャー作成タスク510も、初期化サブステップ502に配列されて、クリーンアップタスク508と並列に実行される。図5に示される本発明の実施形態によれば、初期化サブステップ502は、集約サブタスク512,514および516によって実行されるメジャーA,BおよびCの集約を含む第2の並列化されたタスクグループ504の実行に先行しなければならない。たとえば、504におけるメジャーA,BおよびCの集約に先行してメジャーA,BおよびCの集約レベルインスタンスを格納するために、502において、指定のメモリブロックがクリアされなければならず、必要なメモリが割り当てられて初期化されなければならない。
【0034】
上記のように、データ構造またはメジャーインスタンス作成タスク510は、同時に、メジャークリアアップタスク508と並列に行われてもよく、初期化プロセスを大幅にスピードアップさせる。
【0035】
並列化されたタスクグループ504を含む第2のシーケンシャルなサブステップは、メジャーデータの集約、具体的にはメジャーAを集約するための集約サブタスク512、メジャーBを集約するための集約サブタスク514、およびメジャーCを集約するための集約サブタスク516、を含む。集約オペレーションは、プランニングシステムに関連付けられた複数の店舗および/または売り場にわたって全てのストック・キーピング・ユニット(「SKU」)についての全てのデータを合計することを含んでもよい。これは、非常に時間のかかるタスクであり得る。したがって、独立して集約されて全てのこのような集約タスクを並列に実行し得る各メジャーのために別々の集約タスクを作成することにより、ルールセットの評価時間を大幅に改善することができる。図5に示されるようなメジャーA,BおよびCをそれぞれ集約するための集約サブタスク512,514および516が、異なる独立したメジャーについてのデータを集約することを含むので、それらは並列に実行されてもよい。
【0036】
集約ステップ504が完了し、ルールセットにおける1つ以上の数式の実際の評価に必要なデータが利用可能になると、計算タスクグループ506における計算タスク518が実行されて、集約レベルメジャー値を使用してルールセットにおける数式を評価してもよい。共通の構成要素を含まない計算タスクは、並列に実行されてもよい。次いで、3つのシーケンシャルなサブステップの同一のセットが計算ステップ2,3,4で繰り返されてもよい。
【0037】
上記のように、初期化、集約および計算サブステップは、シーケンシャルな実行順序を辿る。しかし、各サブステップは、ルールセットにおけるさまざまな数式に関連付けられた、並列に実行されるようにスケジューリングされた複数のサブタスクを含んでもよい。たとえば、初期化プロセスは、ルールセットにおけるLHSメジャーインスタンスのうちの一部または全てをクリーンアップしながら、同時にルールセットにおける数式のうちの一部または全てに関連付けられた集約レベルでRHSメジャーインスタンスを作成するために、複数のサブタスクを作成することを含んでもよい。したがって、ルールセットにおける複数の数式のためのクリーンアップおよび作成タスクは、単一の初期化サブステップに配列されて、並列に実行されてもよい。同様に、集約サブステップは、ルールセットにおける全ての数式から集約されたRHSメジャーインスタンスを収集することと、並列に実行され得る全ての集約タスクのために複数のサブタスクを作成することとを含んでもよい。1つ以上の数式を評価するための計算サブステップも、既存の依存性および/またはルールセットにおける数式間の計算レベルに基づいて並列化されてもよい。現在のバッチにおいて全ての計算が完了した後で、または実行の途中でバッチが機能しなくなっても、最後のクリーンアップタスクが実行されてもよい。最後のクリーンアップタスクは、現在のバッチにおいて作成された全ての集約されたメジャーインスタンスを除去する。
【0038】
依存性ベースの並列化に加えて、並列化されたタスクグループにおける各々のシーケンシャルなサブステップは、さらに、範囲による並列化を行ってもよい。範囲ベースの並列化は、同一の階層レベルにおける複数の独立したドメイン、エンティティまたはチャネル(すなわち、店舗、売り場など)にわたって単一のサブタスクの実行を並列化することを含む。この単一のサブタスクは、複数の数式、集約などを含み得る。範囲ベースの並列化は、追加の並列化層を計算プランに追加するため、ルールセット評価プロセスをさらにスピードアップさせる。
【0039】
図6は、本発明の実施形態に係る、メジャーベースの並列化も範囲ベースの並列化も含む最終的な計算プラン602を示す。第1のシーケンシャルな計算ステップの並列化された実行パターン603は、それぞれ初期化、集約および計算オペレーションの第1のセットを実行するための3つの並列化されたタスクグループのシーケンスに分割される。並列化された実行パターン603は、メジャーデータクリーンアップオペレーション606および新集約レベルメジャーインスタンス作成オペレーション608に関連付けられた第1のシーケンシャルなサブステップ604を含む。並列化された実行パターン603の第1のシーケンシャルなサブステップ604は、ルールセットにおける全てのルールベースの数式に関連付けられた全ての初期化オペレーションの並列実行を構成する。これは、ルールセットにわたって並列化され得る全てのクリーンアップおよび新インスタンス作成オペレーションを含む。並列化された実行パターン603の第2のシーケンシャルなサブステップまたは並列化されたタスクグループ610は、メジャーAおよびBのための集約サブタスクを含み、この第2のシーケンシャルなサブステップまたは並列化されたタスクグループ610は、チャネルごとに、チャネル1についてメジャーAおよびBに関連付けられたデータを集約する並列化されたサブタスクグループ612、チャネル2についてメジャーAおよびBに関連付けられたデータを集約する並列化されたサブタスクグループ614、および1つ以上のチャネルについてメジャーCに関連付けられたデータを集約する並列化されたサブタスクグループ616にさらに分割される。
【0040】
なお、並列化されたサブタスクグループ612,614および616は、計算プラン602の第1のシーケンシャルな計算ステップに関連付けられた並列化された実行パターン603によって指定されるような同時実行をスケジューリングされる。したがって、計算プラン602における第1のシーケンシャルな計算ステップの第2のシーケンシャルなサブステップ610(集約サブステップ)は、まずメジャーによってメジャーA,BおよびメジャーCにわたって並列化され、次いで範囲によって並列化されて、複数のチャネルにわたるメジャーA,BおよびCの並列集約を同時に実行する。
【0041】
一般に、たとえば計算ドメインの中にn個のチャネルがある場合、n個全てのチャネルにわたってメジャーを並列に集約するためにn個の並列タスクが作成されてもよい。図6における計算プラン602は、分割または範囲ベースの並列化スキームに加えて、2つのメイン並列化スキーム、すなわち依存性ベースの並列化スキームを利用する。
【0042】
計算プラン602の第1のシーケンシャルな計算ステップに関連付けられた並列化された実行パターン603は、第3のシーケンシャルなサブステップ618も含む。並列化された実行パターン603の第3のシーケンシャルなサブステップ618は、チャネル1について数式リストを評価するための並列化されたサブタスクグループ620と、チャネル2について数式リストを評価するための並列化されたサブタスクグループ622と、1つ以上の他のチャネルについて数式リストを評価するための並列化されたサブタスクグループ624とを含む。なお、並列化されたサブタスクグループ620,622および624は、計算プラン602の第1のシーケンシャルな計算ステップに関連付けられた並列実行パターン603によって指定されるような並列実行をスケジューリングされる。したがって、計算プラン602における第1のシーケンシャルな計算ステップの第3のシーケンシャルなサブステップ618(計算サブステップ)は、まずメジャーによってメジャーA,BおよびCにわたって並列化され、次いで範囲によって並列化されて、複数のチャネルにわたって数式リストの並列計算を同時に実行する。次いで、並列化された初期化、集約および計算タスクグループの同一のセットまたはサブセットが、626によって示されるように、計算プランにおける他の計算ステップのために実行されてもよい。
【0043】
本発明の一実施形態によれば、エンプティベースのアレイを有する全てのメジャーについてシーケンシャルな集約タスクが作成され、スカラーに集約する場合にソース範囲集約タスクが作成され、最も外側の次元が小さい場合に二次元範囲集約タスクが作成され、最後に、宛先の最も外側の次元によって宛先範囲集約タスクが作成される。
【0044】
本発明の一実施形態によれば、いかなる範囲並列化可能なタスクの範囲情報も以下の仕様に従って構築される。すなわち、ソース範囲集約の場合、範囲は、ソースアレイの最も外側の次元によって構築される。宛先範囲集約の場合、範囲は、宛先アレイの最も外側の次元によって構築される。二次元範囲集約の場合、範囲は、宛先アレイの最も外側および中間の次元によって構築される。非スカラー計算の場合、範囲は、LHSメジャーインスタンスの最も外側の次元によって構築される。
【0045】
本発明の一実施形態によれば、メジャーベース(数式ベース)および範囲ベースの並列化スキームを含む並列化された計算プランは、各タスク内の並列化可能なサブタスク(メジャーベースおよび/または範囲ベース)の1つ以上のセットを識別する各タスクについての情報とともに、各々のシーケンシャルなステップ内の並列化可能なタスク(メジャーベースおよび/または範囲ベース)の1つ以上のセットを識別する各ステップについての情報を有するシーケンシャルなステップの一次式に平坦化されてもよい。
【0046】
本発明の一実施形態によれば、1つ以上のルールセットの実質的に高速の評価を可能にするために、関連付けられた計算ステップ並列化情報とともにシーケンシャルな計算ステップの線形セットを含む平坦化された計算プランは、NoSQLデータベースなどの格納モジュールに格納され、RPASプラットフォーム上で実行されてもよい。
【0047】
本発明の実施形態の1つの特定の実現例を表すサンプル疑似コードは、以下の通りである。
【0048】
【数1】
【0049】
【0050】
【0051】
【0052】
【0053】
【0054】
【0055】
【0056】
【0057】
開示されているように、実施形態によって、数式特性に基づく計算プロセスの並列化が可能になり、計算の同時的な範囲ベースの並列化によってさらなる性能の向上が可能になる。
【0058】
本明細書では、いくつかの実施形態が具体的に示され、および/または、説明されている。しかし、開示されている実施形態の変更例および変形例が、本発明の精神および所期の範囲から逸脱することなく、上記の教示によって包含され、添付の特許請求の範囲の範囲内であるということが理解されるであろう。
図1
図2
図3
図4
図5
図6