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

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

▶ EDGECORTIX株式会社の特許一覧

特開2024-89645シーケンスパーティションベースのスケジュール最適化
<>
  • 特開-シーケンスパーティションベースのスケジュール最適化 図1
  • 特開-シーケンスパーティションベースのスケジュール最適化 図2
  • 特開-シーケンスパーティションベースのスケジュール最適化 図3
  • 特開-シーケンスパーティションベースのスケジュール最適化 図4
  • 特開-シーケンスパーティションベースのスケジュール最適化 図5
  • 特開-シーケンスパーティションベースのスケジュール最適化 図6
  • 特開-シーケンスパーティションベースのスケジュール最適化 図7
  • 特開-シーケンスパーティションベースのスケジュール最適化 図8
  • 特開-シーケンスパーティションベースのスケジュール最適化 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024089645
(43)【公開日】2024-07-03
(54)【発明の名称】シーケンスパーティションベースのスケジュール最適化
(51)【国際特許分類】
   G06F 9/50 20060101AFI20240626BHJP
【FI】
G06F9/50 150E
【審査請求】有
【請求項の数】20
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023211545
(22)【出願日】2023-12-14
(11)【特許番号】
(45)【特許公報発行日】2024-06-25
(31)【優先権主張番号】18/067,016
(32)【優先日】2022-12-16
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】520043615
【氏名又は名称】EDGECORTIX株式会社
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】フスマン ジェンス
(72)【発明者】
【氏名】ダスグプタ サキャシンハ
(72)【発明者】
【氏名】ネズ ニコライ
(57)【要約】      (修正有)
【課題】シーケンスパーティションベースのスケジュールを最適化する装置、方法及びプログラムを提供する。
【解決手段】方法は、シーケンス及び当該シーケンスに基づくスケジュールを生成し、シーケンスをスケジュール及びデータ依存グラフに基づいて複数のシーケンスパーティションへと分割し、各シーケンスパーティションが複数の命令の一部及び複数のバッファの一部を含み、各シーケンスパーティションごとに、複数のパーティション最適化反復を実行し、複数のシーケンスパーティションを結合して結合済みスケジュールを作成することによって実行される。
【選択図】図1
【特許請求の範囲】
【請求項1】
プロセッサに、
データ依存グラフの複数の命令のうちの各命令を複数の計算ユニットのうちの対応する計算ユニットへ、及び前記データ依存グラフの複数のバッファのうちの各バッファを複数のメモリユニットのうちの対応するメモリユニットへ割り当てる手順;
前記複数の命令及び前記複数のバッファを順序付けて、シーケンスを作成する手順;
前記シーケンスに基づいてスケジュールを作成する手順;
前記シーケンスを前記スケジュール及び前記データ依存グラフに基づいて複数のシーケンスパーティションへと分割する手順、各シーケンスパーティションは前記複数の命令の一部及び前記複数のバッファの一部を含む;
各シーケンスパーティションごとに、
前記シーケンスパーティション内の前記複数の命令の前記一部のうちの命令及び前記複数のバッファの前記一部のうちのバッファを時間の間隔へ割り当てて、パーティションスケジュールを作成する手順、
以前の反復のパーティションスケジュールが現在の反復の前記パーティションスケジュールよりも最適であると判定したことに応答して、前記以前の反復の前記シーケンスパーティションを復元する手順、及び
前記シーケンスパーティションを変異させる手順
という複数のパーティション最適化反復を実行する手順;及び
前記複数のシーケンスパーティションを結合して、結合済みスケジュールを作成する手順
を実行させるためのコンピュータプログラム。
【請求項2】
前記プロセッサに、
前記複数のパーティション最適化反復を実行した後に、前記複数のシーケンスパーティションを結合して、結合済みシーケンスを作成する手順;
前記結合済みシーケンスを変異させる手順、
前記結合済みシーケンス内の前記複数の命令のうちの前記命令、及び前記複数のバッファのうちの前記バッファを時間の間隔へ割り当てて、前記結合済みスケジュールを再作成する手順、及び
以前の反復の前記結合済みスケジュールが現在の反復の前記結合済みスケジュールよりも最適であると判定したことに応答して、前記以前の反復の前記シーケンスを復元する手順
という複数の結合済みスケジュール最適化反復を実行する手順
を更に実行させる、請求項1に記載のコンピュータプログラム。
【請求項3】
前記スケジュールを作成する前記手順が、
前記シーケンス内の前記複数の命令のうちの前記命令及び前記複数のバッファのうちの前記バッファを時間の間隔へ割り当てる手順、
以前の反復のスケジュールが現在の反復の前記スケジュールよりも最適であると判定したことに応答して前記以前の反復の前記シーケンスを復元する手順、及び
前記シーケンスを変異させる手順
という複数のスケジュール最適化反復を実行する手順を有する、請求項1に記載のコンピュータプログラム。
【請求項4】
前記シーケンスを分割する前記手順が:
前記スケジュール内の複数の初期境界線を引く手順;
各境界線ごとに、前記データ依存グラフ内の前記複数のバッファのうちのバッファと交わるように前記初期境界線をシフトする手順;及び
前記複数のバッファのうちの各交わったバッファを複製する手順
を有する、請求項1に記載のコンピュータプログラム。
【請求項5】
前記シーケンスを分割する前記手順が更に:
ダミー命令を各交わったバッファ及び各複製されたバッファへ追加する手順
を有する、請求項4に記載のコンピュータプログラム。
【請求項6】
前記変異させる手順が:
前記シーケンスパーティション内の前記複数の命令の前記一部のうちの前記命令を再順序付けする手順、
前記シーケンスパーティション内の前記複数の命令の前記一部のうちの前記命令を再割り当てする手順、又は
前記シーケンスパーティション内の前記複数のバッファの前記一部のうちの前記バッファを再割り当てする手順
のうちの少なくとも1つを実行する手順を有する、請求項1に記載のコンピュータプログラム。
【請求項7】
前記シーケンスを分割する前記手順が、前記シーケンスを3以上の数のシーケンスパーティションへと分割する手順を有する、請求項1に記載のコンピュータプログラム。
【請求項8】
前記シーケンスを分割する前記手順が、各シーケンスがおよそ100以上の命令を有するような数のシーケンスパーティションへと前記シーケンスを分割する手順を有する、請求項1に記載のコンピュータプログラム。
【請求項9】
データ依存グラフの複数の命令のうちの各命令を複数の計算ユニットのうちの対応する計算ユニットへ、及び前記データ依存グラフの複数のバッファのうちの各バッファを複数のメモリユニットのうちの対応するメモリユニットへ割り当てる段階;
前記複数の命令及び前記複数のバッファを順序付けて、シーケンスを作成する段階;
前記シーケンスに基づいてスケジュールを作成する段階;
前記シーケンスを前記スケジュール及び前記データ依存グラフに基づいて複数のシーケンスパーティションへと分割する段階、各シーケンスパーティションは前記複数の命令の一部及び前記複数のバッファの一部を含む;
各シーケンスパーティションごとに、
前記シーケンスパーティション内の前記複数の命令の前記一部のうちの命令及び前記複数のバッファの前記一部のうちのバッファを時間の間隔へ割り当てて、パーティションスケジュールを作成する段階、
以前の反復のパーティションスケジュールが現在の反復の前記パーティションスケジュールよりも最適であると判定したことに応答して、前記以前の反復の前記シーケンスパーティションを復元する段階、及び
前記シーケンスパーティションを変異させる段階
という複数のパーティション最適化反復を実行する段階;及び
前記複数のシーケンスパーティションを結合して、結合済みスケジュールを作成する段階
を備える方法。
【請求項10】
前記複数のパーティション最適化反復を実行した後に、前記複数のシーケンスパーティションを結合して、結合済みシーケンスを作成する段階;
前記結合済みシーケンスを変異させる段階、
前記結合済みシーケンス内の前記複数の命令のうちの前記命令、及び前記複数のバッファのうちの前記バッファを時間の間隔へ割り当てて、前記結合済みスケジュールを再作成する段階、及び
以前の反復の前記結合済みスケジュールが現在の反復の前記結合済みスケジュールよりも最適であると判定したことに応答して、前記以前の反復の前記シーケンスを復元する段階
という複数の結合済みスケジュール最適化反復を実行する段階
を更に備える、請求項9に記載の方法。
【請求項11】
前記スケジュールを作成する前記段階が、
前記シーケンス内の前記複数の命令のうちの前記命令及び前記複数のバッファのうちの前記バッファを時間の間隔へ割り当てる段階、
以前の反復のスケジュールが現在の反復の前記スケジュールよりも最適であると判定したことに応答して前記以前の反復の前記シーケンスを復元する段階、及び
前記シーケンスを変異させる段階
という複数のスケジュール最適化反復を実行する段階を有する、請求項9に記載の方法。
【請求項12】
前記シーケンスを分割する前記段階が:
前記スケジュール内の複数の初期境界線を引く段階;
各境界線ごとに、前記データ依存グラフ内の前記複数のバッファのうちのバッファと交わるように前記初期境界線をシフトする段階;及び
前記複数のバッファのうちの各交わったバッファを複製する段階
を有する、請求項9に記載の方法。
【請求項13】
前記シーケンスを分割する前記段階が更に:
ダミー命令を各交わったバッファ及び各複製されたバッファへ追加する段階
を有する、請求項12に記載の方法。
【請求項14】
前記変異させる段階が:
前記シーケンスパーティション内の前記複数の命令の前記一部のうちの前記命令を再順序付けする段階、
前記シーケンスパーティション内の前記複数の命令の前記一部のうちの前記命令を再割り当てする段階、又は
前記シーケンスパーティション内の前記複数のバッファの前記一部のうちの前記バッファを再割り当てする段階
のうちの少なくとも1つを実行する段階を有する、請求項9に記載の方法。
【請求項15】
前記シーケンスを分割する前記段階が、前記シーケンスを3以上の数のシーケンスパーティションへと分割する段階を有する、請求項9に記載の方法。
【請求項16】
前記シーケンスを分割する前記段階が、各シーケンスがおよそ100以上の命令を有するような数のシーケンスパーティションへと前記シーケンスを分割する段階を有する、請求項9に記載の方法。
【請求項17】
データ依存グラフの複数の命令のうちの各命令を複数の計算ユニットのうちの対応する計算ユニットへ、及び前記データ依存グラフの複数のバッファのうちの各バッファを複数のメモリユニットのうちの対応するメモリユニットへ割り当て;
前記複数の命令及び前記複数のバッファを順序付けて、シーケンスを作成し;
前記シーケンスに基づいてスケジュールを作成し;
前記シーケンスを前記スケジュール及び前記データ依存グラフに基づいて複数のシーケンスパーティションへと分割し、各シーケンスパーティションは前記複数の命令の一部及び前記複数のバッファの一部を含む;
各シーケンスパーティションごとに、
前記シーケンスパーティション内の前記複数の命令の前記一部のうちの命令及び前記複数のバッファの前記一部のうちのバッファを時間の間隔へ割り当てて、パーティションスケジュールを作成すること、
以前の反復のパーティションスケジュールが現在の反復の前記パーティションスケジュールよりも最適であると判定したことに応答して、前記以前の反復の前記シーケンスパーティションを復元すること、及び
前記シーケンスパーティションを変異させること
という複数のパーティション最適化反復を実行し;
前記複数のパーティションスケジュールを結合して、結合済みスケジュールを作成する
ように構成されている回路を有するコントローラ
を備える装置。
【請求項18】
前記回路が更に、
前記複数のパーティション最適化反復を実行した後に、前記複数のシーケンスパーティションを結合して、結合済みシーケンスを作成し;
前記結合済みシーケンスを変異させること、
前記結合済みシーケンス内の前記複数の命令のうちの前記命令、及び前記複数のバッファのうちの前記バッファを時間の間隔へ割り当てて、前記結合済みスケジュールを再作成すること、及び
以前の反復の前記結合済みスケジュールが現在の反復の前記結合済みスケジュールよりも最適であると判定したことに応答して、前記以前の反復の前記シーケンスを復元すること
という複数の結合済みスケジュール最適化反復を実行する
ように構成されている、請求項17に記載の装置。
【請求項19】
前記スケジュールを作成することが、
前記シーケンス内の前記複数の命令のうちの前記命令及び前記複数のバッファのうちの前記バッファを時間の間隔へ割り当てること、
以前の反復のスケジュールが現在の反復の前記スケジュールよりも最適であると判定したことに応答して前記以前の反復の前記シーケンスを復元すること、及び
前記シーケンスを変異させること
という複数のスケジュール最適化反復を実行することを有する、請求項17に記載の装置。
【請求項20】
前記シーケンスを分割することが:
前記スケジュール内の複数の初期境界線を引くこと;
各境界線ごとに、前記データ依存グラフ内の前記複数のバッファのうちのバッファと交わるように前記初期境界線をシフトすること;及び
前記複数のバッファのうちの各交わったバッファを複製すること
を有する、請求項17に記載の装置。
【発明の詳細な説明】
【背景技術】
【0001】
チップ、例えば集積回路へと、ますます計算リソースが搭載されるようになるにつれて、計算能力のコストがより安価になっている。しかしながら、所与のチップの完全な計算能力は、必ずしも全てのタスクに対して利用されていない。タスクは、所与のチップが実行の最中に並列にリソースを利用するようにプログラミングされている。命令は、稼働率を高めるためにスペアユニット上で実行されるように割り当てられる。しかしながら、命令のシーケンス内の論理的な制限に起因して、全てのリソースが全ての機会の最中に利用されることができるわけではない。例えば、命令Cは、命令A及びBの出力を必要とし、従って命令Cは命令A及びBが両方とも実行されるまで実行されることはできない。
【図面の簡単な説明】
【0002】
添付の図と共に読まれる場合、本開示の態様が下記の詳細な説明から最も良く理解される。産業における慣例に従って、様々な特徴は一定の縮尺で描かれていないことに留意されたい。実際には、様々な特徴の寸法は、説明を明瞭にするために、恣意的に拡大又は縮小され得る。
【0003】
図1】本発明の少なくとも1つの実施形態に係る、シーケンスパーティションベースのスケジュール最適化の動作フローの図である。
【0004】
図2】本発明の少なくとも1つの実施形態に係る、シーケンス及びスケジュール生成の動作フローの図である。
【0005】
図3】本発明の少なくとも1つの実施形態に係る、スケジュール最適化の動作フローの図である。
【0006】
図4】本発明の少なくとも1つの実施形態に係る、スケジュール分割ベースのシーケンスパーティション化の動作フローの図である。
【0007】
図5】本発明の少なくとも1つの実施形態に係る、境界線を有するデータ依存グラフの一部の図である。
【0008】
図6】本発明の少なくとも1つの実施形態に係る、シフトした境界線を有するデータ依存グラフの一部の図である。
【0009】
図7】本発明の少なくとも1つの実施形態に係る、境界線においてパーティション化されたデータ依存グラフの一部の図である。
【0010】
図8】本発明の少なくとも1つの実施形態に係る、結合済みスケジュール最適化の動作フローの図である。
【0011】
図9】本発明の少なくともいくつかの実施形態に係る、シーケンスパーティションベースのスケジュール最適化のためのハードウェア構成のブロック図である。
【発明を実施するための形態】
【0012】
下記の開示は、提供される主題の様々な特徴を実装するための、多くの様々な実施形態又は例を提供する。構成要素、値、動作、材料、配置、又は同様のものの具体的な例が、本開示を単純化するために下記で説明される。当然ながら、これらは単なる例であって、限定を意図するものではない。他の構成要素、値、動作、材料、配置、又は同様のものが企図される。加えて、本開示は様々な例において参照番号及び/又は文字を繰り返す場合がある。この繰り返しは、簡略さ及び明瞭さを目的としており、それ自体において、様々な実施形態及び/又は説明される構成間の関係を規定するものではない。
【0013】
チップの上で実行されるプログラムを開発する際に、プログラム命令はデータ依存グラフ内にグラフ化される。データ依存グラフは、各命令ごとに、当該の命令が実行され得る前に実行されなければならない全ての他の命令を示す。命令の有効なシーケンスは、データ依存グラフに準拠する。チップの単一の命令ユニットの上でプログラム全体を実行することは、比較的単純である。しかしながら、そのようなプログラミングは全ての他の命令ユニットを利用されないままにする。全体の実行時間を低減するために、プログラムの命令は、複数の命令ユニットの間で割り当てられる。命令ユニット同士の間でデータを渡すために、バッファが複数のメモリユニットの間で割り当てられる。
【0014】
チップの命令ユニット及びメモリユニットの数が増えるにつれて、可能なシーケンスの数は指数関数的に増える。スケジューリングアルゴリズムは、クロックサイクルの最も早い可能な時間間隔で各命令を貪欲に実行できるが、スケジューリングは割り当て及びシーケンスに依存している。割り当て及びシーケンスに対する変更は、全体の実行時間を低減し得るが、解空間が広大であり得、コスト関数が多くの局所最小値を有し得る。更に、割り当て又はシーケンスへのいかなる変更も、その他の全てに対して波及効果をもたらし得る。従って、スケジューリングアルゴリズムは、割り当て又はシーケンスに対する各変更ごとに再実行され、処理は全体の実行時間が満足できるものになるまで繰り返される。
【0015】
本発明の少なくともいくつかの実施形態において、シーケンスはパーティションへと分割され、変更及びスケジューリングプロセスは、個別に、各シーケンスパーティションごとに実行される。少なくともいくつかの実施形態において、このことは、シーケンス全体に対して変更及びスケジューリングプロセスを実行するよりも最終的なスケジュールの全体の実行時間を減少させる結果となる。少なくともいくつかの実施形態において、このことはまた、最終的なスケジュールにたどり着くために変更及びスケジューリングプロセスの最中に使用される計算リソースを減らす結果となる。
【0016】
図1は、本発明の少なくとも1つの実施形態に係る、シーケンスパーティションベースのスケジュール最適化の動作フローである。動作フローは、シーケンスパーティションベースのスケジュール最適化の方法を提供する。少なくともいくつかの実施形態において、方法は、特定の動作を実行するためのセクションを含む装置のコントローラ、例えば以降で説明される図9中に示されるコントローラ及び装置によって実行される。
【0017】
S100において、生成セクションがシーケンス及びスケジュールを生成する。少なくともいくつかの実施形態において、生成セクションは、命令及びバッファのデータ依存グラフからシーケンスを生成する。少なくともいくつかの実施形態において、データ依存グラフの命令及びバッファは、複数の命令ユニット及び複数のメモリユニットへ割り当てられる。少なくともいくつかの実施形態において、スケジュールは、命令及びバッファをクロックサイクルに従って時間の間隔へ割り当てることによって、シーケンスから生成される。少なくともいくつかの実施形態において、生成セクションは、以降で説明される図2中に示される動作フローを実行する。
【0018】
S102において、分割セクションがスケジュールをシーケンスパーティションへと分割する。少なくともいくつかの実施形態において、分割セクションはシーケンスをスケジュールに基づいてシーケンスパーティションへと分割する。少なくともいくつかの実施形態において、分割セクションは、シーケンスをスケジュール及びデータ依存グラフに基づいて複数のシーケンスパーティションへと分割し、各シーケンスパーティションは複数の命令の一部及び複数のバッファの一部を含む。少なくともいくつかの実施形態において、分割セクションは、シーケンスパーティションを修正して、境界線におけるバッファを複製し、その結果、各シーケンスパーティションは複製されたバッファのインスタンスを含む。少なくともいくつかの実施形態において、分割セクションは、以降で説明される図4中に示される動作フローを実行する。
【0019】
S104において、最適化セクションがシーケンスパーティションのスケジュールを最適化する。少なくともいくつかの実施形態において、最適化セクションは、各シーケンスパーティションごとに、複数のパーティション最適化反復を実行する。少なくともいくつかの実施形態において、最適化セクションはパーティションスケジュールを最適化するためにシーケンスパーティションを修正する。少なくともいくつかの実施形態において、最適化セクションは、以降で説明される図3中に示される動作フローを実行する。
【0020】
S106において、コントローラ又はそのセクションは、全てのシーケンスパーティションが最適化されたか否かを判定する。少なくともいくつかの実施形態において、コントローラはS102におけるスケジュール分割動作の結果得られるシーケンスパーティションの全てがS104においてスケジュール最適化を受けたか否かを判定する。最適化されていないシーケンスパーティションが残っているとコントローラが判定した場合、S104におけるスケジュール最適化へ戻る前に、動作フローは、次のパーティションを選択する(S107)へ進む。全てのシーケンスパーティションが最適化されたとコントローラが判定した場合、動作フローはS109におけるスケジュール結合へ進む。
【0021】
S109において、結合セクションがシーケンスを結合する。少なくともいくつかの実施形態において、結合セクションは、複数のシーケンスパーティションを結合して、結合済みスケジュールを作成する。少なくともいくつかの実施形態において、結合セクションは、S104におけるパーティションスケジュール最適化によって修正されたままのシーケンスパーティションを、S100において生成された元々のシーケンス内のように正しい順序で結合する。少なくともいくつかの実施形態において、結合セクションはシーケンスパーティションを修正して、境界線における複製されたバッファを除去する。少なくともいくつかの実施形態において、結合セクションは複数の結合済みスケジュール最適化反復を実行する。少なくともいくつかの実施形態において、結合セクションは、以降で説明される図3中に示される動作フローを、最適化セクションに実行させる。少なくともいくつかの実施形態において、結合セクションは更に、例えば以降で説明される図8中に示される動作フローを実行することによって、更に最適化をスケジューリングするように最適化セクションをスケジューリングするか、又は最適化セクションに更に最適化をスケジューリングさせる。
【0022】
図2は、本発明の少なくとも1つの実施形態に係る、シーケンス及びスケジュール生成の動作フローである。動作フローは、シーケンス及びスケジュール生成の方法を提供する。少なくともいくつかの実施形態において、方法は、装置、例えば以降で説明される図9中に示される装置の生成セクションによって実行される。
【0023】
S210において、生成セクション又はそのサブセクションは、データ依存グラフを取得する。少なくともいくつかの実施形態において、生成セクションは、プログラムスクリプトをデータ依存グラフへと変換する。少なくともいくつかの実施形態において、生成セクションはプログラムスクリプトにおける各命令をグラフ要素へと変換し、各命令ごとに、当該命令の前にどの命令が実行されなければならないかを示すように、各要素を接続する。少なくともいくつかの実施形態において、生成セクションは、プログラミングコード、例えば、PYTHON(登録商標)、JAVA(登録商標)、C++又は任意の他のプログラミング言語を変換する。少なくともいくつかの実施形態において、生成セクションは、ニューラルネットワークの仕様をデータ依存グラフへと変換する。少なくともいくつかの実施形態において、生成セクションは別のプログラム又はデバイスから、直接的に又はネットワークを経由してのいずれかで、データ依存グラフを受信する。
【0024】
S212において、生成セクション又はそのサブセクションは、命令及びバッファを物理ユニットへ割り当てる。少なくともいくつかの実施形態において、生成セクションは、データ依存グラフの複数の命令のうちの各命令を複数の計算ユニットのうちの対応する計算ユニットへ、及びデータ依存グラフの複数のバッファのうちの各バッファを複数のメモリユニットのうちの対応するメモリユニットへ割り当てる。少なくともいくつかの実施形態において、生成セクションは、集積回路、例えば、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、又は処理要素及びメモリ要素を有する任意の他のチップの計算ユニット及びメモリユニットへ、命令及びバッファを割り当てる。少なくともいくつかの実施形態において、生成セクションは、命令が並列に実行され得るように命令を計算ユニットへ割り当て、計算ユニットが命令を実行するために必要なデータを共有し得るようにバッファをメモリユニットへ割り当てる。
【0025】
S214において、生成セクション又はそのサブセクションは、命令及びバッファを順序付ける。少なくともいくつかの実施形態において、生成セクションは、複数の命令及び複数のバッファを順序付けて、シーケンスを作成する。少なくともいくつかの実施形態において、生成セクションは、各計算ユニットへ割り当てられた命令及び各メモリユニットへ割り当てられたバッファの実行を順序付ける。少なくともいくつかの実施形態において、生成セクションは、集積回路の計算ユニット及びメモリユニットの効率又は稼働率の程度と関係なくシーケンスが有効である可能性が増すように、命令及びバッファを順序付けるように構成されている。
【0026】
S216において、生成セクション又はそのサブセクションは、シーケンスのスケジュールを最適化する。少なくともいくつかの実施形態において、生成セクションは、最適化セクションにシーケンスのスケジュールを最適化させる。少なくともいくつかの実施形態において、生成セクション又は最適化セクションは、以降で説明される図3中に示される動作フローを実行する。
【0027】
図3は、本発明の少なくとも1つの実施形態に係る、スケジュール最適化の動作フローである。動作フローは、スケジュール最適化の方法を提供する。少なくともいくつかの実施形態において、動作フローはシーケンスのスケジュール又はシーケンスパーティションのパーティションスケジュールを最適化する。少なくともいくつかの実施形態において、方法は、装置、例えば以降で説明される図9中に示される装置の最適化セクションによって実行される。
【0028】
S320において、最適化セクション又はそのサブセクションは、シーケンス又はシーケンスパーティションをスケジューリングする。少なくともいくつかの実施形態において、最適化セクションは、シーケンス又はシーケンスパーティションに基づいてスケジュールを作成する。少なくともいくつかの実施形態において、最適化セクションは、シーケンス内の複数の命令のうちの命令及び複数のバッファのうちのバッファを、時間の間隔へ割り当てる。少なくともいくつかの実施形態において、最適化セクションは、シーケンスパーティション内の複数の命令の一部のうちの命令及び複数のバッファの一部のうちのバッファを、時間の間隔へ割り当てて、パーティションスケジュールを作成する。少なくともいくつかの実施形態において、最適化セクションは、スケジューリングアルゴリズムを利用して、シーケンス又はシーケンスパーティションをスケジューリングする。少なくともいくつかの実施形態において、最適化セクションは、データ依存グラフ及び集積回路性能を制約として使用して、全体の実行時間を最小化するために各命令及びバッファを割り当てるための最も早い時間間隔を判定するスケジューリングアルゴリズム、例えば、貪欲スケジューリングアルゴリズムを利用する。少なくともいくつかの実施形態において、最適化セクションは、制約に起因してそれ以上さらなる命令に進むことができないと判定したことに応答して、無効なシーケンスを認識する。
【0029】
S322において、最適化セクション又はそのサブセクションは、シーケンス又はシーケンスパーティションを変異させる。少なくともいくつかの実施形態において、最適化セクションは、シーケンス又はシーケンスパーティション内の複数の命令の一部のうちの命令を再順序付けする。少なくともいくつかの実施形態において、最適化セクションは、シーケンス又はシーケンスパーティション内の複数の命令の一部のうちの命令を再割り当てする。少なくともいくつかの実施形態において、最適化セクションは、シーケンスパーティション内の複数のバッファの一部のうちのバッファを再割り当てする。少なくともいくつかの実施形態において、最適化セクションは異なるタイプの複数の変異を実行する。少なくともいくつかの実施形態において、最適化セクションは、以前のスケジュール最適化から確立されたヒューリスティックに基づいて特定の変異を決定する。少なくともいくつかの実施形態において、最適化セクションは、変異をランダムに決定する。
【0030】
S324において、最適化セクション又はそのサブセクションは、シーケンス又はシーケンスパーティションを再スケジューリングする。少なくともいくつかの実施形態において、最適化セクションは、変異したシーケンス又はシーケンスパーティションに基づいてスケジュールを作成する。少なくともいくつかの実施形態において、最適化セクションは、S320における動作と同じ動作を、ただし変異したシーケンス又はシーケンスパーティションを用いて、実行する。
【0031】
S326において、最適化セクション又はそのサブセクションは、スケジュールが改善されているか否かを判定する。少なくともいくつかの実施形態において、最適化セクションは、S326の現在の反復において作成されたスケジュールがS326の以前の反復において作成されたスケジュールに対して改善されているか否かを判定する。少なくともいくつかの実施形態において、最適化セクションは、S326の第1の反復において作成されたスケジュールがS320の動作によって作成されたスケジュールに対して改善されているか否かを判定する。少なくともいくつかの実施形態において、最適化セクションは、複数の因子、例えば、全体の実行時間が低減したか否か、稼働率の程度が増したか否か、任意の計算ユニットの活動において何らかのギャップが存在するか否か、又は、より多くの命令がスケジュールの始まりに向けて又は終わりに向けて実行されるか否かに基づいて、スケジュールが改善されているか否かを判定する。スケジュールが改善されていないと最適化セクションが判定する場合、動作フローはS327における以前のシーケンスの復元へ進む。スケジュールが改善されていると最適化セクションが判定する場合、動作フローはS329における終端条件判定へ進む。
【0032】
S327において、最適化セクション又はそのサブセクションは、以前のシーケンス又はシーケンスパーティションを復元する。少なくともいくつかの実施形態において、最適化セクションは、以前の反復のスケジュールが現在の反復のスケジュールよりも最適であると判定したことに応答して、以前の反復のシーケンスを復元する。少なくともいくつかの実施形態において、最適化セクションは、S322において作成された変異したシーケンス又はシーケンスパーティションを破棄する。少なくともいくつかの実施形態において、最適化セクションは、終端条件がS329において満たされていると最適化セクションが判定しない限り、現在の反復のシーケンス又はシーケンスパーティションの代わりに以前の反復のシーケンス又はシーケンスパーティションを用いて次の反復へ進む。
【0033】
S329において、最適化セクション又はそのサブセクションは、終端条件が満たされているか否かを判定する。少なくともいくつかの実施形態において、最適化セクションは、予め定められた数の反復が実行された後に、終端条件が満たされていると判定する。少なくともいくつかの実施形態において、最適化セクションは、稼働率の程度が閾値となる程度を超えていることに応答して、終端条件が満たされていると判定する。少なくともいくつかの実施形態において、最適化セクションは、全体の実行時間が閾値となる継続時間又はS320における動作によって作成された初期スケジュールの全体の実行時間の予め定められた割合よりも小さくなっていることに応答して、終端条件が満たされていると判定する。終端条件が未だ満たされていないと最適化セクションが判定する場合、動作フローはS322におけるシーケンス変異へ戻る。終端条件が満たされていると最適化セクションが判定する場合、動作フローは終了する。
【0034】
図4は、本発明の少なくとも1つの実施形態に係る、スケジュール分割ベースのシーケンスパーティション化の動作フローである。動作フローは、スケジュール分割ベースのシーケンスパーティション化の方法を提供する。少なくともいくつかの実施形態において、方法は、装置、例えば以降で説明される図9中に示される装置の分割セクションによって実行される。
【0035】
S430において、分割セクション又はそのサブセクションは、パーティションの数を設定する。少なくともいくつかの実施形態において、分割セクションは、シーケンスの分割先となるパーティションの数を設定する。少なくともいくつかの実施形態において、分割セクションは、シーケンスを3以上の数のシーケンスパーティションへと分割する。少なくともいくつかの実施形態において、分割セクションは、各シーケンスがおよそ100以上の命令を有するような数のシーケンスパーティションへとシーケンスを分割する。少なくともいくつかの実施形態において、分割セクションは、以前のシーケンスパーティションベースのスケジュール最適化からのヒューリスティックに従ってパーティションの数を設定し、当該ヒューリスティックは1つ又は複数の因子、例えば、命令及びバッファの数、計算ユニット及びメモリユニットの数、最適化されたスケジュールの全体の実行時間、及びスケジュールを最適化することに費やされた計算リソースの量に基づく。
【0036】
S432において、分割セクション又はそのサブセクションは、スケジュール内に境界線を引く。少なくともいくつかの実施形態において、分割セクションは、スケジュール内に視覚的に又は論理的に境界線を引く。少なくともいくつかの実施形態において、スケジュールは、1つの軸が時間を表し、他方の軸が割り当てられた命令ユニット又はメモリユニットを表す、命令及びバッファの2次元表である。少なくともいくつかの実施形態において、分割セクションは、時間を表す軸に垂直な境界線を引き、当該境界線は早い方の時間間隔を遅い方の時間間隔から分離する。少なくともいくつかの実施形態において、分割セクションは、S430における動作によって設定されるパーティションの数に従って、早い方の時間間隔の中の命令の数がシーケンス内の命令の総数に比例するように境界線を引く。少なくともいくつかの実施形態において、動作S432、S433、S435及びS436の反復が進むにつれて、分割セクションはスケジュール内に複数の初期境界線を引く。
【0037】
S433において、分割セクション又はそのサブセクションは、データ依存グラフ内の近いバッファに交わるように境界線をシフトする。少なくともいくつかの実施形態において、分割セクションは、スケジュール内に引かれる境界線に相当する、シーケンス及びデータ依存グラフ内の境界線を引く。少なくともいくつかの実施形態において、スケジュール内に引かれる境界線は直線であるが、シーケンス及びデータ依存グラフ内に引かれる境界線は直線である可能性は高くない。少なくともいくつかの実施形態において、分割セクションは、境界線があるパーティションの命令及びバッファを別のパーティションの命令及びバッファから1つ又は複数のバッファにおいて分離するように、境界線又はその一部をシフトする。少なくともいくつかの実施形態において、分割セクションは、境界線がバッファとのみ交わり、いかなる命令とも交わらないように、境界線をシフトする。少なくともいくつかの実施形態において、動作S432、S433、S435、及びS436の反復が進むにつれて、分割セクションは、各境界線ごとに、データ依存グラフ内の複数のバッファのうちのバッファに交わるように初期境界線をシフトする。
【0038】
図5は、本発明の少なくとも1つの実施形態に係る、境界線を有するデータ依存グラフ540の一部である。データ依存グラフ540の一部は、境界線541、データバッファ542、及び畳み込み命令544を含む。境界線541は、データ依存グラフ540を通って、命令同士の間に、且つデータバッファを通らずに、引かれている。少なくともいくつかの実施形態において、境界線541は、例えば図4の動作S432において分割セクションによって引かれる初期境界線の1つの例である。
【0039】
図6は、本発明の少なくとも1つの実施形態に係る、シフトした境界線を有するデータ依存グラフ640の一部である。データ依存グラフ640の一部は、シフトした境界線641、データバッファ642、及び畳み込み命令644を含む。シフトした境界線641は、図5中に示されるように命令同士の間で且つデータバッファを通らない位置から、データバッファ642を通るようにシフトしている。少なくともいくつかの実施形態において、シフトした境界線641は、例えば図4の動作S433において分割セクションによってシフトされる境界線の1つの例である。
【0040】
S435において、分割セクション又はそのサブセクションは、交わったバッファを複製する。少なくともいくつかの実施形態において、分割セクションは、境界線の各側が交わったバッファのインスタンスを含むように、交わったバッファを複製することによって、データ依存グラフを分離する。少なくともいくつかの実施形態において、分割セクションは、同様にシーケンス内の交わったバッファを複製して、分離のためのシーケンスを用意する。少なくともいくつかの実施形態において、動作S432、S433、S435、及びS436の反復が進むにつれて、分割セクションは、複数のバッファのうちの各交わったバッファを複製する。
【0041】
S436において、分割セクション又はそのサブセクションは、ダミーロード命令及びダミー格納命令を追加する。少なくともいくつかの実施形態において、分割セクションは、境界線の早い方の側の複製されたバッファの各インスタンスへ、バッファの後に実行されるダミー格納命令を追加する。少なくともいくつかの実施形態において、分割セクションは、境界線の遅い方の側の複製されたバッファの各インスタンスへ、バッファの前に実行されるダミーロード命令を追加する。少なくともいくつかの実施形態において、分割セクションは、スケジューリングアルゴリズムが適切に実行されるようにダミーロード命令及びダミー格納命令を追加しなければならない。少なくともいくつかの実施形態において、分割セクションは、スケジューリングアルゴリズムがシーケンスパーティションと共に実行するように適合されているので、ダミーロード命令及びダミー格納命令を追加することを控える。少なくともいくつかの実施形態において、動作S432、S433、S435、及びS436の反復が進むにつれて、分割セクションは、各交わったバッファ及び各複製されたバッファへダミー命令を追加する。
【0042】
図7は、本発明の少なくとも1つの実施形態に係る、境界線でパーティション化されたデータ依存グラフの一部である。データ依存グラフの一部は、データ依存グラフパーティション740Aの一部、データ依存グラフパーティション740Bの一部、及び境界線741を含む。データ依存グラフパーティション740Aの一部は、複製されたデータバッファインスタンス742A、ダミー格納命令746、及び畳み込み命令744を含む。データ依存グラフパーティション740Bの一部は、複製されたデータバッファインスタンス742B及びダミーロード命令748を含む。データ依存グラフパーティション740Aの一部は、境界線741によってデータ依存グラフパーティション740Bの一部から分離されている。少なくともいくつかの実施形態において、図7中に示されるデータ依存グラフの分離に基づくシーケンスパーティションは、スケジュール最適化の準備ができている。
【0043】
図8は、本発明の少なくとも1つの実施形態に係る、結合済みスケジュール最適化の動作フローである。動作フローは、結合済みスケジュール最適化の方法を提供する。少なくともいくつかの実施形態において、方法は、装置、例えば以降で説明される図9中に示される装置の最適化セクションによって実行される。
【0044】
S850において、最適化セクション又はそのサブセクションは、シーケンスパーティションを結合する。少なくともいくつかの実施形態において、最適化セクションは、結合済みスケジュール、例えば、図1の動作S109によって作成される結合済みスケジュールのシーケンスパーティションを結合する。少なくともいくつかの実施形態において、最適化セクションは、複数のパーティション最適化反復、例えば図3の動作フローの反復を実行した後に、複数のシーケンスパーティションを結合して、結合済みシーケンスを作成する。
【0045】
S852において、最適化セクション又はそのサブセクションは、結合済み境において、結合済みシーケンスを変異させる。少なくともいくつかの実施形態において、最適化セクションは、結合済みシーケンスを変異させる。少なくともいくつかの実施形態において、最適化セクションは、結合済みスケジュールに基づくシーケンス分割によって複製されたバッファへ割り当てられた時間間隔からの閾値となる数の時間間隔内の時間間隔へ割り当てられた少なくとも1つの命令に影響するように、結合済みシーケンスを変異させる。少なくともいくつかの実施形態において、最適化セクションは、図3の動作S322と同様の動作を実行する。
【0046】
S854において、最適化セクション又はそのサブセクションは、結合済みシーケンスを再スケジューリングする。少なくともいくつかの実施形態において、最適化セクションは、結合済みシーケンス内の複数の命令のうちの命令及び複数のバッファのうちのバッファを時間の間隔へ割り当てて、結合済みスケジュールを再作成する。少なくともいくつかの実施形態において、最適化セクションは、図3の動作S320と同じ動作を、ただし変異した結合済みシーケンスを用いて実行する。
【0047】
S856において、最適化セクション又はそのサブセクションは、結合済みスケジュールが改善されているか否かを判定する。少なくともいくつかの実施形態において、最適化セクションは、S854の現在の反復において作成された結合済みスケジュールがS852の以前の反復において作成された結合済みスケジュールに対して改善されているか否かを判定する。少なくともいくつかの実施形態において、最適化セクションは、S854の第1の反復において作成された結合済みスケジュールが図1の動作S109によって作成された結合済みスケジュールに対して改善されているか否かを判定する。少なくともいくつかの実施形態において、最適化セクションは、複数の因子、例えば、全体の実行時間が低減したか否か、稼働率の程度が増したか否か、任意の計算ユニットの活動において何らかのギャップが存在するか否か、又はより多くの命令がスケジュールの始まりに向けて又は終わりに向けて実行されるか否かに基づいて、結合済みスケジュールが改善されているか否かを判定する。結合済みスケジュールが改善されていないと最適化セクションが判定する場合、動作フローはS857における以前のシーケンスの復元へ進む。結合済みスケジュールが改善されていると最適化セクションが判定する場合、動作フローはS859における終端条件判定へ進む。
【0048】
S857において、最適化セクション又はそのサブセクションは、以前のシーケンスを復元する。少なくともいくつかの実施形態において、最適化セクションは、以前の反復の結合済みスケジュールが現在の反復の結合済みスケジュールよりも最適であると判定したことに応答して、以前の反復のシーケンスを復元する。少なくともいくつかの実施形態において、最適化セクションは、S852において作成された変異したシーケンスを破棄する。少なくともいくつかの実施形態において、最適化セクションは、終端条件がS859において満たされていると最適化セクションが判定しない限り、現在の反復のシーケンスの代わりに以前の反復のシーケンスを用いて次の反復へ進む。
【0049】
S859において、最適化セクション又はそのサブセクションは、終端条件が満たされているか否かを判定する。少なくともいくつかの実施形態において、最適化セクションは、予め定められた数の反復が実行された後に、終端条件が満たされていると判定する。少なくともいくつかの実施形態において、最適化セクションは、稼働率の程度が閾値となる程度を超えていることに応答して、終端条件が満たされていると判定する。少なくともいくつかの実施形態において、最適化セクションは、全体の実行時間が閾値となる継続時間又は図1の動作S109によって作成された結合済みスケジュールの全体の実行時間の予め定められた割合よりも小さくなっていることに応答して、終端条件が満たされていると判定する。終端条件が未だ満たされていないと最適化セクションが判定する場合、動作フローはS852における結合済みシーケンスの変異へ戻る。終端条件が満たされていると最適化セクションが判定する場合、動作フローは終了する。
【0050】
図9は、本発明の少なくともいくつかの実施形態に係る、シーケンスパーティションベースのスケジュール最適化のためのハードウェア構成のブロック図である。
【0051】
例示的なハードウェア構成は、直接的に又はネットワーク967を経由して、入力デバイス968及び集積回路965と対話する装置960を含む。少なくともいくつかの実施形態において、装置960は、入力デバイス968から入力又は命令を受信するコンピュータ又は他のコンピューティングデバイスである。少なくともいくつかの実施形態において、装置960は、入力デバイス968と統合されている。少なくともいくつかの実施形態において、装置960は、シーケンスパーティションベースのスケジュール最適化のための動作を実行するコンピュータ可読命令を実行するコンピュータシステムである。
【0052】
装置960は、コントローラ962、ストレージユニット964、入力/出力インターフェース966、及び通信インターフェース969を含む。少なくともいくつかの実施形態において、コントローラ962は、プロセッサ又はプログラマブル回路に命令に従って動作を実行させる命令を実行するプロセッサ又はプログラマブル回路を含む。少なくともいくつかの実施形態において、コントローラ962は、アナログ又はデジタルプログラマブル回路、又はその任意の組み合わせを含む。少なくともいくつかの実施形態において、コントローラ962は、通信を経由して対話する物理的に分離したストレージ又は回路を含む。少なくともいくつかの実施形態において、ストレージユニット964は、命令の実行中のコントローラ962によるアクセスのために、実行可能及び実行不能データを格納することができる不揮発性コンピュータ可読媒体を含む。通信インターフェース969は、ネットワーク967からのデータを送信及び受信する。入力/出力インターフェース966は、様々な入力及び出力ユニット、例えば、入力デバイス968へ、パラレルポート、シリアルポート、キーボードポート、マウスポート、モニタポート、及び同様のものを介して接続して、命令を受け入れ、情報を提示する。いくつかの実施形態において、ストレージユニット964は装置960の外部にある。
【0053】
コントローラ962は、生成セクション970、分割セクション972、最適化セクション974、及び結合セクション976を含む。ストレージユニット964は、集積回路仕様980、変異ヒューリスティック982、及びスケジューリングアルゴリズム984を含む。
【0054】
生成セクション970は、データ依存グラフからシーケンス及びスケジューリングを生成するように構成されているコントローラ962の回路又は命令である。少なくともいくつかの実施形態において、生成セクション970は、命令及びバッファのデータ依存グラフからシーケンスを生成するように構成されている。少なくともいくつかの実施形態において、生成セクション970は、ストレージユニット964内の情報、例えば、集積回路仕様980及びスケジューリングアルゴリズム984を利用する。少なくともいくつかの実施形態において、生成セクション970は上記フローチャート中に説明されるように、さらなる機能を実行するためのサブセクションを含む。少なくともいくつかの実施形態において、そのようなサブセクションは、対応する機能と関連付けられた名前で称される。
【0055】
分割セクション972は、スケジューリングをパーティションシーケンスへ分割するように構成されているコントローラ962の回路又は命令である。少なくともいくつかの実施形態において、分割セクション972は、シーケンスをスケジュール及びデータ依存グラフに基づいて複数のシーケンスパーティションへと分割するように構成されており、各シーケンスパーティションは複数の命令の一部及び複数のバッファの一部を含む。少なくともいくつかの実施形態において、分割セクション972は、ストレージユニット964内に情報を記録する。少なくともいくつかの実施形態において、分割セクション972は上記フローチャート中に説明されるように、さらなる機能を実行するためのサブセクションを含む。少なくともいくつかの実施形態において、そのようなサブセクションは、対応する機能と関連付けられた名前で称される。
【0056】
最適化セクション974は、スケジューリングを最適化するように構成されているコントローラ962の回路又は命令である。少なくともいくつかの実施形態において、最適化セクション974は、複数の最適化反復を実行するように構成されている。少なくともいくつかの実施形態において、最適化セクション974は、ストレージユニット964からの情報、例えば、変異ヒューリスティック982及びスケジューリングアルゴリズム984を利用する。少なくともいくつかの実施形態において、最適化セクション974は上記フローチャート中に説明されるように、さらなる機能を実行するためのサブセクションを含む。少なくともいくつかの実施形態において、そのようなサブセクションは、対応する機能と関連付けられた名前で称される。
【0057】
結合セクション976は、スケジュール及びシーケンスを結合するように構成されているコントローラ962の回路又は命令である。少なくともいくつかの実施形態において、結合セクション976は、複数のシーケンスパーティションを結合して、結合済みスケジュールを作成するように構成されている。少なくともいくつかの実施形態において、結合セクション976は、ストレージユニット964へ情報を記録する。少なくともいくつかの実施形態において、結合セクション976は、上記フローチャート中に説明されるように、さらなる機能を実行するためのサブセクションを含む。少なくともいくつかの実施形態において、そのようなサブセクションは、対応する機能と関連付けられた名前で称される。
【0058】
少なくともいくつかの実施形態において、装置は、本明細書の動作を実行するために論理的な機能を処理することができる別のデバイスである。少なくともいくつかの実施形態において、コントローラ及びストレージユニットは、完全に別個のデバイスである必要はなく、いくつかの実施形態において、回路又は1つ又は複数のコンピュータ可読媒体を共有する。少なくともいくつかの実施形態において、ストレージユニットは、コントローラによってアクセスされるコンピュータ実行可能命令及びデータの両方を格納するハードドライブを含み、コントローラは、中央処理装置(CPU)及びRAMの組み合わせを含み、当該RAM内に、コンピュータ実行可能命令が本明細書の動作の実行の最中にCPUによる実行のために全体が又は一部がコピーされることができる。
【0059】
装置がコンピュータである少なくともいくつかの実施形態において、コンピュータ内にインストールされているプログラムは、コンピュータに本明細書で説明された実施形態の装置として機能させるか、又は本明細書で説明された実施形態の装置に関連付けられた動作を実行させることができる。少なくともいくつかの実施形態において、そのようなプログラムは、本明細書で説明されたフローチャート及びブロック図のブロックのいくつか又は全てに関連付けられた特定の動作をコンピュータに実行させるように、プロセッサによって実行可能である。
【0060】
少なくともいくつかの実施形態は、そのブロックが(1)動作が実行される処理の段階、又は(2)動作を実行することを担うコントローラのセクションを表すフローチャート及びブロック図を参照して説明されている。少なくともいくつかの実施形態において、特定の段階及びセクションは、専用回路、コンピュータ可読媒体の上に格納されているコンピュータ可読命令を供給されているプログラマブル回路、及び/又はコンピュータ可読媒体の上に格納されているコンピュータ可読命令を供給されているプロセッサによって実装される。少なくともいくつかの実施形態において、専用回路は、デジタル及び/又はアナログハードウェア回路を含み、集積回路(IC)及び/又はディスクリート回路を含む。少なくともいくつかの実施形態において、プログラマブル回路は、論理AND、OR、XOR、NAND、NOR及び他の論理動作、フリップフロップ、レジスタ、メモリ要素等を含む再構成可能ハードウェア回路、例えば、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブルロジックアレイ(PLA)等を含む。
【0061】
少なくともいくつかの実施形態において、コンピュータ可読記憶媒体は、命令実行デバイスによる使用のために命令を維持及び格納できる有形デバイスを含む。いくつかの実施形態において、コンピュータ可読記憶媒体は、例えば、限定されないが、電子ストレージデバイス、磁気ストレージデバイス、光学ストレージデバイス、電磁ストレージデバイス、半導体ストレージデバイス、又はこれらの任意の好適な組み合わせを含む。コンピュータ可読記憶媒体のより具体的な例の非網羅的リストは下記を含む:ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read-only memory)、消去可能プログラマブル読み取り専用メモリ(EPROM:erasable programmable read-only memory又はフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM:static random access memory)、ポータブルコンパクトディスク読み取り専用メモリ(CD-ROM:compact disc read-only memory)、デジタルバーサタイルディスク(DVD:digital versatile disk)、メモリスティック、フロッピディスク、命令が記録されているパンチカード又は溝の中の隆起構造等の機械的にエンコードされるデバイス、及びこれらの任意の好適な組み合わせ。本明細書で使用される場合、コンピュータ可読記憶媒体は、電波又は自由伝搬する他の電磁波、導波路又は他の伝送媒体を通って伝搬する電磁波(例えば、光ファイバケーブルを通過する光パルス)、又は、ワイヤを通って伝送される電気信号等の一時的な信号それ自体であるとしてみなされるべきではない。
【0062】
少なくともいくつかの実施形態において、本明細書で説明されたコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスへ、又はインターネット、ローカルエリアネットワーク、ワイドエリアネットワーク及び/又は無線ネットワーク等のネットワークを介して外部コンピュータ又は外部ストレージデバイスへ、ダウンロード可能である。少なくともいくつかの実施形態において、ネットワークは、銅伝送ケーブル、光伝送ケーブル、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ及び/又はエッジサーバを含む。少なくともいくつかの実施形態において、各コンピューティング/処理デバイス内のネットワークアダプタカード又はネットワークインターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に格納するためにコンピュータ可読プログラム命令を転送する。
【0063】
少なくともいくつかの実施形態において、上記で説明された動作を実行するコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、又は、オブジェクト指向プログラミング言語、例えば、Smalltalk(登録商標)、C++又は同様のもの、及び従来の手続きプログラミング言語、例えば、"C"プログラミング言語又は同様のプログラミング言語を含む、1つ又は複数のプログラミング言語の任意の組み合わせで書かれたソースコード又はオブジェクトコードのいずれかである。少なくともいくつかの実施形態において、コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全て実行されるか、スタンドアロンのソフトウェアパッケージとして部分的にユーザのコンピュータ上で実行されるか、部分的にユーザのコンピュータ上で且つ部分的にリモートコンピュータ上で実行されるか、又は、リモートコンピュータ又はサーバ上で全て実行される。少なくともいくつかの実施形態において、後者のシナリオにおいては、リモートコンピュータはユーザのコンピュータへ、ローカルエリアネットワーク(LAN)又はワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを経由して接続されるか、又は接続が(例えば、インターネットサービスプロバイダを使用してインターネットを経由して)外部コンピュータへ為される。少なくともいくつかの実施形態において、例えば、プログラマブル論理回路、フィールドプログラマブルゲートアレイ(FPGA)又はプログラマブルロジックアレイ(PLA)を含む電子回路は、本発明の態様を実行するため、電子回路を適合させるコンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行してよい。
【0064】
本発明の実施形態を説明したが、特許請求されるどの主題の技術的範囲も、上記で説明された実施形態に限定されない。当業者は、上記で説明された実施形態への様々な変更及び改善が可能であることを理解するであろう。当業者はまた、そのような変更又は改善が追加された実施形態は、本発明の技術的範囲内に含まれることを、特許請求の範囲の範囲から理解するであろう。
【0065】
特許請求の範囲、実施形態、及び図中において示した装置、システム、プログラム、及び方法によって実行される各処理の動作、手続き、段階、及びステージは、その順序が「先立って(prior to)」「前に(before)」又は同様の表現によって示されていない限り、又は、前の処理の出力をより後の処理で使用するのでない限り、任意の順序で実行されることができる。処理フローが請求項、実施形態、又は図の中で「第1の」又は「次の」のような表現を使用して説明されている場合であっても、そのような説明は、必ずしも当該処理が説明された順序で実行されなければならないことを意味するわけではない。
【0066】
少なくともいくつかの実施形態において、シーケンスパーティションベースのスケジュール最適化は、シーケンス及び当該シーケンスに基づくスケジュールを生成し、シーケンスをスケジュール及びデータ依存グラフに基づいて複数のシーケンスパーティションへと分割し、各シーケンスパーティションが複数の命令の一部及び複数のバッファの一部を含み、各シーケンスパーティションごとに、複数のパーティション最適化反復を実行し、複数のシーケンスパーティションを結合して結合済みスケジュールを作成することによって実行される。
【0067】
上記は、当業者が本開示の態様をより良く理解できるように複数の実施形態の特徴の概要を述べている。当業者は、本明細書で紹介された実施形態と同じ目的を実行する及び/又はそれと同じ利点を実現するために、他の処理及び構造を設計又は修正するための基盤として、この開示が容易に使用できることを理解するであろう。当業者はまた、そのような同等の構造が本開示の思想及び範囲から逸脱しないこと、及び本明細書の様々な変化、代替、及び変更が、本開示の趣旨及び範囲から逸脱せずに可能であることを認識するであろう。
図1
図2
図3
図4
図5
図6
図7
図8
図9
【外国語明細書】