コンピュータに方法を実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体であって、前記方法は、ユーザコードのランタイム非依存表現の実行のためのコンピュータシステムにおける第1の実行ランタイムを選択することであって、前記第1の実行ランタイムは、少なくとも1つの前記ランタイム非依存表現のヒューリスティックに基づき選択される、選択することと、スケジューラを呼び出して、前記第1の実行ランタイムを使用して前記コンピュータシステムで実行のための前記ランタイム非依存表現中のタスクのセットをディスパッチすることとを備えることを特徴とするコンピュータ読み取り可能な記録媒体。前記方法は、前記ユーザコードを前記タスクのセットを含む前記ランタイム非依存表現に変換することをさらに備えることを特徴とする請求項1に記載のコンピュータ読み取り可能な記録媒体。前記ユーザコードは、前記タスクのセットおよび前記タスクのセットの相互関係のセットを固有の方法で表すことを特徴とする請求項1に記載のコンピュータ読み取り可能な記録媒体。前記ユーザコードは、クエリー構文を使用して前記タスクのセットおよび前記タスクのセットの相互関係のセットを特定することを特徴とする請求項1に記載のコンピュータ読み取り可能な記録媒体。前記ランタイム非依存表現は、前記第1の実行ランタイムおよび前記第1の実行環境とは異なる第2の実行ランタイムによって実行可能であることを特徴とする請求項1に記載のコンピュータ読み取り可能な記録媒体。前記ランタイム非依存表現は、データフローに関して前記タスクのセットを表すことを特徴する請求項1に記載のコンピュータ読み取り可能な記録媒体。前記ランタイム非依存表現は、DAG有向非巡回グラフを形成することを特徴とする請求項1に記載のコンピュータ読み取り可能な記録媒体。前記スケジューラは、利用可能になる前記タスクに対応する入力データのセットに応じて前記タスクのセットにおけるタスクをディスパッチするように構成されていることを特徴とする請求項1に記載のコンピュータ読み取り可能な記録媒体。コンピュータに方法を実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体であって、前記方法は、固有の方法で表現されるユーザコードにおけるタスクのセットおよび前記タスクのセットの相互関係のセットを特定することと、前記タスクのセットおよび前記相互関係のセットを前記ユーザコードのランタイム非依存表現に変換することとを備えることを特徴するコンピュータ読み取り可能な記録媒体。前記ランタイム非依存表現は、データフローに関して前記タスクのセットを表すことを特徴する請求項9に記載のコンピュータ読み取り可能な記録媒体。前記ランタイム非依存表現は、DAG有向非巡回グラフを形成することを特徴とする請求項9に記載のコンピュータ読み取り可能な記録媒体。前記方法は、ランタイムにて前記ランタイム非依存表現の実行のための前記コンピュータシステムにおける実行ランタイムを選択することをさらに備えることを特徴とする請求項9に記載のコンピュータ読み取り可能な記録媒体。少なくとも1つのコンピュータシステムによって実行される方法であって、前記方法は、ユーザコードをデータフローに関してタスクのセットを表すDAG有向非巡回グラフを形成するランタイム非依存表現に変換することであって、前記ユーザコードは前記タスクのセットおよび前記タスクのセットの相互関係のセットを固有の方法で表す、変換することと、前記ランタイム非依存表現の実行のための前記コンピュータシステムにおける2つまたはそれより多い実行ランタイムのセットから第1の実行ランタイムを選択することであって、前記第1の実行ランタイムは、前記ランタイム非依存表現の少なくとも1つのヒューリスティックに基づいて選ばれる、選択することと、スケジューラを呼び出して、前記第1の実行ランタイムを使用して前記コンピュータシステムで実行のための前記ランタイム非依存表現中のタスクのセットをディスパッチすることとを備えることを特徴とする方法。前記ランタイム非依存表現は、前記第1の実行ランタイムおよび前記2つまたはそれより多い実行ランタイムにおける第2の実行ランタイムによって実行可能であり、前記第2の実行ランタイムは前記第1の実行環境とは異なることを特徴とする請求項13に記載の方法。以下の詳細な説明において、参照が添付図面に対してなされ、添付図面は詳細な説明の一部を形成し、および本発明が実行されるであろう特定の実施形態を図示する手段として示される。これに関して、最上部底部前面裏面先頭末尾などの方向の専門用語は、説明されている図面の方向に関して使用される。なぜなら、実施形態のコンポーネントは、複数の異なる方向にて位置づけられることが可能で、方向の専門用語は、例示のために使用され、および全く限定しない。他の実施形態が利用されうること、および構造上または論理上の変更が本発明の範囲から逸脱することなくなされうることが理解される。以下の詳細な説明は、それゆえ、限定した意味にとられず、および本発明の範囲は、添付の特許請求の範囲によって定義される。ここで記載される様々な例示的な実施形態の特徴は、特に別に書き留められない限り、互いに組み合わせられうることが理解される。図1は、コンピュータシステムにおける実行環境10の実施形態を図示しているブロック図である。コンピュータシステムは、図4Aで示されるコンピュータシステム100例えば、シングルマシン、図4Bで示されるコンピュータシステム150例えば、マシンのクラスタ、または図4Cで示されるコンピュータシステム160例えば、マシンのクラウドなどである。実行環境10は、コンピュータシステムにおけるオペレーションのランタイムモードを表している。ここで、コンピュータシステムは、図4Aにおいて示されおよび以下の追加の詳細において記載されるプロセッシングコア103のようなコンピュータシステムの1つまたは複数のプロセッシングコア上にて、命令を実行する。実行環境10は、2つまたはそれより多いタスク14を伴う呼び出されたユーザコード12、ランタイム非依存ライブラリ16、ユーザコード12のランタイム非依存表現RAR18、呼び出されたスケジューラ20、および実行ランタイム241-24Mを含む。ここで、Mは2より大きいまたは2と等しい整数であり、M番目の実行ランタイム24Mを意味する。実行環境10は、ユーザコード12が異なる実行ランタイム241―24Mを使用して実行させられることを可能にする、分散タスクプログラミングモデルを提供する。特に、実行環境10は、動的にユーザコード12を選択された実行ランタイム24に結合して、ユーザコード12の実行が実行環境10のコンピュータシステム内でスケーリングされることを可能にする。実行環境10は、ユーザコード12によって定義されるタスク14が、ランタイム非依存ライブラリ16、RAR18、スケジューラ20、および選択された実行ランタイム24を使用して同時に実行されることを可能にする。各実行ランタイム241-24Mは、典型的に、基礎となるコンピュータシステムに適しているプログラミング言語および/またはプログラミングモデルに対応している。例えば、ある実行ランタイム24例えば、ConcRTMicrosoftConcurrencyRuntimeは、マルチプロセッサコアを有するシングルマシンでユーザコード12の並列実行を向上させるよう設計されうる例えば、図4Aにおいて示されるコンピュータシステム100。別の実行ランタイム24例えば、MPIMessagePassingInterfaceランタイムは、マシンのクラスタでユーザコード12の並列実行を向上させるように設計されうる例えば、図4Bにおいて示されるコンピュータシステム150。さらに実行ランタイム24は、マシンのクラウドでユーザコード12の並列実行を向上させるように設計されうる例えば、図4Cにおいて示されるコンピュータシステム160。ユーザコード12は、1つまたは複数の並列アルゴリズムの直感的な表現を形成する一連の命令を含む。ユーザコード12は、各アルゴリズム内のタスク14およびタスク14の相互関係を特定することによって、データフロー上の各アルゴリズムを基礎とする。ユーザコード12は、任意の特定の実行ランタイム241-24Mのプログラミングの特徴または構文を明確に考慮せずに、タスク14およびタスク14の相互関係を表す。したがって、ユーザコード12は、RAR18へ変換され、およびスケジューラ20およびランタイム非依存ライブラリ16によって選択される実行ランタイム241-24Mを使用して実行されることが可能である。ある実施形態において、ユーザコード12は、ランタイム非依存ライブラリ16中のAPIApplicationProgramInterfaceを呼び出す命令を含んで、タスク14の実行を開始する。他の実施形態において、ユーザコード12は、他のプログラミング言語の構文および/またはこれに対応するランタイム非依存ライブラリ16によって提供されるツールを使用して、動的に選択された実行ランタイム241-24Mを使用してタスク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に変換可能で選択された実行ランタイム241-24Mによって実行可能である他の適したネイティブのプログラミング言語にて書かれうる。同様に、各タスク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の固有の並列性を具象化しおよび実行ランタイム241-24Mのいずれかによって実行されうるように、ユーザコード12をRAR18へ変換する。RAR18は、実行ランタイム241-24Mのいずれかのスケジューラ20に移植しうるタスク14の抽象化を含む。ある実施形態において、ランタイム非依存ライブラリ16は、ユーザコード12におけるタスク14間のシーケンスを特定してユーザコード12におけるデータのフローを表すDAGDirectedAcyclicGraphを形成することによって、RAR18を生成する。DAGのゆえに、ランタイム非依存ライブラリ16は、タスク14を表しおよびタスク間のデータのフローにしたがってノード間の関係すなわち、相互関係を表すノードを形成する。他の実施形態において、ランタイム非依存ライブラリ16は、他の適したデータ構成を使用してRAR18を生成して、ユーザプログラム12における固有の並列性を表す。RAR18の作成とともに、ランタイム非依存ライブラリ16は、ユーザコード12の実行のための実行ランタイム241-24Mを、基礎となるコンピュータシステムおよびRAR18に対応するヒューリスティックに基づいて選択する。特に、ランタイム非依存ライブラリ16は、ユーザコード12のタスク14を最も効率よく実行できる実行ランタイム1―24Mを選択することによって、ユーザコード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のためのプログラミングモデルを実行ランタイム241-24Mのセットに基づいて表現する。そうすることによって、同じユーザコード12は、各実行ランタイム241-24Mのためのランタイム特有のコードを含むことのオーバーヘッドを負うことなく、異なる実行ランタイム241-24Mを対象とするために使用されうる。結果として、実行環境10は、シングルマシンから多重のマシン例えば、クラスタまたはクラウドへの自動のスケーリングを提供するユーザコード12のためのプログラミングモデルをサポートする。実行環境10は、実行ランタイム241-24Mの特徴をサポートするリッチプログラミングモデルを提供することもできる。例えば、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は、タスク141-144すなわち、それぞれ、読み出し、SelectManyマッパーmapper、GroupBy、およびSelectManyレデューサreducerをユーザコード12Aにおけるクエリーから認識し、およびタスク141―144の表現をDAG18Aへ変換する図2の実施形態のフロー図におけるブロックで示されるように。ランタイム非依存ライブラリ16は、タスク141―144の相互関係を認識し、および相互関係の表現をDAG18Aへ変換することもできる。相互関係は、あるタスク14による出力および別のタスク14への入力であるデータのセットを含むタスク14間の順序を特定する。図2において、矢印341は、タスク141すなわち、読み出しとタスク142すなわち、SelectManyマッパーmapperとの間の相互関係を表している。言い換えると、矢印341は、タスク141による出力およびタスク142への入力であるデータのセットを表している。同様に、矢印342は、タスク142とタスク143との間の関係を表しており、矢印343はタスク143とタスク144との間の関係を表している。図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は、基礎となるコンピュータシステムにおける計算リソースの能力の変更をとらえて説明するaccountfor。例えば、スケジューラ20は、計算リソースがコンピュータシステムに増加させられたこと例えば、1つまたは複数のマシンがコンピュータシステムに加えられることが原因で、またはコンピュータシステムから取り除かれたこと例えば、コンピュータシステムの1つまたは複数のノードの失敗または利用不可能が原因でを検出できる。スケジューラ20は、タスク14の入力データのサイズおよびタスク14のための利用可能な計算リソースの量を表す情報を、ユーザコード12における1つまたは複数の関数に提供することができる。関数は、次々に、スケジューラ20に、プログラマがタスク14の実行のために薦める、推奨されているまたは最適な同時実行のレベルを提供することができる。スケジューラ20は、この情報を入力データのサイズおよび利用可能な計算リソースの量とともに考慮して、適切なタスク14のための同時実行のレベルを決定する。図3は、図2において示されているDAG18Aを使用して、ユーザコード12を実行する実施形態を図示しているブロック図である。図3の例において、スケジューラ20は、DAG18Aにおけるタスク141-144のそれぞれのための適切な同時実行のレベルを決定し、および同時実行のレベルに基づく各タスク141-144のインスタンスの適切な数を決定する。例えば、スケジューラ20は、タスク141が呼び出されるときに、シングルインスタンスが上記関数に基づきタスク141のために適切であると決定する。同様に、スケジューラ20は、タスク143が呼び出されるときに、シングルインスタンスが上記関数に基づきタスク143のために適切であると決定する。タスク142のために、スケジューラ20は、Nのインスタンスが適切であると決定する。Nは2より大きいまたは2と等しい整数である。したがって、スケジューラ20は、タスク142のための入力データのセットが、Nのサブセットに分けられるようにし、および実行のためにNの計算リソース例えば、クラスタまたはクラウドにおけるノードマシンに至るまで提供されるようにする。スケジューラ20は、タスク142によって生成される出力データのセットが、タスク143に提供されうる形式にマージされるようにすることもできる。タスク144のために、スケジューラ20は、Pのインスタンスが適切であると決定する。Pは2より大きいまたは2と等しい整数であり、Nと等しくてもまたは等しくなくてもよい。したがって、スケジューラ20は、タスク144のための入力データのセットが、Pのサブセットに分けられるようにし、および実行のためにPの計算リソース例えば、クラスタまたはクラウドにおけるノードマシンに至るまで提供されるようにする。スケジューラ20は、タスク144によって生成される出力データのセットが、クエリーの出力として提供されうる形式にマージされるようにすることもできる。動的データおよび計算の柔軟性は、ユーザコード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に格納される命令にアクセスし、および命令を実行するように構成される。命令は、BIOSBasicInputOutputSystemまたはファームウェア図示せず、ユーザコード12、ランタイム非依存ライブラリ16、スケジューラ20、オペレーティグシステムOS122、および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における記憶装置の例は、ハードディスクドライブ、RAMRandomAccessMemory、ROMReadOnlyMemory、フラッシュメモリドライブおよびカード、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つまたはそれより多いコンピュータシステム1001-100Qのセットを含む分散コンピューティング環境を形成する。Qは、2より大きいまたは2と等しい整数である。コンピュータシステム1001-100Qは、任意の適した種類、数、および構成のコントローラ、バス、インタフェースを含む相互接続152、および/または他の有線または無線の接続を使用して通信する。コンピュータシステム150は、マシンのクラスタすわなち、コンピュータシステム1001-100Qのクラスタとして構成される。各コンピュータシステム1001-100Qは、他のコンピュータシステム1001―100Qとして同じ構成または異なる構成を含むことができる。ある実施形態において、システム150における各コンピュータシステム1001-100Qは、MPIなどのランタイム24を含む。ランタイム24は、コンピュータシステム1001-100Qが含みうる任意の他のランタイム24に加えて、クラスタのために構成される。他の実施形態において、システム150における各コンピュータシステム1001―100Qは、任意の適した種類、数、および/または組み合わせのランタイム24を含む。図4Cは、上で記載したように、実行環境10を実装するように構成されるコンピュータシステム160の実施形態を図示しているブロック図である。コンピュータシステム160は、2つまたはそれより多いコンピュータシステム1001―100Rのセットを含む分散コンピューティング環境を形成する。Rは、2より大きいまたは2と等しい整数である。コンピュータシステム1001-100Rは、任意の適した種類、数、および構成の有線および/または無線のネットワーク装置を含むネットワーク162を使用して、通信する。コンピュータシステム160は、マシンのクラウドすなわち、コンピュータシステム1001-100Rのクラウドとして構成される。各コンピュータシステム1001-100Rは、他のコンピュータシステム1001-100Rとして同じ構成または異なる構成を含むことができる。ある実施形態において、システム160における各コンピュータシステム1001―100Rは、コンピュータシステム1001-100Rが含みうる任意の他のランタイム24に加えてクラウドのために構成されるランタイム24を含む。他の実施形態において、システム160における各コンピュータシステム1―100Rは、任意の適した種類、数、および/または組み合わせのランタイム24を含む。特定の実施形態が明細書で例示および記載されてきたが、当業者にとって、様々な代替および/または同等の実装例が、本発明の範囲から逸脱すること無く、示されおよび記載された特定の実施形態の代わりとなりうることが認められるだろう。この出願は、本明細書で議論された特定の実施形態の任意の適用または変形に及ぶことを意図する。それゆえ、本発明は特許請求の範囲およびそれと同等なものによってのみ限定されることが意図される。