JP2013545169A - 選択された実行ランタイムによる実行のためのユーザコードのランタイム非依存表現 - Google Patents

選択された実行ランタイムによる実行のためのユーザコードのランタイム非依存表現 Download PDF

Info

Publication number
JP2013545169A
JP2013545169A JP2013532828A JP2013532828A JP2013545169A JP 2013545169 A JP2013545169 A JP 2013545169A JP 2013532828 A JP2013532828 A JP 2013532828A JP 2013532828 A JP2013532828 A JP 2013532828A JP 2013545169 A JP2013545169 A JP 2013545169A
Authority
JP
Japan
Prior art keywords
runtime
execution
tasks
user code
computer
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
JP2013532828A
Other languages
English (en)
Other versions
JP2013545169A5 (ja
JP6010540B2 (ja
Inventor
ヴァラダラジャン クリシュナン
エル.チュー マイケル
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.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2013545169A publication Critical patent/JP2013545169A/ja
Publication of JP2013545169A5 publication Critical patent/JP2013545169A5/ja
Application granted granted Critical
Publication of JP6010540B2 publication Critical patent/JP6010540B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5033Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)
  • Debugging And Monitoring (AREA)

Abstract

コンピュータシステムにおける実行環境は、ユーザコードが複数の実行ランタイムを使用して実行されることを可能にする。実行環境は、ユーザコードをランタイム非依存表現へ変換し、ランタイム非依存表現を実行するための実行ランタイムを選択し、選択された実行ランタイムのためのスケジューラを呼び出す。スケジューラは、選択された実行ランタイムにおける同時実行のメカニズムを使用して、コンピュータシステムによる実行のためのランタイム非依存表現からのタスクをディスパッチする。

Description

本発明は、選択された実行ランタイムによる実行のためのユーザコードのランタイム非依存表現に関する。
コンピュータシステムは、しばしば同じプログラムの異なる部分を同時に(すなわち、並列に)実行する能力を有する。プログラマは、一般にプログラム内での同時実行を表して、特定の部分の同時の実行を可能にする。しかしながら、プログラムでの同時実行の表現は、普通、プログラムを実行するために使用される実行環境と密接に結びつけられる。プログラムのための実行環境は、例えば、コンピュータシステムの種類、プログラムのプログラミング言語、およびコンピュータシステムにおけるランタイム・ライブラリ(単数または複数)を含みうる。この結びつきの結果、ある実行環境のために記述されたプログラムは、別の実行環境では実行可能ではないかもしれない。
たとえ、プログラムが異なる実行環境において実行可能であったとしても、プログラムはいずれかの実行環境において利用可能な計算リソースを十分に活用することができないかもしれない。例えば、シングルマシンのために記述されたプログラムは、マシンのクラスタまたはクラウドで実行することができないかもしれない。たとえ、プログラムが修正されて、クラスタまたはクラウドで実行したとしても、プログラムは動的に(例えば、新しいマシンをクラスタまたはクラウドに加えることによってなど)利用可能にされるリソースを使用することができないかもしれない。
この要約が提供されて、以下の詳細な説明においてさらに記載される概念の抜粋を簡易化した形式にて紹介される。この要約は、特許を請求する事項の重要な特徴または本質的特徴を特定することを意図しないし、特許を請求する事項の範囲を限定するために使用されることも意図しない。
コンピュータシステムにおける実行環境は、ユーザコードが、複数の実行ランタイムを使用して実行されることを可能にする。実行環境は、ユーザコードをランタイム非依存表現へ変換し、ランタイム非依存表現を実行するための実行ランタイムを選択し、および、選択された実行ランタイムのためのスケジューラを呼び出す。スケジューラは、選択された実行ランタイムにおいて同時実行のメカニズムを使用するコンピュータシステムによる実行のためのランタイム非依存表現内のタスクをディスパッチする。
添付の図面は、さらに実施形態の理解が提供されるために含まれて、およびこの明細書に組み込まれおよびこの明細書の一部を構成する。図面は、実施形態を図示し、および明細書と共に実施形態の原理を説明するのに役立つ。他の実施形態および実施形態の意図する有利な点の多くは、以下の詳細な説明を参照することによってより理解されるようになると、直ちに認められるだろう。図面の要素は、必ずしも互いに関連した縮尺ではない。同様の参照の数字は、対応する同様の部分を指定する。
図1は、コンピュータシステムにおける実行環境の実施形態を図示するブロック図である。 図2は、ランタイムに依存しない中間の表現を生成する実施形態を図示するブロック図である。 図3は、ランタイムに依存しない中間の表現を使用してユーザコードを実行する実施形態を図示するブロック図である。 図1に示された実行環境を実装するよう構成されたコンピュータシステムの実施形態を図示するブロック図である。 図1に示された実行環境を実装するよう構成されたコンピュータシステムの実施形態を図示するブロック図である。 図1に示された実行環境を実装するよう構成されたコンピュータシステムの実施形態を図示するブロック図である。
以下の詳細な説明において、参照が添付図面に対してなされ、添付図面は詳細な説明の一部を形成し、および本発明が実行されるであろう特定の実施形態を図示する手段として示される。これに関して、「最上部」「底部」「前面」「裏面」「先頭」「末尾」などの方向の専門用語は、説明されている図面の方向に関して使用される。なぜなら、実施形態のコンポーネントは、複数の異なる方向にて位置づけられることが可能で、方向の専門用語は、例示のために使用され、および全く限定しない。他の実施形態が利用されうること、および構造上または論理上の変更が本発明の範囲から逸脱することなくなされうることが理解される。以下の詳細な説明は、それゆえ、限定した意味にとられず、および本発明の範囲は、添付の特許請求の範囲によって定義される。
ここで記載される様々な例示的な実施形態の特徴は、特に別に書き留められない限り、互いに組み合わせられうることが理解される。
図1は、コンピュータシステムにおける実行環境10の実施形態を図示しているブロック図である。コンピュータシステムは、図4Aで示されるコンピュータシステム100(例えば、シングルマシン)、図4Bで示されるコンピュータシステム150(例えば、マシンのクラスタ)、または図4Cで示されるコンピュータシステム160(例えば、マシンのクラウド)などである。実行環境10は、コンピュータシステムにおけるオペレーションのランタイムモードを表している。ここで、コンピュータシステムは、図4Aにおいて示されおよび以下の追加の詳細において記載されるプロセッシングコア103のようなコンピュータシステムの1つまたは複数のプロセッシングコア上にて、命令を実行する。実行環境10は、2つまたはそれより多いタスク14を伴う呼び出されたユーザコード12、ランタイム非依存ライブラリ16、ユーザコード12のランタイム非依存表現(RAR)18、呼び出されたスケジューラ20、および実行ランタイム24(1)−24(M)を含む。ここで、Mは2より大きいまたは2と等しい整数であり、M番目の実行ランタイム24(M)を意味する。
実行環境10は、ユーザコード12が異なる実行ランタイム24(1)―24(M)を使用して実行させられることを可能にする、分散タスクプログラミングモデルを提供する。特に、実行環境10は、動的にユーザコード12を選択された実行ランタイム24に結合して、ユーザコード12の実行が実行環境10のコンピュータシステム内でスケーリングされることを可能にする。実行環境10は、ユーザコード12によって定義されるタスク14が、ランタイム非依存ライブラリ16、RAR18、スケジューラ20、および選択された実行ランタイム24を使用して同時に実行されることを可能にする。
各実行ランタイム24(1)−24(M)は、典型的に、基礎となるコンピュータシステムに適しているプログラミング言語および/またはプログラミングモデルに対応している。例えば、ある実行ランタイム24(例えば、ConcRT(Microsoft Concurrency Runtime))は、マルチプロセッサコアを有するシングルマシンでユーザコード12の並列実行を向上させるよう設計されうる(例えば、図4Aにおいて示されるコンピュータシステム100)。別の実行ランタイム24(例えば、MPI(Message Passing Interface)ランタイム)は、マシンのクラスタでユーザコード12の並列実行を向上させるように設計されうる(例えば、図4Bにおいて示されるコンピュータシステム150)。さらに実行ランタイム24は、マシンのクラウドでユーザコード12の並列実行を向上させるように設計されうる(例えば、図4Cにおいて示されるコンピュータシステム160)。
ユーザコード12は、1つまたは複数の並列アルゴリズムの直感的な表現を形成する一連の命令を含む。ユーザコード12は、各アルゴリズム内のタスク14およびタスク14の相互関係を特定することによって、データフロー上の各アルゴリズムを基礎とする。ユーザコード12は、任意の特定の実行ランタイム24(1)−24(M)のプログラミングの特徴または構文を明確に考慮せずに、タスク14およびタスク14の相互関係を表す。したがって、ユーザコード12は、RAR18へ変換され、およびスケジューラ20およびランタイム非依存ライブラリ16によって選択される実行ランタイム24(1)−24(M)を使用して実行されることが可能である。ある実施形態において、ユーザコード12は、ランタイム非依存ライブラリ16中のAPI(Application Program Interface)を呼び出す命令を含んで、タスク14の実行を開始する。他の実施形態において、ユーザコード12は、他のプログラミング言語の構文および/またはこれに対応するランタイム非依存ライブラリ16によって提供されるツールを使用して、動的に選択された実行ランタイム24(1)−24(M)を使用してタスク14の実行を開始する。
各タスク14は、コンピュータシステムによって実行されるときに、1つのワークを行なう一連の命令を含む。各タスク14は、自己完結しており(すなわち、副次的影響がない)、入力データの定義されたセット上で動作して、出力データの定義されたセットを作り出す。あるタスク14によって作り出された出力データのセットは、別のタスク14のための入力データのセットの全てまたは一部として使用されうる。したがって、タスク14は、1つまたは複数の他のタスク14によって作り出された入力データを使用することができ、および1つまたは複数のタスク14によって入力データとして使用されるであろう出力データを作り出すことができる。これらタスク14は、しかしながら、データを共有(すなわち、データの同じセット上で同時に動作)しないように定義される。なぜなら、タスク14の入力および出力データは、明確に定義され、タスク14の相互関係は、ランタイム非依存ライブラリ16によって決定されうる。タスク14は、タスク14のための入力データのセットが利用可能になったときに、コンピュータシステムのプロセッシングコアによって、各タスク14がスケジューラ20によって同時実行のためにアクティブにされおよびディスパッチされうるようにコード化される。
ある実施形態において、ユーザコード12は、ネイティブ(すなわちアンマネージド)のC++のようなプログラミング言語にて書かれる。この実施形態において、各タスク14は、シーケンスのセットまたは他の適した命令を含むC++ラムダ式のための抽象化としてコード化されうる。他の実施形態において、ユーザコード12は、RAR18に変換可能で選択された実行ランタイム24(1)−24(M)によって実行可能である他の適したネイティブのプログラミング言語にて書かれうる。同様に、各タスク14は、他の適したプログラミング言語の構文を使用してコード化されうる。
ユーザコード12は、任意の適したコンピュータシステムの実行モデルに基づく1つまたは複数のコンピュータシステムにおいて動作するように構成されうる。コンピュータシステムの実行モデルは、スタックモデルまたはインタープリタモデルなどであり、および任意の適したコードの種類(アプリケーション、ライブラリ関数、またはオペレーティングシステムサービスなど)を表すことができる。ユーザコード12は、定義されたメモリアドレス空間を含むコンピュータシステムの割り当てられたリソースのセットに関連するプログラム状態およびマシン状態を有する。ユーザコード12は、実行環境10においていずれかの共存するプロセスから自立的にまたは実質上自立的に実行する。したがって、ユーザコード12は、共存するプロセスのプログラム状態または共存するプロセスに対して割り当てられる任意のリソースのマシン状態を影響を与えるように変更しない。同様に、共存するプロセスは、ユーザコード12のプログラム状態またはユーザコード12に対して割り当てられる任意のリソースのマシン状態を影響を与えるように変更しない。
タスク14の実行を開始するユーザコード12に応答して、ランタイム非依存ライブラリ16は、ユーザコード12をRAR18へ変換し、RAR18の実行のための実行ランタイム24を選択し、および選択された実行ランタイム24のためのスケジューラ20を呼び出す。上で述べたように、ユーザコード12は、ランタイム非依存ライブラリ16中のAPIを呼び出す、または別の適したプログラミングの構文を使用してタスク14の実行を開始することが可能である。
ランタイム非依存ライブラリ16は、ユーザプログラム12における固有の並列性に基づいてユーザコード12におけるタスク14およびタスク14の相互関係を特定する。ランタイム非依存ライブラリ16は、RAR18がユーザコード12の固有の並列性を具象化しおよび実行ランタイム24(1)−24(M)のいずれかによって実行されうるように、ユーザコード12をRAR18へ変換する。RAR18は、実行ランタイム24(1)−24(M)のいずれかのスケジューラ20に移植しうるタスク14の抽象化を含む。ある実施形態において、ランタイム非依存ライブラリ16は、ユーザコード12におけるタスク14間のシーケンスを特定してユーザコード12におけるデータのフローを表すDAG(Directed Acyclic Graph)を形成することによって、RAR18を生成する。DAGのゆえに、ランタイム非依存ライブラリ16は、タスク14を表しおよびタスク間のデータのフローにしたがってノード間の関係(すなわち、相互関係)を表すノードを形成する。他の実施形態において、ランタイム非依存ライブラリ16は、他の適したデータ構成を使用してRAR18を生成して、ユーザプログラム12における固有の並列性を表す。
RAR18の作成とともに、ランタイム非依存ライブラリ16は、ユーザコード12の実行のための実行ランタイム24(1)−24(M)を、基礎となるコンピュータシステムおよびRAR18に対応するヒューリスティックに基づいて選択する。特に、ランタイム非依存ライブラリ16は、ユーザコード12のタスク14を最も効率よく実行できる実行ランタイム(1)―24(M)を選択することによって、ユーザコード12のための最適なスケーリングに達するように試みる。ランタイム非依存ライブラリ16は、ユーザコード12の特徴(例えば、データ集約型対コンピュータ集約型など)を考慮し、ユーザコード12の実行のためのコンピューティングリソースの適切なレベル(例えば、シングルマシン、マシンのクラスタ、マシンのクラウドなど)を基礎となるコンピュータシステムを前提に決定する。決定をした後、ランタイム非依存ライブラリ16は、選択された実行ランタイム24のためのスケジューラ20のインスタンスを作成する。
スケジューラ20は、ユーザコード12のタスク14が、選択された実行ランタイム24を使用して実行環境10において実行されるようにする。スケジューラ20は、選択された実行ランタイム24においてAPIを呼び出しまたは他の適したプログラミングの構文を使用することによって、実行のために、RAR18からタスクをキューに入れ、およびユーザコード12からタスク14をディスパッチする。スケジューラ20は、タスク14を、任意の適したスケジューリングアルゴリズムに従ってディスパッチする。スケジューラ20は、タスク14のための入力データのセットおよびコンピュータシステムの処理リソースが利用可能になったときに、実行のためのタスク14をディスパッチすることによって、タスク14の実行を管理する。上で記載したように、タスク14のための入力データのセットは、1つまたは複数の他のタスク14の完了のときに利用可能になりうる。
動的にユーザコード12を選択された実行ランタイム24と結合することによって、実行環境10は、ユーザコード12のためのプログラミングモデルを実行ランタイム24(1)−24(M)のセットに基づいて表現する。そうすることによって、同じユーザコード12は、各実行ランタイム24(1)−24(M)のためのランタイム特有のコードを含むことのオーバーヘッドを負うことなく、異なる実行ランタイム24(1)−24(M)を対象とするために使用されうる。結果として、実行環境10は、シングルマシンから多重のマシン(例えば、クラスタまたはクラウド)への自動のスケーリングを提供するユーザコード12のためのプログラミングモデルをサポートする。
実行環境10は、実行ランタイム24(1)−24(M)の特徴をサポートするリッチプログラミングモデルを提供することもできる。例えば、MPIなどのある実行ランタイム24は、マシンのクラスタにおいてノード間を通過するデータがシリアルにされることを規定できるのに対して、ConcRTなどの別の実行ランタイム24は、データが共有メモリマシン上のポインタを使用してアクセスされることを可能にしうる。リッチプログラミングモデルのゆえに、ユーザコード12は、MPIなどのランタイム24のためのユーザ定義型についての適切なシリアルなルーチンを含む。実行環境10(すなわち、ランタイム非依存ライブラリ16およびスケジューラ20)は、しかしながら、シリアルなルーチンはユーザコード12が共有メモリマシン上で実行されるときに呼び出されないことを確実にする。
実行環境10は、さらに、デッドロック防止およびフォールト・トレランスをサポートするリッチプログラミングモデルを提供することができる。RAR18を生成することによって、実行環境10は、循環を不可能にし、およびそれゆえデッドロックを除外および不経済な動的なデッドロック検出の方策の使用を避ける。加えて、タスク14はコード化されて副次的影響がないので、タスク14は、与えられたコンピューティングノードがタスク14の実行中に失敗するときに他のコンピューティングノード上で再開されうる。
他の実施形態において、実行環境10は、C++などのネイティブの言語上の宣言型のプログラミングモデルを使用して実装される。この実施形態において、ユーザコード12は、データフローに関してタスク14を固有の方法で表すネイティブの言語におけるクエリー構文を伴って記述される。クエリー構文のゆえに、ユーザコード12のタスク14は、定義によって副次的影響がなく、明確に定義された相互関係を有する。結果として、ユーザコード12の実行は、自動的にシングルマシンからクラスタまたはクラウドなどの分散環境へスケーリングされうる。
図2は、クエリー構文を伴うユーザコード12の実施形態12Aを図示しているブロック図である。図2の例において、ユーザコード12Aは、ネイティブの言語のクエリーとしてmap−reduceを表す。そうすることによって、ユーザコード12Aは、ランタイム非依存ライブラリ16にRAR18の実施形態を生成させる。RAR18は、矢印32によって示されるようにランタイム非依存DAG18Aを形成する。ランタイム非依存ライブラリ16は、タスク14(1)−14(4)(すなわち、それぞれ、読み出し、SelectMany(マッパー(mapper))、GroupBy、およびSelectMany(レデューサ(reducer)))をユーザコード12Aにおけるクエリーから認識し、およびタスク14(1)―14(4)の表現をDAG18Aへ変換する(図2の実施形態のフロー図におけるブロックで示されるように)。ランタイム非依存ライブラリ16は、タスク14(1)―14(4)の相互関係を認識し、および相互関係の表現をDAG18Aへ変換することもできる。相互関係は、あるタスク14による出力および別のタスク14への入力であるデータのセットを含むタスク14間の順序を特定する。図2において、矢印34(1)は、タスク14(1)(すなわち、読み出し)とタスク14(2)(すなわち、SelectMany(マッパー(mapper)))との間の相互関係を表している。言い換えると、矢印34(1)は、タスク14(1)による出力およびタスク14(2)への入力であるデータのセットを表している。同様に、矢印34(2)は、タスク14(2)とタスク14(3)との間の関係を表しており、矢印34(3)はタスク14(3)とタスク14(4)との間の関係を表している。
図2の例において、タスク14は、入力データのセットをある他のタスク14から受け取り、出力データのセットをある他のタスク14へ提供する。他の実施形態において、各タスク14は、入力データのセットを任意の適した数の他のタスク14から受け取り、および/または出力データのセットを任意の適した数の他のタスク14へ提供する。
図2の実施形態において、クエリー構文は、クエリー構文がネイティブのプログラミング言語に直接統合されないような呼び出し方策に基づく方法を使用する。例えば、C++などのネイティブのプログラミング言語のゆえ、クエリー構文は、ラムダ式を使用して実装されうる。クエリー構文は、ユーザコード12においてネイティブの言語にて他のコードを伴い構成されることが可能で、およびユーザコード12の遅延実行を許すことが可能である。結果として、クエリー構文を伴う宣言型のプログラミングモデルは、C++などのネイティブの言語上で実装されることが可能で、分散環境において増加した実行性能を提供する一方で、存在するネイティブの言語のコンパイラを使用することができる。
ある実施形態において、実行環境10は動的なデータおよび計算を提供して、およびユーザコード12のための柔軟性を調達して、実行の効率を改善する。特に、実行環境10は、ユーザコード12の実行が、タスク14よって操作されるデータのサイズ、ランタイムにて利用可能である計算リソース、およびユーザコード12によって提供される任意のコンテクストに応じたヒューリスティックに対して柔軟性があるようにする。実行環境10は、RAR18およびスケジューラ20の使用を通じて柔軟性を提供する。柔軟性は、ユーザコード12の各タスク14のための同時実行のレベルを、タスク14の実行の時間にて利用可能なデータの量および計算リソースに基づいて動的に調整する能力について言及する。
上で記載したように、スケジューラ20は、タスク14のための入力データのセットおよびコンピュータシステムの処理リソースが利用可能になるときに、実行のためのタスク14をディスパッチする。RAR18における各タスク14のために、スケジューラ20は、タスク14のための入力データのセットのサイズ、タスク14の呼び出しの時に利用可能である計算リソースの量、およびユーザコード12によって提供される任意のコンテクストに応じたヒューリスティックを考慮することによって、同時実行のレベルを決定する。スケジューラ20は、決定された同時実行のレベルに依存するタスク14の多数のインスタンスを呼び出し、および利用可能な計算リソースへ分配する。そうすることによって、スケジューラ20は、入力データのセットのサイズ、利用可能な計算リソース、およびユーザ指定のヒューリスティックを前提に、自動的にユーザコード12の実行を適切なレベルへスケーリングする。
スケジューラ20は、適切な同時実行のレベルの決定において、各タスク14のための入力データのセットのサイズを考慮する。特に、スケジューラ20は、コンピュータシステム内で入力データを移動することの多量のオーバーヘッド(例えば、クラスタにおけるマシン間でデータを移動することに費やされる時間)を考慮することができる。例えば、オーバーヘッドに基づいて、スケジューラ20は、少量の入力データを伴うタスク14のための同時実行の低いレベル、および多量の入力データを伴うタスク14のための同時実行の高いレベルを選択することができる。
スケジューラ20は、各タスク14のための呼び出しの時に適切な同時実行のレベルを決定するので、スケジューラ20は、基礎となるコンピュータシステムにおける計算リソースの能力の変更をとらえて説明する(account for)。例えば、スケジューラ20は、計算リソースがコンピュータシステムに増加させられたこと(例えば、1つまたは複数のマシンがコンピュータシステムに加えられることが原因で)、またはコンピュータシステムから取り除かれたこと(例えば、コンピュータシステムの1つまたは複数のノードの失敗または利用不可能が原因で)を検出できる。
スケジューラ20は、タスク14の入力データのサイズおよびタスク14のための利用可能な計算リソースの量を表す情報を、ユーザコード12における1つまたは複数の関数に提供することができる。関数は、次々に、スケジューラ20に、プログラマがタスク14の実行のために薦める、推奨されているまたは最適な同時実行のレベルを提供することができる。スケジューラ20は、この情報を入力データのサイズおよび利用可能な計算リソースの量とともに考慮して、適切なタスク14のための同時実行のレベルを決定する。
図3は、(図2において示されている)DAG18Aを使用して、ユーザコード12を実行する実施形態を図示しているブロック図である。図3の例において、スケジューラ20は、DAG18Aにおけるタスク14(1)−14(4)のそれぞれのための適切な同時実行のレベルを決定し、および同時実行のレベルに基づく各タスク14(1)−14(4)のインスタンスの適切な数を決定する。例えば、スケジューラ20は、タスク14(1)が呼び出されるときに、シングルインスタンスが上記関数に基づきタスク14(1)のために適切であると決定する。同様に、スケジューラ20は、タスク14(3)が呼び出されるときに、シングルインスタンスが上記関数に基づきタスク14(3)のために適切であると決定する。
タスク14(2)のために、スケジューラ20は、Nのインスタンスが適切であると決定する。Nは2より大きいまたは2と等しい整数である。したがって、スケジューラ20は、タスク14(2)のための入力データのセットが、Nのサブセットに分けられるようにし、および実行のためにNの計算リソース(例えば、クラスタまたはクラウドにおけるノードマシン)に至るまで提供されるようにする。スケジューラ20は、タスク14(2)によって生成される出力データのセットが、タスク14(3)に提供されうる形式にマージされるようにすることもできる。
タスク14(4)のために、スケジューラ20は、Pのインスタンスが適切であると決定する。Pは2より大きいまたは2と等しい整数であり、Nと等しくてもまたは等しくなくてもよい。したがって、スケジューラ20は、タスク14(4)のための入力データのセットが、Pのサブセットに分けられるようにし、および実行のためにPの計算リソース(例えば、クラスタまたはクラウドにおけるノードマシン)に至るまで提供されるようにする。スケジューラ20は、タスク14(4)によって生成される出力データのセットが、クエリーの出力として提供されうる形式にマージされるようにすることもできる。
動的データおよび計算の柔軟性は、ユーザコード12の最適なスケーリングが起こりうる技術を提供する。RAR18またはDAG18Aにおける各タスク14のための同時実行のレベルの確立における柔軟性は、ユーザコード12が、利用可能な計算リソースおよびロードバランスに対して効率的に柔軟性があるようにできる。したがって、ユーザコード12は、効率的に様々なコンピュータシステム上で実行されうる。
図4Aは、上で記載したように、実行環境10を実装するように構成されるコンピュータシステム100の実施形態を図示しているブロック図である。
コンピュータシステム100は、それぞれが1つまたは複数のプロセッシングコア103を含む1つまたは複数のプロセッサパッケージ102、メモリシステム104、ゼロまたはそれより多い入力/出力装置106、ゼロまたはそれより多い表示装置108、ゼロまたはそれより多い周辺機器装置110、およびゼロまたはそれより多いネットワーク装置112を含む。プロセッサパッケージ102、メモリシステム104、入力/出力装置106、表示装置108、周辺機器装置110、およびネットワーク装置112は、任意の適した種類、数、および構成のコントローラ、バス、インタフェースを含む相互接続のセット、および/または他の有線または無線の接続を使用して、通信する。
コンピュータシステム100は、一般的な目的または特定の目的のために構成される任意の適した処理装置を表している。コンピュータシステム100の例は、サーバ、パーソナルコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、パーソナルデジタルアシスタント(PDA)、携帯電話またはスマートフォン、および音声/映像装置を含む。コンピュータシステム100のコンポーネント(すなわち、プロセッサパッケージ102、メモリシステム104、入力/出力装置106、表示装置108、周辺機器装置110、ネットワーク装置112、および相互接続114)は、共通の筐体(図示せず)または任意の適した数の別々の筐体(図示せず)に含まれうる。
プロセッサパッケージ102は、それぞれ、命令を実行するように構成される実行ハードウェアを形成する1つまたは複数のプロセッシングコア103を含む(すなわち、ソフトウェア)。各プロセッシングコア103は、他のプロセッシングコア103から独立または実質上独立して命令を実行するように構成されており、マシン状態を含む。各プロセッサパッケージ102は、同じまたは異なるアーキテクチャおよび/または命令のセットを伴うプロセッシングコア103を含むことができる。例えば、プロセッシングコア103は、イン・オーダー実行コア、スーパースカラ実行コア、およびGPGPUの実行コアの任意の組み合わせを含むことができる。プロセッサパッケージ102における各プロセッシングコア103は、メモリシステム104に格納される命令にアクセスし、および命令を実行するように構成される。命令は、BIOS(Basic Input Output System)またはファームウェア(図示せず)、ユーザコード12、ランタイム非依存ライブラリ16、スケジューラ20、オペレーティグシステム(OS)122、および1つまたは複数の実行ランタイム24のセット124を含むことができる。各プロセッシングコア103は、入力/出力装置106、表示装置108、周辺機器装置110、および/またはネットワーク装置112から受信された情報と連動して、または情報に応じて、命令を実行することができる。
メモリシステム104は、命令およびデータを格納するように構成される、任意の適した種類、数、および構成の揮発性または不揮発性の記憶装置を含む。メモリシステム104の記憶装置は、ユーザコード12、ランタイム非依存ライブラリ16、スケジューラ20、OS122、および1つまたは複数の実行ランタイム24のセット124を含むコンピュータが実行可能な命令(すなわち、ソフトウェア)を格納する、コンピュータが読み取り可能な記憶媒体を表す。メモリシステム104は、プロセッサパッケージ102、入力/出力装置106、表示装置108、周辺機器装置110、およびネットワーク装置112から受信された命令およびデータを格納する。メモリシステム104は、格納された命令およびデータを、プロセッサパッケージ112、入力/出力装置106、表示装置108、周辺機器装置110、およびネットワーク装置112に提供する。命令は、コンピュータシステム100によって実行可能であり、明細書に記載されたユーザコード12、ランタイム非依存ライブラリ16、スケジューラ20、OS122、および実行ランタイム24の関数および方法を行なう。メモリシステム104における記憶装置の例は、ハードディスクドライブ、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリドライブおよびカード、CDおよびDVDなどの磁気および光学ディスクを含む。
コンピュータシステム100は、OS122を起動および実行する。OS122は、プロセッサパッケージ102によって実行可能である命令を含んで、コンピュータシステム100のコンポーネントを管理し、およびランタイム非依存ライブラリ16、スケジューラ20、OS122、および実行ランタイム24がコンポーネントにアクセスおよび使用できるようにする関数のセットを提供する。ある実施形態において、OS122は、ウインドウズオペレーティングシステムである。他の実施形態において、OS122は、コンピュータシステム100とともに使用するために適している別のオペレーティングシステムである。ランタイム非依存ライブラリ16は、OS122と連動して実行可能である命令を含んで、図1において示される実行環境を生成し、およびランタイム関数をユーザコード12およびスケジューラ20に提供する。ランタイム関数は、OS122の統合された部分、または他の実施形態における他のプログラミングエンティティおよび/または構文として含まれうる。
入力/出力装置106は、命令またはデータをユーザからコンピュータシステム100へ入力するように、または命令またはデータをコンピュータシステム100からユーザへ出力するように構成される、任意の適した種類、数、および構成の入力/出力装置を含む。入力/出力装置106の例は、キーボード、マウス、タッチパッド、タッチスクリーン、ボタン、ダイヤル、ノブ、およびスイッチを含む。
表示装置108は、テキストおよび/または図形の情報をコンピュータシステム100のユーザに出力するように構成される、任意の適した種類、数、および構成の表示装置を含む。表示装置108の例は、モニタ、ディスプレイスクリーン、およびプロジェクタを含む。
周辺機器装置110は、コンピュータシステム100における1つまたは複数の他のコンポーネントを伴い操作されて、一般または特定の処理の機能を実行するように構成される、任意の適した種類、数、および構成の周辺機器装置を含む。
ネットワーク装置112は、コンピュータシステム100が1つまたは複数のネットワーク(図示せず)にわたって通信できるように構成される、任意の適した種類、数、および構成の表示装置を含む。ネットワーク装置112は、情報が、コンピュータシステム100によってネットワークへ転送され、またはコンピュータシステム100によってネットワークから受信されるようにする、任意の適したネットワークプロトコルおよび/または構成にしたがって動作できる。
図4Bは、上で記載したように、実行環境10を実装するように構成されるコンピュータシステム150の実施形態を図示しているブロック図である。コンピュータシステム150は、2つまたはそれより多いコンピュータシステム100(1)−100(Q)のセットを含む分散コンピューティング環境を形成する。Qは、2より大きいまたは2と等しい整数である。コンピュータシステム100(1)−100(Q)は、任意の適した種類、数、および構成のコントローラ、バス、インタフェースを含む相互接続152、および/または他の有線または無線の接続を使用して通信する。
コンピュータシステム150は、マシンのクラスタ(すわなち、コンピュータシステム100(1)−100(Q)のクラスタ)として構成される。各コンピュータシステム100(1)−100(Q)は、他のコンピュータシステム100(1)―100(Q)として同じ構成または異なる構成を含むことができる。ある実施形態において、システム150における各コンピュータシステム100(1)−100(Q)は、MPIなどのランタイム24を含む。ランタイム24は、コンピュータシステム100(1)−100(Q)が含みうる任意の他のランタイム24に加えて、クラスタのために構成される。他の実施形態において、システム150における各コンピュータシステム100(1)―100(Q)は、任意の適した種類、数、および/または組み合わせのランタイム24を含む。
図4Cは、上で記載したように、実行環境10を実装するように構成されるコンピュータシステム160の実施形態を図示しているブロック図である。コンピュータシステム160は、2つまたはそれより多いコンピュータシステム100(1)―100(R)のセットを含む分散コンピューティング環境を形成する。Rは、2より大きいまたは2と等しい整数である。コンピュータシステム100(1)−100(R)は、任意の適した種類、数、および構成の有線および/または無線のネットワーク装置を含むネットワーク162を使用して、通信する。
コンピュータシステム160は、マシンのクラウド(すなわち、コンピュータシステム100(1)−100(R)のクラウド)として構成される。各コンピュータシステム100(1)−100(R)は、他のコンピュータシステム100(1)−100(R)として同じ構成または異なる構成を含むことができる。ある実施形態において、システム160における各コンピュータシステム100(1)―100(R)は、コンピュータシステム100(1)−100(R)が含みうる任意の他のランタイム24に加えてクラウドのために構成されるランタイム24を含む。他の実施形態において、システム160における各コンピュータシステム(1)―100(R)は、任意の適した種類、数、および/または組み合わせのランタイム24を含む。
特定の実施形態が明細書で例示および記載されてきたが、当業者にとって、様々な代替および/または同等の実装例が、本発明の範囲から逸脱すること無く、示されおよび記載された特定の実施形態の代わりとなりうることが認められるだろう。この出願は、本明細書で議論された特定の実施形態の任意の適用または変形に及ぶことを意図する。それゆえ、本発明は特許請求の範囲およびそれと同等なものによってのみ限定されることが意図される。

Claims (14)

  1. コンピュータに方法を実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体であって、前記方法は、
    ユーザコードのランタイム非依存表現の実行のためのコンピュータシステムにおける第1の実行ランタイムを選択することであって、前記第1の実行ランタイムは、少なくとも1つの前記ランタイム非依存表現のヒューリスティックに基づき選択される、選択することと、
    スケジューラを呼び出して、前記第1の実行ランタイムを使用して前記コンピュータシステムで実行のための前記ランタイム非依存表現中のタスクのセットをディスパッチすることと
    を備えることを特徴とするコンピュータ読み取り可能な記録媒体。
  2. 前記方法は、前記ユーザコードを前記タスクのセットを含む前記ランタイム非依存表現に変換することをさらに備えることを特徴とする請求項1に記載のコンピュータ読み取り可能な記録媒体。
  3. 前記ユーザコードは、前記タスクのセットおよび前記タスクのセットの相互関係のセットを固有の方法で表すことを特徴とする請求項1に記載のコンピュータ読み取り可能な記録媒体。
  4. 前記ユーザコードは、クエリー構文を使用して前記タスクのセットおよび前記タスクのセットの相互関係のセットを特定することを特徴とする請求項1に記載のコンピュータ読み取り可能な記録媒体。
  5. 前記ランタイム非依存表現は、前記第1の実行ランタイムおよび前記第1の実行環境とは異なる第2の実行ランタイムによって実行可能であることを特徴とする請求項1に記載のコンピュータ読み取り可能な記録媒体。
  6. 前記ランタイム非依存表現は、データフローに関して前記タスクのセットを表すことを特徴する請求項1に記載のコンピュータ読み取り可能な記録媒体。
  7. 前記ランタイム非依存表現は、DAG(有向非巡回グラフ)を形成することを特徴とする請求項1に記載のコンピュータ読み取り可能な記録媒体。
  8. 前記スケジューラは、利用可能になる前記タスクに対応する入力データのセットに応じて前記タスクのセットにおけるタスクをディスパッチするように構成されていることを特徴とする請求項1に記載のコンピュータ読み取り可能な記録媒体。
  9. コンピュータに方法を実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体であって、前記方法は、
    固有の方法で表現されるユーザコードにおけるタスクのセットおよび前記タスクのセットの相互関係のセットを特定することと、
    前記タスクのセットおよび前記相互関係のセットを前記ユーザコードのランタイム非依存表現に変換することと
    を備えることを特徴するコンピュータ読み取り可能な記録媒体。
  10. 前記ランタイム非依存表現は、データフローに関して前記タスクのセットを表すことを特徴する請求項9に記載のコンピュータ読み取り可能な記録媒体。
  11. 前記ランタイム非依存表現は、DAG(有向非巡回グラフ)を形成することを特徴とする請求項9に記載のコンピュータ読み取り可能な記録媒体。
  12. 前記方法は、ランタイムにて前記ランタイム非依存表現の実行のための前記コンピュータシステムにおける実行ランタイムを選択することをさらに備えることを特徴とする請求項9に記載のコンピュータ読み取り可能な記録媒体。
  13. 少なくとも1つのコンピュータシステムによって実行される方法であって、前記方法は、
    ユーザコードをデータフローに関してタスクのセットを表すDAG(有向非巡回グラフ)を形成するランタイム非依存表現に変換することであって、前記ユーザコードは前記タスクのセットおよび前記タスクのセットの相互関係のセットを固有の方法で表す、変換することと、
    前記ランタイム非依存表現の実行のための前記コンピュータシステムにおける2つまたはそれより多い実行ランタイムのセットから第1の実行ランタイムを選択することであって、前記第1の実行ランタイムは、前記ランタイム非依存表現の少なくとも1つのヒューリスティックに基づいて選ばれる、選択することと、
    スケジューラを呼び出して、前記第1の実行ランタイムを使用して前記コンピュータシステムで実行のための前記ランタイム非依存表現中のタスクのセットをディスパッチすることと
    を備えることを特徴とする方法。
  14. 前記ランタイム非依存表現は、前記第1の実行ランタイムおよび前記2つまたはそれより多い実行ランタイムにおける第2の実行ランタイムによって実行可能であり、前記第2の実行ランタイムは前記第1の実行環境とは異なることを特徴とする請求項13に記載の方法。
JP2013532828A 2010-10-08 2011-09-23 選択された実行ランタイムによる実行のためのユーザコードのランタイム非依存表現 Active JP6010540B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/900,705 2010-10-08
US12/900,705 US9658890B2 (en) 2010-10-08 2010-10-08 Runtime agnostic representation of user code for execution with selected execution runtime
PCT/US2011/053006 WO2012047554A1 (en) 2010-10-08 2011-09-23 Runtime agnostic representation of user code for execution with selected execution runtime

Publications (3)

Publication Number Publication Date
JP2013545169A true JP2013545169A (ja) 2013-12-19
JP2013545169A5 JP2013545169A5 (ja) 2014-10-23
JP6010540B2 JP6010540B2 (ja) 2016-10-19

Family

ID=45884656

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013532828A Active JP6010540B2 (ja) 2010-10-08 2011-09-23 選択された実行ランタイムによる実行のためのユーザコードのランタイム非依存表現

Country Status (7)

Country Link
US (1) US9658890B2 (ja)
EP (1) EP2625600A4 (ja)
JP (1) JP6010540B2 (ja)
KR (1) KR101825772B1 (ja)
CN (1) CN102402419A (ja)
CA (1) CA2813600A1 (ja)
WO (1) WO2012047554A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10334028B2 (en) 2016-04-11 2019-06-25 Fujitsu Limited Apparatus and method for processing data

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9600250B2 (en) 2010-10-08 2017-03-21 Microsoft Technology Licensing, Llc Declarative programming model with a native programming language
US9600255B2 (en) 2010-10-08 2017-03-21 Microsoft Technology Licensing, Llc Dynamic data and compute resource elasticity
US9760348B2 (en) 2010-11-29 2017-09-12 Microsoft Technology Licensing, Llc Verification of a dataflow representation of a program through static type-checking
WO2013177765A1 (en) * 2012-05-30 2013-12-05 Intel Corporation Runtime dispatching among heterogeneous group of processors
US9471651B2 (en) 2012-10-08 2016-10-18 Hewlett Packard Enterprise Development Lp Adjustment of map reduce execution
US9626261B2 (en) * 2013-11-27 2017-04-18 Futurewei Technologies, Inc. Failure recovery resolution in transplanting high performance data intensive algorithms from cluster to cloud
US9652286B2 (en) * 2014-03-21 2017-05-16 Oracle International Corporation Runtime handling of task dependencies using dependence graphs
US11281481B2 (en) 2014-07-25 2022-03-22 Intel Corporation Using a plurality of conversion tables to implement an instruction set agnostic runtime architecture
US20160026486A1 (en) * 2014-07-25 2016-01-28 Soft Machines, Inc. An allocation and issue stage for reordering a microinstruction sequence into an optimized microinstruction sequence to implement an instruction set agnostic runtime architecture
US10353680B2 (en) 2014-07-25 2019-07-16 Intel Corporation System converter that implements a run ahead run time guest instruction conversion/decoding process and a prefetching process where guest code is pre-fetched from the target of guest branches in an instruction sequence
EP3172667A4 (en) * 2014-07-25 2018-03-21 Intel Corporation System for an instruction set agnostic runtime architecture
US9733909B2 (en) * 2014-07-25 2017-08-15 Intel Corporation System converter that implements a reordering process through JIT (just in time) optimization that ensures loads do not dispatch ahead of other loads that are to the same address
US20160026484A1 (en) * 2014-07-25 2016-01-28 Soft Machines, Inc. System converter that executes a just in time optimizer for executing code from a guest image
CN105578259B (zh) * 2015-12-14 2018-10-19 四川长虹电器股份有限公司 一种基于智能电视下用户观影行为分类方法
US10409654B2 (en) 2017-07-13 2019-09-10 International Business Machines Corporation Facilitating event-driven processing using unikernels
US10402195B2 (en) * 2017-10-16 2019-09-03 General Electric Company Framework for supporting multiple analytic runtimes
CN108388474A (zh) * 2018-02-06 2018-08-10 北京易沃特科技有限公司 基于dag的智能分布式计算管理系统及方法
US20210200731A1 (en) * 2019-12-26 2021-07-01 Oath Inc. Horizontal skimming of composite datasets
CN113656164B (zh) * 2021-08-30 2024-05-03 阿里巴巴(中国)有限公司 任务执行方法、系统、电子设备及计算机存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007328415A (ja) * 2006-06-06 2007-12-20 Univ Waseda ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5978583A (en) 1995-08-07 1999-11-02 International Business Machines Corp. Method for resource control in parallel environments using program organization and run-time support
US6182277B1 (en) 1998-04-15 2001-01-30 Oracle Corporation Methods and apparatus for declarative programming techniques in an object oriented environment
US6457172B1 (en) 1999-04-13 2002-09-24 International Business Machines Corporation Compiler for supporting multiple runtime data representations
US7100164B1 (en) * 2000-01-06 2006-08-29 Synopsys, Inc. Method and apparatus for converting a concurrent control flow graph into a sequential control flow graph
US20030033588A1 (en) * 2001-01-29 2003-02-13 John Alexander System, method and article of manufacture for using a library map to create and maintain IP cores effectively
US7210145B2 (en) 2001-10-15 2007-04-24 Edss, Inc. Technology for integrated computation and communication; TICC
KR101187486B1 (ko) * 2002-05-10 2012-11-15 마이크로소프트 코포레이션 병행 분산 자원 네트워크의 협동을 위한 컴퓨터 실행가능 방법, 및 컴퓨터 판독가능 저장 매체
US7055142B2 (en) * 2002-05-10 2006-05-30 Microsoft Corporation Permutation nuances of the integration of processes and queries as processes at queues
US6999958B2 (en) * 2002-06-07 2006-02-14 International Business Machines Corporation Runtime query optimization for dynamically selecting from multiple plans in a query based upon runtime-evaluated performance criterion
US7000151B2 (en) 2002-07-18 2006-02-14 Hewlett-Packard Development Company, L.P. System and method for providing run-time type checking
US7185003B2 (en) * 2002-11-14 2007-02-27 Seisint, Inc. Query scheduling in a parallel-processing database system
US8122106B2 (en) 2003-03-06 2012-02-21 Microsoft Corporation Integrating design, deployment, and management phases for systems
US7415700B2 (en) 2003-10-14 2008-08-19 Hewlett-Packard Development Company, L.P. Runtime quality verification of execution units
US20050166182A1 (en) 2004-01-22 2005-07-28 Microsoft Corporation Distributed semantic schema
US7676791B2 (en) 2004-07-09 2010-03-09 Microsoft Corporation Implementation of concurrent programs in object-oriented languages
US7458066B2 (en) * 2005-02-28 2008-11-25 Hewlett-Packard Development Company, L.P. Computer system and method for transferring executables between partitions
US7401329B2 (en) 2005-04-25 2008-07-15 Arm Limited Compiling computer programs to exploit parallelism without exceeding available processing resources
US7774750B2 (en) 2005-07-19 2010-08-10 Microsoft Corporation Common concurrency runtime
US7853923B2 (en) 2005-12-29 2010-12-14 Sap Ag Specific runtime generators in a visual modeling language environment
US7689582B2 (en) 2006-03-10 2010-03-30 International Business Machines Corporation Data flow system and method for heterogeneous data integration environments
US7739663B2 (en) 2006-05-16 2010-06-15 International Business Machines Corporation Method, system and program product for validating a runtime environment
US7660884B2 (en) 2006-11-10 2010-02-09 International Business Machines Corporation Apparatus, system, and method for generating a resource utilization description for a parallel data processing system
US8010954B2 (en) 2007-02-14 2011-08-30 The Mathworks, Inc. Parallel programming interface to dynamically allocate program portions
US7926035B2 (en) 2007-04-24 2011-04-12 Microsoft Corporation Testing multi-thread software using prioritized context switch limits
US20080282238A1 (en) 2007-05-10 2008-11-13 Microsoft Corporation Static type for late binding
US8296743B2 (en) * 2007-12-17 2012-10-23 Intel Corporation Compiler and runtime for heterogeneous multiprocessor systems
US8495594B2 (en) 2008-01-10 2013-07-23 International Business Machines Corporation Method and system for providing a componentized resource adapter architecture
US7783782B2 (en) * 2008-05-23 2010-08-24 Raytheon Company Dynamic runtime service oriented architecture
US7747742B2 (en) 2008-06-27 2010-06-29 Microsoft Corporation Online predicate checking for distributed systems
US8473897B2 (en) 2008-10-03 2013-06-25 Microsoft Corporation Common intermediate representation for data scripting language
US7979844B2 (en) 2008-10-14 2011-07-12 Edss, Inc. TICC-paradigm to build formally verified parallel software for multi-core chips
US8528001B2 (en) 2008-12-15 2013-09-03 Oracle America, Inc. Controlling and dynamically varying automatic parallelization
US20100175049A1 (en) 2009-01-07 2010-07-08 Microsoft Corporation Scope: a structured computations optimized for parallel execution script language
US20100250564A1 (en) 2009-03-30 2010-09-30 Microsoft Corporation Translating a comprehension into code for execution on a single instruction, multiple data (simd) execution
US9600255B2 (en) 2010-10-08 2017-03-21 Microsoft Technology Licensing, Llc Dynamic data and compute resource elasticity
US9600250B2 (en) 2010-10-08 2017-03-21 Microsoft Technology Licensing, Llc Declarative programming model with a native programming language
US9760348B2 (en) 2010-11-29 2017-09-12 Microsoft Technology Licensing, Llc Verification of a dataflow representation of a program through static type-checking

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007328415A (ja) * 2006-06-06 2007-12-20 Univ Waseda ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JPN6016017606; '"マルチコア時代の新常識 CPUの使い方"' SoftwareDesign 第225号, 20090718, pp.84-91, (株)技術評論社 *
JPN7016001161; Constantine D. Polychronopoulos: '"The Hierarchical Task Graph and its Use in Auto-Scheduling"' ICS '91 Proceedings of the 5th international conference on Supercomputing , 1991, pp.252-263, ACM *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10334028B2 (en) 2016-04-11 2019-06-25 Fujitsu Limited Apparatus and method for processing data

Also Published As

Publication number Publication date
WO2012047554A1 (en) 2012-04-12
CN102402419A (zh) 2012-04-04
KR20130122619A (ko) 2013-11-07
KR101825772B1 (ko) 2018-02-05
US9658890B2 (en) 2017-05-23
JP6010540B2 (ja) 2016-10-19
EP2625600A1 (en) 2013-08-14
EP2625600A4 (en) 2015-01-14
US20120089968A1 (en) 2012-04-12
CA2813600A1 (en) 2012-04-12

Similar Documents

Publication Publication Date Title
JP6010540B2 (ja) 選択された実行ランタイムによる実行のためのユーザコードのランタイム非依存表現
US10592218B2 (en) Dynamic data and compute resource elasticity
US10585653B2 (en) Declarative programming model with a native programming language
EP2140352B1 (en) Parallel runtime execution on multiple processors
EP2135163B1 (en) Data parallel computing on multiple processors
JP5496683B2 (ja) カスタマイズ方法及びコンピュータシステム
KR20100127309A (ko) 태스크들에 걸쳐 오퍼레이팅 시스템 서브-프로세스들 공유
CN101176061A (zh) 数字信号处理器上多任务的实现
US20230359440A1 (en) Externally-initiated runtime type extension
AU2016203532B2 (en) Parallel runtime execution on multiple processors
AU2014221239B2 (en) Data parallel computing on multiple processors
Medeiros et al. Grid programming frameworks

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140902

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140902

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150522

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151016

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151109

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160209

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160512

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160704

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160916

R150 Certificate of patent or registration of utility model

Ref document number: 6010540

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250