JP4664923B2 - パイプライン変換を通じて自動的にネットワークアプリケーションを並列化する装置及び方法 - Google Patents

パイプライン変換を通じて自動的にネットワークアプリケーションを並列化する装置及び方法 Download PDF

Info

Publication number
JP4664923B2
JP4664923B2 JP2006539703A JP2006539703A JP4664923B2 JP 4664923 B2 JP4664923 B2 JP 4664923B2 JP 2006539703 A JP2006539703 A JP 2006539703A JP 2006539703 A JP2006539703 A JP 2006539703A JP 4664923 B2 JP4664923 B2 JP 4664923B2
Authority
JP
Japan
Prior art keywords
node
program
stage
control
pipeline
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.)
Expired - Fee Related
Application number
JP2006539703A
Other languages
English (en)
Other versions
JP2007511835A (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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of JP2007511835A publication Critical patent/JP2007511835A/ja
Application granted granted Critical
Publication of JP4664923B2 publication Critical patent/JP4664923B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/456Parallelism detection

Description

本発明の1以上の実施形態は、広くネットワークプロセッサアプリケーションの分野に関する。特に、本発明の1以上の実施形態は、パイプライン変換を通じてネットワークアプリケーションを自動的に並列化するための方法及び装置に関する。
ネットワークプロセッサ(NP)は、パケット処理を実行するよう特に設計されている。従来、ネットワークプロセッサは、高速通信ルータのコア要素のようなパケット処理を実行するために使用されている。高速でのネットワークプロセッシングの独特な課題に対処すべく、現在のNPは概して高度にパラレルなマルチプロセッサアーキテクチャを持つ。例えば、インテル(登録商標)インターネット・エクスチェンジ(商標)アーキテクチャ(IXA)NPファミリに属するInternet exchange processor (IXP)シリーズは、マイクロエンジンクラスタを用いてパケットを処理するNPを含む。マイクロエンジンクラスタは、パラレルに動作する複数のマイクロエンジン(パケット処理能力を持つプログラム可能なプロセッサ)を備える。
しかしながら、ネットワークプロセッサによって利用される高度にパラレルなマルチプロセッサアーキテクチャと対照的に、従来のネットワークアプリケーションは逐次動作を用いて安易にコーディングされる。概して、そのようなネットワークアプリケーションは、典型的には永久に動作する1つのパケット処理ユニット(パケット処理ステージ(PPS))を用いるようコーディングされる。したがって、1つの新たなパケットが到着すると、PPSは、パケットに一連のタスク(例えば、パケット受信、ルーティングテーブル検索、キューイング)を実行する結果として、それぞれのイタレーションが異なる1つのパケットを処理する無限ループ(すなわちPPSループ)として表現される。
したがって、ネットワークプロセッサのパラレルなアーキテクチャとネットワークアプリケーションの逐次動作との間に大きなギャップが存在する。この問題に対処するひとつの方法は、並列プログラミングのパラダイムを、従来のネットワークアプリケーションのコーディングに適合させることである。当業者に知られているように、並列プログラムは、アプリケーションを複数のサブタスクに分割し、異なるサブタスクの間の同期と通信を管理し、種々のサブタスクを1つのマルチプロセッサシステムにマッピングすることを伴う。残念ながら、そのような並列プログラミングパラダイムは伝統的でなく、多くの人にとって馴染みがない。
本発明のいくつかの実施形態が、限定を目的としてではなく実例を目的として、添付の図面の複数の図に示される。
本発明の一実施形態に係る、1つのシーケンシャルアプリケーションプログラムのパイプライン変換を実行する並列化コンパイラを実装するコンピュータシステムのブロック図である。
本発明の一実施形態に係る、1つのシーケンシャルネットワークアプリケーションプログラムのパイプライン変換を示す。 本発明の一実施形態に係る、1つのシーケンシャルネットワークアプリケーションプログラムのパイプライン変換を示す。
本発明の一実施形態に係る、1つのシーケンシャルパケット処理ステージから形成されたパイプライン化された複数のステージの間のライブ変数の伝達を示す。 本発明の一実施形態に係る、1つのシーケンシャルパケット処理ステージから形成されたパイプライン化された複数のステージの間のライブ変数の伝達を示す。 本発明の一実施形態に係る、1つのシーケンシャルパケット処理ステージから形成されたパイプライン化された複数のステージの間のライブ変数の伝達を示す。
本発明の一実施形態に係る、図3AのシーケンシャルPPSループの初期変換を示す。
本発明の一実施形態に係る、図3Aの1つのPPSループ本体から形成されるコントロールフローグラフ(CFG)を示す。
本発明の一実施形態に係る、図5のCFGのサマリグラフから形成される依存グラフを示す。
本発明の一実施形態に係る、図6の有向グラフのサマリグラフから形成されるコントロールフローモデルを示す。
本発明の一実施形態に係る、Dステージプロセッサパイプラインを提供すべく構成された1つのネットワークプロセッサを示すブロック図である。
本発明の一実施形態に係る、1つのシーケンシャルネットワークアプリケーションのパイプライン変換のための1つの方法を示すフローチャートである。
本発明の一実施形態に係る、フローネットワークモデルの構築のためのフローチャートを示すブロック図である。
本発明の一実施形態に係る、フローネットワークを構築するための1つの方法を示すフローチャートである。
本発明の一実施形態に係る、フローネットワークを構築するための1つの方法を示すフローチャートである。
本発明の一実施形態に係る、フローネットワークモデルからバランスのとれた1つの最小コストのカットを選択するための1つの方法を示すフローチャートである。
本発明の一実施形態に係る、イタレーティブなバランスのとれたプッシュリラベルアルゴリズムを用いてネットワークフローモデルのバランスのとれた複数の最小コストのカットを実行するための1つの方法を示すフローチャートである。
本発明の一実施形態に係る、1つのフローネットワークモデルの複数の最小カットをDパイプラインステージに変換するための1つの方法を示すフローチャートである。
本発明の一実施形態に係る、1つのフローネットワークモデルの複数の最小カットをDパイプラインステージに変換するための1つの方法を示すフローチャートである。
パイプライン変換を通じて1つのシーケンシャルネットワークアプリケーションを自動的に並列化するための方法及び装置が説明される。一実施形態において、その方法は、1つのDステージプロセッサパイプラインへの1つのネットワークプロセッサの設定を含む。設定されると、1つのシーケンシャルネットワークアプリケーションがDパイプラインステージに変換される。変換されると、Dパイプラインステージは、Dステージプロセッサパイプライン内でパラレルに実行される。一実施形態において、ネットワークアプリケーションの変換は、ネットワークアプリケーションを1つのフローネットワークモデルとしてモデリングし、フローネットワークモデルを、複数のD−1カットがDパイプラインステージをもたらすようDパイプラインステージにカッティングすることによって実行される。
以下の説明において、本発明の機能を説明するために特定の用語が用いられる。例えば、"ロジック"という用語は、1以上の機能を実行すべく構成されたハードウェア及び/又はソフトウェアを表す。例えば、"ハードウェア"の例は、1つの集積回路、1つの有限状態機械、又はロジックの組合せさえも含み、それらに限定又は制限されない。集積回路は、マイクロプロセッサ、特定用途向け集積回路、デジタルシグナルプロセッサ、マイクロコントローラ、又は同種のもののような、1つのプロセッサの形をとってよい。
"ソフトウェア"の一例は、1つのアプリケーション、1つのアプレット、1つのルーチン、又は一連の命令でさえある形の、実行可能なコードを含む。ソフトウェアは任意のタイプのコンピュータ、或いはプログラマブル電子回路、揮発性メモリ(例えば、ランダムアクセスメモリ等)及び/又は不揮発性メモリ(例えば、リードオンリーメモリ"ROM"、フラッシュメモリ)を含む半導体メモリデバイス、フレキシブルディスク、光ディスク(例えば、コンパクトディスク又はデジタルビデオディスク"DVD")、ハードディスク、テープ、又は同種のもののような機械可読メディアに記憶されてよい。
一実施形態において、本発明は、本発明の一実施形態に従うプロセス又はオペレーションをコンピュータ(又は他の複数の電子デバイス)が実行するようプログラムするために使用される記憶された複数の命令を持つ、機械又はコンピュータ可読メディアを含む製品として提供される。コンピュータ可読メディアは、フレキシブルディスク、光ディスク、コンパクトディスク、リードオンリーメモリ(CD−ROM)、光磁気ディスク、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、消去再書き込み可能 ROM(EPROM)、電気的消去再書き込み可能 ROM(EEPROM)、磁気又は光カード、フラッシュメモリ、又は同種のものを含むが、これらに限定されない。
図1は、本発明の一実施形態に係る、並列化コンパイラ200を実装するコンピュータシステムを示すブロック図である。示されるように、コンピュータシステム100は、メモリコントローラハブ(MCH)120に結合された1つのCPU110、メモリ140、及びグラフィクスコントローラ130を備える。本明細書で説明されるように、MCH120はノースブリッジと呼ばれ、一実施形態においてメモリコントローラと呼ばれる。さらに、コンピュータシステム100は、I/O(入出力)コントローラハブ(ICH)160を備える。本明細書で説明されるように、ICH160はサウスブリッジ又はI/Oコントローラと呼ばれる。サウスブリッジ、すなわちICH160は、ローカルI/O150及びハードディスクドライブデバイス(HDD)190に結合される。
示される本実施形態において、ICH160は、例えばPCI又はPCIエクスプレス、PCI−X、第3世代I/O(3GIO)、又は同種の相互接続プロトコルを含むペリフェラルコンポーネントインターコネクト(PCI)デバイス170のような、複数のI/Oデバイスを結合するI/Oバス172に結合される。MCH120及びICH160は一括して、チップセット180と呼ばれる。本明細書で説明されるように、"チップセット"という用語は、当業者が望ましいシステムの機能を実行すべくCPU110に結合された様々なデバイスを一括して表現するためによく知られた方法で用いられる。一実施形態において、メインメモリ140は、これらに限定されないが、ランダムアクセスメモリ(RAM)、シンクロナスRAM(SRAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、ダブルデータレート(DDR)SDRAM(DDR SDRAM)、ラムバスDRAM(RDRAM)、ダイレクトRDRAM(DRDRAM)を含む揮発性メモリである。
従来のコンピュータシステムとは異なり、コンピュータシステム100は、1つのシーケンシャルネットワークアプリケーションを1つのDパイプラインステージのパラレルネットワークアプリケーションに変換するための並列化コンパイラ200を含む。したがって、コンパイラ200は、並列アーキテクチャと、従来のネットワークアプリケーションをコーディングするために使用されたシーケンシャルプログラミングモデルの間のギャップを埋め得る。この問題に対処するための1つの方法は、ネットワークアプリケーションを、パラレルプログラミングパラダイムを用いてコーディングすることである。残念ながら、そのようなパラレルプログラミングパラダイムは概して伝統的でなく、ネットワークプログラマにとって馴染みがない。本発明の一実施形態に従って、並列化コンパイラ200は、図2A及び2Bに示されるように、1つの逐次ネットワークアプリケーションを1つの並列ネットワークアプリケーションに自動的に変換する。
図2Aを参照すると、シーケンシャルネットワークアプリケーションンの1つのシーケンシャルパケット処理ステージ(PPS)280が示される。図2Bに図示されるように、PPS280は、例えば図1のネットワークプロセッサ500の1つのDステージのプロセッサパイプライン内での実行のための3つのパイプラインステージのパラレルなネットワークアプリケーションパイプライン300に変換される。一実施形態において、1つのネットワークアプリケーションのシーケンシャルPPSは、例えば図3A−3Cに関連して示されるようなパイプライン変換を通じて、1つのDパイプラインステージのパラレルなネットワークアプリケーションに変換される。
Figure 0004664923
本明細書で説明されるように、"カット"という用語は、PPSループ本体を2つの部分に分割するコントロールフローポイントの組を意味する。一括して、1つのPPSループ本体に対して実行された1以上のカットは、複数のPPSパイプラインステージを形成する。一実施形態において、PPSループ本体がDステージに分割された場合、複数のD−1カットがPPSループ本体290から選択される。一実施形態において、複数のカットは重複していない。パラレルなDパイプラインステージへのネットワークアプリケーションの変換の一実施形態において、ネットワークアプリケーションは、ネットワークアプリケーションの1つの初期の変換で始まる。
一実施形態において、ネットワークアプリケーションプログラムは、静的単一代入(SSA)形式に変換される。典型的には、シーケンシャルPPS290(図3A)は、図4に示されるように1つのSSAコードシーケンス400に変換される。変換されると、図3AのPPSループ290のPPS本体について、1つのコントロールフローグラフが図4のSSAコードシーケンス400から形成される。一実施形態において、図3AのPPSループ本体は、図5に示されるように、1つのコントロールフローグラフ(CFG)としてモデル化される。本明細書で説明されるように、CFGは、それぞれの節点が1つの基本ブロックを表す、プログラムのコントロールのフローを表すグラフであり、それぞれのエッジが、基本ブロック間のコントロールのポテンシャルフローを表す。CFGは固有のソースノード(エントリ)を持つ。
典型的には、コントロールフローグラフ内のそれぞれのノードは、全てのカットが適用されると1つのパイプラインステージ内にあることが要求される。一実施形態において、図5のCFG420の複数の強連結構成要素(SSC)ノードが特定される。1つのSSCは、S内のいずれのノードがS内の他のいずれのノードから到達可能であり、Sがより大きいそのようないずれのセットのサブセットでないような、有向グラフの複数のノードのサブセットSである。一旦特定されると、CFG420のサマリが形成される。一実施形態において、サマリグラフ内での複数のSSCノードの識別は、後のステージからの前のステージへのコントロール依存を除くために用いられる。したがって、一実施形態において、パイプライン変換は、本明細書で説明されたように、場合によってはループである、CFG4240のいずれのSSCノードを分割しない。
図6に示されるように、図5のCFG420のサマリグラフから依存グラフが形成される。一実施形態において、依存グラフ(DG)460は、前のステージから後のステージへのデータ依存を除くために使用される。一実施形態において、DG460は、非ループキャリーデータ及びコントロール依存に加えて、PPSループキャリーフロー依存を示す。したがって、PPSループキャリーフロー依存のソース及びシンクは、通例DG460の同じSSCノードの中にある。有向グラフ460から有向グラフのサマリが形成され、その中に複数のSSCノードも特定する。したがって、依存グラフ460についての複数のSSCノードは、パイプライン変換が、1以上の隣り合うカット上にSSC全体を配置するカットの考察に限られることを保証する。
図7に関連して示されるように、一実施形態において、1つのコントロールフローモデル480は、図6の有向グラフ460の1つのサマリグラフから形成される。フローネットワークモデルは、1つの固有なソースノード及び1つの固有なシンクノード、並びに複数の命令を含む複数のプログラムノードを有する。固有なソース及びシンクノード並びに複数の命令を含むプログラムノードに加えて、変数ノード及びコントロールノードが、ライブセット内に含まれ得るそれぞれのオブジェクトについてフローネットワーク内に導入される。SSA変換(図4)の後、全ての変数はただ1つの定義ポイントを持ち、したがってただ1つの定義エッジを持つ。これはコントロールノードの場合も同様である。
したがって、定義エッジに関連する重み(容量)(複数の変数についてのVCost及び複数のコントロールオブジェクトについてのCCost)は、エッジがカットである場合に関連する変数又はコントロールオブジェクトを伝達するコストを適正にモデリングする。その上、そのようなエッジをカットすることがライブセットデータのいずれの伝達も招かないので、ソースから流出してシンクに流入するエッジの重みはゼロに設定される。他のエッジの全ては、それらがカッティングを受けないよう無限量の重みを持つ。図7のフローネットワークモデル480から、バランスのとれたコードサイズをもたらす複数のカットが選択され得る。
一実施形態において、選択された複数のカットは、1以上の以下の規則に従うことが通例要求される。選択された複数のカットは、後のステージから前のステージへのいずれのデータ又はコントロール依存を排除する。さらに、一実施形態は、隣接するステージの間の境界に存続するデータの最小化を要求する。本明細書で説明されるように、隣接するステージの境界に存続するデータは、"ライブセットデータ"と呼ばれる。さらなる実施形態において、複数のライブカットの選択は、アプリケーションプログラムステージの間でバランスの取れたコードサイズを提供するよう要求される。一実施形態において、複数のカットの選択は、バランスの取れた最小コストカットを提供するよう要求される。一実施形態において、繰り返しのバランスの取れたプッシュリラベルアルゴリズムの発見的方法が、図7のネットワークモデル内のバランスの取れた、最小コストの複数のカットを選択すべく利用される。
図8は、本発明の一実施形態に係る、Dステージプロセッサパイプラインを提供すべく構成されたネットワークプロセッサ(NP)100を示すブロック図である。典型的には、2以上のプロセッサが、それぞれのステージがPPSループの一部を持つ1つのパイプラインとして組織化される。したがって、プロセッサ当たりのリソース(例えば、キャッシュ)はより大量に利用され得る。それぞれのパケットの処理をパイプライン化することによって、パケット処理についての厳しいパフォーマンス費用が、全てのパイプラインステージにわたって分散され得る。したがって、ネットワークアプリケーションのスループットが向上される。前のステージから後のステージからの依存を除くことは、元のPPSループのそれぞれのイタレーションの間での複雑な同期を回避する。バランスの取れた最小コストカットを選択することによって、ステージ間の通信が低減される。本発明の実施形態を実装するための手続き的な方法が、以下に説明される。
オペレーション
図9は、本発明の一実施形態に係る、シーケンシャルネットワークアプリケーションのようなシーケンシャルアプリケーションプログラムの600のパイプライン変換についての方法を示すフローチャートである。プロセスブロック602において、1つのシーケンシャルネットワークアプリケーションについて1つのフローネットワークモデルが構築される。構築されると、プロセスブロック660において、フローネットワークモデルが、予備的な複数の(D)パイプラインステージに分割される。一実施形態において、フローネットワークモデルは、例えば図8のNP500のDステージのプロセッサパイプライン内での実行のために、Dパイプラインステージに分割される。一実施形態において、フローネットワークモデルは、図7のフローネットワークモデル480によって示されるように形成される。プロセスブロック700において、Dの予備パイプラインステージは、図2Bのアプリケーション300のような、パラレルネットワークアプリケーションのDパイプラインステージを形成すべく、それらの間のコントロールフロー及び変数伝達を実行するよう修正される。
図10は、本発明の一実施形態に係る、図9のプロセスブロック602のフローネットワークモデルを構築するための方法604を示す一フローチャートである。プロセスブロック606において、例えば図4に図示されたように、シーケンシャルアプリケーションプログラムは静的単一代入(SSA)形式に変換される。プロセスブロック608において、例えば図5に関連して示されたように、アプリケーションプログラムのループ本体から1つのコントロールフローグラフ(CFG)が構築される。プロセスブロック512において、例えば図7に関連して示されたように、1つの依存グラフ(DG)が、プロセスブロック610で形成されたCFGのサマリグラフ及びCFGの特定された複数の強連結構成要素(SSC)に基づいて、構築される。プロセスブロック616において、フローノードモデルが、プロセスブロック614で形成されたDGのサマリグラフ及びDGの特定された複数のSSCノードに従って、構築される。一実施形態において、図7に関連して示されたようなフローネットワークモデルが、図3Aのシーケンシャルアプリケーションプログラム290から生成される。
図11は、本発明の一実施形態に係る、図10のプロセスブロック616のフローネットワークモデルを構築するための方法618を示すフローチャートである。プロセスブロック620において、フローネットワークモデルは、固有な1つのソース及び固有な1つのシンクノードが割り当てられる。加えられると、プロセスブロック622において、DGのサマリグラフ内で特定されたそれぞれのSSCノードについて1つのプログラムノードがフローネットワークモデルに加えられる。複数のプログラムノードが加えられると、プロセスブロック624において、複数のプログラムノードによって定義されて使用されるアプリケーションプログラムのそれぞれの変数について1つの変数ノードがフローネットワークに加えられる。
プロセスブロック626において、DGのサマリグラフ内でコントロール依存のソースであると特定されたそれぞれのSSCノードについて1つのコントロールノードがフローネットワークに加えられる。プロセスブロック628において、対応する複数のプログラムノードを対応する複数の変数ノードに接続すべく、複数のエッジが生成される。プロセスブロック630において、対応する複数のプログラムノードを対応する複数のコントロールノードに接続すべく、複数のエッジが生成される。一実施形態において、それぞれの生成されたエッジに1つの重みが割り当てられる。プロセスブロック632において、複数のプログラムノードとソースノード及びシンクノードのうちの1つとの間に複数のエッジが生成される。一実施形態において、1つのフローネットワークモデルは、図12に示されるように、方法636を示す一フローチャートに従って形成される。
フローネットワークモデルが形成されると、一実施形態において、複数の定義エッジに関連する重み(又は容量)(複数の変数についてのVCost及び複数のコントロールオブジェクトについてのCCost)は、フローネットワークモデル内の対応するエッジがカットである場合に、関連する変数又はコントロールオブジェクトを伝達するコストを適正にモデリングする。このように、一実施形態において、フローネットワークモデルが形成されると、フローネットワークモデルがD(パイプラインの段数)のステージに分割される。したがって、この変換は、D−1の連続する複数のカットを、それぞれのカットがバランスの取れた最小コストのカットであるように、例えばネットワークアプリケーションプログラムのパケットプロセッシングステージ(PPS)に適用する。
図13は、本発明の一実施形態に係る、図9のプロセスブロック660のフローネットワークモデルのカッティングを実行するための方法661を示す一フローチャートである。プロセスブロック662において、それぞれのプログラムノード(W(N))の重みは、対応するノード内に含まれる命令の数に設定される。プロセスブロック664において、フローネットワークモデル内の非プログラムノードNのそれぞれに0の重みが設定される。プロセスブロック665において、フローネットワークモデル内のそれぞれのプログラムノードNについての重み(W(N))の合計が、値(T)内に記憶される。プロセスブロック668において、変数iは値1に設定され、変数dは値D(パイプラインの段数)に設定される。プロセスブロック670において、変数iが変数d、すなわちパイプライン段数より小さいか否かが判断される。したがって、プロセスブロック672において、以下のように、バランスの取れた最小コストカットアルゴリズムが、フローネットワークモデル内の1つのカットを選択すべく使用される。
Figure 0004664923
一実施形態において、dはバランスの程度であり、eは、1から0の範囲の予め定められた定数である、バランス自由度である。バランス自由度は、カットのバランスと重みとの間のトレードオフを反映する。バランス自由度が0に近い場合には、このアルゴリズムは、より小さく重み付けされたカットではなくよりバランスのとれたカットを検索する。代わりに、バランス自由度が1に近い場合には、アルゴリズムは、より小さくバランスのとれたカットではなくより重み付けされたカットを検索し、重みの最小化がより重要であるとみなされる。一実施形態において、バランス自由度の最適な値は、この発明のオペレーションを通じて容易に決定され得る。与えられた上の式において、カットのコストは最小化され、複数のアップストリームノードがパイプラインステージを形成する。プロセスブロック698において、変数i及び変数d並びに変数Tが更新され、プロセスブロック672がバランスの取れた最小コストカットの選択を可能にすべく繰り返される。
一実施形態において、繰り返しのバランスの取れたプッシュリラベルアルゴリズムの発見的方法が、フローネットワークモデル内のバランスの取れた最小コストの複数のカットを選択すべく使用される。一実施形態において、そのアルゴリズムは、Proc. 18th ACM STOC (1986)のページ136-146の、A.V. Goldberg and R.E. Tarjanによる"A New Approach To The Maximum Flow Problem"に記載された繰り返しのバランスの取れたプッシュリラベルアルゴリズムから作られる。したがって、図14は、 Proc. IEEE Int'l Conf. Computer-Aided Design (1994)のページ50-55の、H. Yang and D.F. Wongによる" Efficient Flow Based Min-Cut Balanced Partitioning"に説明されたような、プロセスブロック672の最小コストカットを選択するための方法674を示す一フローチャートである。
図15は、本発明の一実施形態に係る、パラレルアプリケーションプログラムのDパイプラインステージへの予備のパイプラインステージの変換の方法702のためのフローチャートである。プロセスブロック704において、予備のパイプラインステージが選択される。選択されると、プロセスブロック706において、選択されたステージに対応する1つのPPSループについての1つのコントロールフローグラフが選択される。プロセスブロック708において、選択された予備のステージ内に含まれない複数の命令は、選択されたコントロールフローグラフから削除される。プロセスブロック710において、コントロールフローグラフは、前のステージから選択された予備のステージに伝達された変数及び複数のコントロールオブジェクトに従って変換される。プロセスブロック712において、PPSループ本体は、1つのパイプラインステージを形成すべく、変換されたコントロールフローグラフから再構築される。
したがって、Dの予備のパイプラインステージのそれぞれについてプロセスブロック704−712を繰り返すことによって、1つのシーケンシャルなネットワークアプリケーションは、1つのパラレルなネットワークアプリケーションのDパイプラインステージに変換される。1つの代替の実施形態において、予備のパイプラインステージの変換は、図16に図示されたフローチャートによって示される方法720に従って実行される。一実施形態において、コントロール依存は、サマライズされたCFGから構築される。一方で、サマライズされたCFG内の条件節は、複数の基本ブロックを含む1つのループであり得る。プロセスブロック730において、当該ループの後続ブロックのそれぞれの中の対応するコントロールオブジェクトに異なる値が割り当てられる。さらに、プロセスブロック726において、当該条件の再構築は、プロセスブロック726に示されるように、全ての後続のブロックに分岐することによってループを置き換える。
1つの代替の実施形態において、この発見的方法の効果的な実装は、プッシュリラベルアルゴリズムをイタレーション毎に最初から実行する必要がない。典型的には、プッシュリラベルアルゴリズムは、以下のようにインクリメンタルに実装され得る。すなわち、(a)単純なプッシュリラベルアルゴリズムを用いてフローネットワークについて最初の最小カットを発見する、(b)ノードがソース又はシンクにまとめられた後に、以下の初期状態でプッシュリラベルアルゴリズムを用いて、更新された最小カットを発見する。(i)ソースから流出する全てのエッジのプリフローをそれらの容量にセットして、他の複数のエッジのプリフローを変更しないまま、それに応じて超過を更新し、(ii)ソースのラベルを新たなノード数にセットし、(iii)複数のノードがソースにまとめられた場合、他のノードのラベルを変更せず、そうでない場合には、複数のノードをゼロにセットする。
代替の実施形態
シーケンシャルなネットワークアプリケーションをDパイプラインステージの、パラレルなネットワークアプリケーションに変換することを提供する並列化コンパイラの一実装のいくつかの態様が説明された。一方で、並列化コンパイラの種々の実装は、上記の機能を補完、追加、及び/又は置換をする多くの機能を提供する。異なる実施形態の実装において、複数の機能は、マルチプロセッサの一部又はネットワークプロセッサの一部として実装され得る。また、前述の記載は、説明を目的として、本発明の実施形態の包括的な理解を提供すべく具体的な用語を使用した。一方で、その具体的な詳細がこの発明の実施形態を実施するために必要ではないことは当業者に明らかだろう。
さらに、本明細書に記載された一実施形態は、フローネットワーク分析を用いるDパイプラインステージの選択に向けられているが、他のグラフ理論経験則を用いてDパイプライン段の選択が実行され得ることが当業者に理解されるだろう。実際、データフロー分析のような経験則、又はネットワークアプリケーションのモデルを分割するための他の類似のグラフ理論経験則は、添付の請求項によって定められるように、Dパイプラインステージの選択のための実施形態の範囲に含まれる。上述の実施形態は、本発明の実施形態の原理及びその実際の用途を適切に説明するために選択されて説明された。これらの実施形態は、それらによって、考えられる特定用途に適するような様々な変形とともに本発明及び種々の実施形態を適切に利用することを当業者に可能にすることを目的として、選択された。
本発明の実施形態の多くの特徴及び利点が前述の説明において記載されたが、本発明の種々の実施形態の構成及び機能の詳細とともに、本開示は一例に過ぎないことが理解されるべきである。いくつかのケースにおいて、あるサブアッセンブリが一つのそのような実施形態とともに単に詳細に説明された。しかしながら、そのようなサブアッセンブリが本発明の他の実施形態において使用され得ることが理解及び意図される。本発明の実施形態の原理の範囲内で、添付の請求項が表す、用語の広い一般的な意義によって示される限り、変形が詳細について、特に構成要素の構成及び処理についてなされ得る。
開示された典型的な実施形態及びベストモードにより、続く請求項によって定められる発明の実施形態の範囲内でありつつ開示された実施形態に変更及び変形がなされ得る。

Claims (28)

  1. 1以上のプロセッサのプロセッサパイプラインを設定する段階と、
    1つのシーケンシャルアプリケーションプログラムをD段のパイプラインステージプログラムに変換する段階と、
    前記D段のパイプラインステージプログラムを、前記Dのプロセッサパイプライン内でパラレルに実行する段階と
    を備え、
    前記シーケンシャルアプリケーションプログラムを変換する段階は、
    前記シーケンシャルアプリケーションプログラムについて1つのフローネットワークモデルを構築する段階と、
    前記フローネットワークモデルから複数のパイプラインステージを選択する段階と、
    コントロールフローと変数とをパイプラインステージ間で伝達できる前記D段のパイプラインステージプログラムを形成すべく前記複数のパイプラインステージを変更する段階と
    を有し、
    前記フローネットワークモデルを構築する段階は、
    前記アプリケーションプログラムを1つの静的単一代入形式プログラムに変換する段階と、
    前記アプリケーションプログラムの1つのループ本体について1つのコントロールフローグラフを構築する段階と、
    前記コントロールフローグラフ及び前記コントロールフローグラフから特定された予め定められた強連結構成要素(SSC)に基づいて1つの依存グラフを構築する段階と、
    前記依存グラフ及び特定された前記依存グラフの複数のSSCノードに従って前記フローネットワークモデルを形成する段階と
    前記フローネットワークモデルを形成する段階は、
    1つの固有なソースノード及び1つの固有なシンクノードを前記フローネットワークモデルに割り当てる段階と、
    前記依存グラフにおいて特定されたそれぞれのSSCノードについて1つのプログラムノードを前記フローネットワークモデルに加える段階と、
    複数のプログラムノードによって定義されて使用されるそれぞれの変数について1つの変数ノードを前記フローネットワークモデルに加える段階と、
    前記依存グラフにおいてコントロール依存の1つのソースとして特定されたそれぞれのSSCノードについて1つのコントロールノードCを前記フローネットワークモデルに加える段階と、
    対応する複数のプログラムノードを対応する複数の変数ノードに連結する1つの関連づけられた重みを持つ複数のエッジを生成する段階と、
    対応する複数のプログラムノードを対応する複数のコントロールノードに連結する1つの関連づけられた重みを持つ複数のエッジを生成する段階と、
    前記複数のプログラムノードと前記ソースノード及び前記シンクノードのうちの1つとの間に複数のエッジを生成する段階と
    を含む方法。
  2. 対応する複数のプログラムノードを対応する複数の変数ノードに連結する1つの関連づけられた重みを持つ複数のエッジを生成する段階は、
    (i)1つの変数ノードVを定める1つのプログラムノードNを選択する段階と、
    (ii)前記フローネットワークモデルに、1つの重みVCostを持つノードNからノードVへの定義エッジを加える段階と、
    (iii)1つの変数ノードVを定義するそれぞれのプログラムノードNについて(i)−(ii)を繰り返す段階と、
    (iv)1つの変数ノードWを使用する1つのプログラムノードMを選択する段階と、
    (v)前記フローネットワークモデルに、1つの割り当てられた無限量の重みを持つ前記ノードWから前記ノードMへの1つのエッジを加える段階と、
    (vi)1つの変数ノードWを使用するそれぞれのプログラムノードMについて(iv)−(v)を繰り返す段階と
    をさらに持つ請求項に記載の方法。
  3. 対応する複数のプログラムノードを対応する複数のコントロールノードに連結する1つの関連づけられた重みを持つ複数のエッジを生成する段階は、
    (i)1つの関連づけられたコントロールノードCを持つ1つのプログラムノードNを選択する段階と、
    (ii)前記選択されたノードNから前記関連づけられたコントロールノードCへの1つの定義エッジを加える段階と、
    (iii)1つの重みCCostを前記エッジに関連づける段階と、
    (iv)1つの関連づけられたコントロールノードを持つそれぞれのプログラムノードについて(i)−(iii)を繰り返す段階と、
    (v)他のプログラムノードMに1つのコントロール依存を持つ1つのプログラムノードNを選択する段階と、
    (vi)Mを前記コントロールノードCに関連づける段階と、
    (vii)前記関連づけられたコントロールノードCから前記選択されたプログラムノードNへの1つのエッジを加える段階と、
    (viii)前記エッジに無限量の重みを割り当てる段階と、
    (ix)他のプログラムノードMに1つのコントロール依存を持つそれぞれのノードNについて(v)−(viii)を繰り返す段階と
    を持つ請求項に記載の方法。
  4. 前記複数のプログラムノードと前記ソースノード及び前記シンクノードのうちの1つとの間に複数のエッジを生成する段階は、
    (i)前記フローネットワークモデルにおいて先行ノードを持たない1つのプログラムノードを選択する段階と、
    (ii)前記ソースノードから前記選択されたプログラムノードへの1つのエッジを加える段階と、
    (iii)ゼロの重みを前記エッジに割り当てる段階と、
    (iv)先行ノードを持たないそれぞれのプログラムノードについて(i)−(iii)を繰り返す段階と、
    (v)前記フローネットワークにおいて後続ノードを持たない1つのプログラムノードを選択する段階と、
    (vi)前記選択されたプログラムノードから前記シンクノードへの1つのエッジを加える段階と、
    (vii)ゼロの重みを前記加えられたエッジに割り当てる段階と、
    (viii)前記フローネットワークモデルにおいて後続ノードを持たないそれぞれのプログラムノードについて(v)−(vii)を繰り返す段階と
    を持つ請求項1から請求項3のいずれか1つに記載の方法。
  5. 前記複数パイプラインステージを選択する段階は、
    それぞれのカットがバランスの取れた最小コストカットとなるよう、前記フローネットワークモデルをD−1の連続するカットにカットする段階
    を含む請求項1から請求項4のいずれか1つに記載の方法。
  6. カットする段階は、1つの繰り返しのバランスの取れたプッシュリラベルアルゴリズムを用いて実行される
    請求項に記載の方法。
  7. 前記複数パイプラインステージを変更する段階は、
    1つパイプラインステージを選択する段階と、
    選択されたパイプラインステージに対応するパケットプロセッシングループ(PPSループ)について生成されたコントロールフローグラフを選択する段階と、
    選択されたコントロールグラフに含まれる命令から、選択されたパイプラインステージに含まれない命令を削除する段階と、
    前のパイプラインステージから、前記選択されたパイプラインステージに伝達された変数およびコントロールオブジェクトに従って前記選択されたコントロールグラフを変換する段階と、
    前記選択されたパイプラインステージを実行すべく、変換されたコントロールグラフからPPSループを再構築する段階と、
    それぞれパイプラインステージについて、前記パイプラインステージを選択する段階、前記コントロールフローグラフを選択する段階、前記削除する段階、前記変換する段階、および前記再構築する段階を繰り返して、1つのパラレルネットワークアプリケーションプログラムの前記D段のパイプラインステージプログラムを形成する段階と
    を含む請求項1から請求項6のいずれか1つに記載の方法。
  8. コンピュータに実行させるためのプログラムであって、
    前記コンピュータに、
    以上のプロセッサをDのプロセッサパイプラインを設定する段階と、
    1つのシーケンシャルアプリケーションプログラムをD段のパイプラインステージプログラムに変換する段階と、
    前記D段のパイプラインステージプログラムを、前記Dのプロセッサパイプライン内でパラレルに実行する段階と
    実行させ、
    前記シーケンシャルアプリケーションプログラムを変換する段階は、
    前記シーケンシャルアプリケーションプログラムについて1つのフローネットワークモデルを構築する段階と、
    前記フローネットワークモデルから複数のパイプラインステージを選択する段階と、
    コントロールフローおよび変数をパイプラインステージ間で伝達できる前記D段のパイプラインステージプログラムを形成すべく前記複数のパイプラインステージを変更する段階と
    を有し、
    前記フローネットワークモデルを構築する段階は、
    前記アプリケーションプログラムを1つの静的単一代入形式プログラムに変換する段階と、
    前記アプリケーションプログラムの1つのループ本体について1つのコントロールフローグラフを構築する段階と、
    前記コントロールフローグラフ及び前記コントロールフローグラフの特定された強連結構成要素(SSC)に基づいて1つの依存グラフを構築する段階と、
    前記依存グラフ及び特定された前記依存グラフの複数のSSCノードに従って前記フローネットワークモデルを構築する段階と
    を含み、
    前記フローネットワークモデルを構築する段階は、
    1つの固有なソースノード及び1つの固有なシンクノードを前記フローネットワークモデルに割り当てる段階と、
    前記依存グラフにおいて特定されたそれぞれのSSCノードについて1つのプログラムノードを前記フローネットワークモデルに加える段階と、
    複数のプログラムノードによって定義されて使用されるそれぞれの変数について1つの変数ノードを前記フローネットワークモデルに加える段階と、
    前記依存グラフにおいてコントロール依存の1つのソースとして特定されたそれぞれのSSCノードについて1つのコントロールノードCを前記フローネットワークモデルに加える段階と、
    対応する複数のプログラムノードを対応する複数の変数ノードに連結する1つの関連づけられた重みを持つ複数のエッジを生成する段階と、
    対応する複数のプログラムノードを対応する複数のコントロールノードに連結する1つの関連づけられた重みを持つ複数のエッジを生成する段階と、
    前記複数のプログラムノードと前記ソースノード及び前記シンクノードのうちの1つとの間に複数のエッジを生成する段階と
    を含むプログラム
  9. 対応する複数のプログラムノードを対応する複数の変数ノードに連結する1つの関連づけられた重みを持つ複数のエッジを生成する段階は、
    (i)1つの変数ノードVを定める1つのプログラムノードNを選択する段階と、
    (ii)前記フローネットワークモデルに、1つの重みVCostを持つノードNからノードVへの定義エッジを加える段階と、
    (iii)1つの変数ノードVを定義するそれぞれのプログラムノードNについて(i)−(ii)を繰り返す段階と、
    (iv)1つの変数ノードWを使用する1つのプログラムノードMを選択する段階と、
    (v)前記フローネットワークモデルに、1つの割り当てられた無限量の重みを持つ前記ノードWから前記ノードMへの1つのエッジを加える段階と、
    (vi)1つの変数ノードWを使用するそれぞれのプログラムノードMについて(iv)−(v)を繰り返す段階と
    をさらに持つ請求項に記載のプログラム
  10. 対応する複数のプログラムノードを対応する複数のコントロールノードに連結する1つの関連づけられた重みを持つ複数のエッジを生成する段階は、
    (i)1つの関連づけられたコントロールノードCを持つ1つのプログラムノードNを選択する段階と、
    (ii)前記選択されたノードNから前記関連づけられたコントロールノードCへの1つの定義エッジを加える段階と、
    (iii)1つの重みCCostを前記エッジに関連づける段階と、
    (iv)1つの関連づけられたコントロールノードを持つそれぞれのプログラムノードについて(i)−(iii)を繰り返す段階と、
    (v)他のプログラムノードMに1つのコントロール依存を持つ1つのプログラムノードNを選択する段階と、
    (vi)Mを前記コントロールノードCに関連づける段階と、
    (vii)前記関連づけられたコントロールノードCから前記選択されたプログラムノードNへの1つのエッジを加える段階と、
    (viii)前記エッジに無限量の重みを割り当てる段階と、
    (ix)他のプログラムノードMに1つのコントロール依存を持つそれぞれのノードNについて(v)−(viii)を繰り返す段階と
    を持つ請求項に記載のプログラム
  11. 前記複数のプログラムノードと前記ソースノード及び前記シンクノードのうちの1つとの間に複数のエッジを生成する段階は、
    (i)前記フローネットワークモデルにおいて先行ノードを持たない1つのプログラムノードを選択する段階と、
    (ii)前記ソースノードから前記選択されたプログラムノードへの1つのエッジを加える段階と、
    (iii)ゼロの重みを前記エッジに割り当てる段階と、
    (iv)先行ノードを持たないそれぞれのプログラムノードについて(i)−(iii)を繰り返す段階と、
    (v)前記フローネットワークにおいて後続ノードを持たない1つのプログラムノードを選択する段階と、
    (vi)前記選択されたプログラムノードから前記シンクノードへの1つのエッジを加える段階と、
    (vii)ゼロの重みを前記加えられたエッジに割り当てる段階と、
    (viii)前記フローネットワークモデルにおいて後続ノードを持たないそれぞれのプログラムノードについて(v)−(vii)を繰り返す段階と
    を持つ請求項8から請求項10のいずれか1つに記載のプログラム
  12. 前記複数パイプラインステージを選択する段階は、
    それぞれのカットがバランスの取れた最小コストカットとなるよう、前記フローネットワークモデルをD−1の連続するカットにカットする段階
    を含む請求項8から請求項10のいずれか1つに記載のプログラム
  13. カットする段階は、1つの繰り返しのバランスの取れたプッシュリラベルアルゴリズムを用いて実行される
    請求項12に記載のプログラム
  14. 前記複数パイプラインステージを変更する段階は、
    1つパイプラインステージを選択する段階と、
    選択されたパイプラインステージに対応するパケットプロセッシングループ(PPSループ)について生成されたコントロールフローグラフを選択する段階と、
    選択されたコントロールグラフに含まれる命令から、選択されたパイプラインステージに含まれない命令を削除する段階と、
    前のパイプラインステージから、前記選択されたパイプラインステージに伝達された変数およびコントロールオブジェクトに従って前記選択されたコントロールグラフを変換する段階と、
    前記選択されたパイプラインステージを実行すべく、変換されたコントロールグラフからPPSループを再構築する段階と、
    それぞれの予備のステージについて、前記パイプラインステージを選択する段階、前記コントロールグラフを選択する段階、前記削除する段階、前記変換する段階、および前記再構築する段階を繰り返して、1つのパラレルネットワークアプリケーションプログラムの前記D段のパイプラインステージプログラムを形成する段階と
    を含む請求項8から請求項13のいずれか1つに記載のプログラム
  15. 1つのシーケンシャルアプリケーションプログラムから1つのフローネットワークモデルを構築する段階と、
    前記フローネットワークモデルを複数パイプラインステージにカットする段階と、
    コントロールフローおよび変数をパイプラインステージ間で伝達できる1つのパラレルアプリケーションプログラムのD段のパイプラインステージプログラムを形成すべく、前記複数パイプラインステージを変換する段階と
    を備え
    前記複数のパイプラインステージを変換する段階は、
    (i)1つのパイプラインステージを選択する段階と、
    (ii)前記選択されたパイプラインステージに対応する1つのパケットプロセッシングステージ(PPS)ループについて生成された1つのコントロールフローグラフを選択する段階と、
    (iii)前記選択されたパイプラインステージ内に命令が含まれない場合に、前記コントロールフローグラフから前記命令を削除する段階と、
    (iv)前ステージから伝達された複数の変数及び複数のコントロールオブジェクトに従って、前記選択されたコントロールフローグラフを変換する段階と、
    (v)1つのパイプラインステージを形成すべく、前記変換されたコントロールフローグラフからPPSループを再構築する段階と、
    1つのパラレルネットワークアプリケーションプログラムのD段のパイプラインステージプログラムを形成すべく、それぞれのパイプラインステージについて(i)−(v)を繰り返す段階と、
    を有する方法。
  16. 前記コントロールフローグラフを変換する段階は、
    前記コントロールフローグラフへの入口において前のパイプラインステージから伝達されたコントロールオブジェクトについて複数の値を選択する段階と、
    前記前のパイプラインステージから受け取ったそれぞれのコントロールオブジェクトについて、前記コントロールオブジェクトを使用して1つの条件命令を構築する段階と、
    前記コントロールフローグラフ内の対応する複数の条件ノードを、前記条件命令で置き換える段階と
    をさらに有する請求項15に記載の方法。
  17. 前記コントロールフローグラフを変換する段階は、
    前のパイプラインステージから伝達された複数の変数の複数の値を選択する段階と、
    次のパイプラインステージに伝達されるそれぞれの変数について、前記コントロールフローグラフ内の独自の一時的な後続の前記変数の定義に、前記変数の値をセットする段階と
    をさらに有する請求項15に記載の方法。
  18. 前記コントロールフローグラフを変換する段階は、
    次のパイプラインステージに伝達されるべきコントロールオブジェクトのそれぞれについて、前記コントロールフローグラフ内の前記コントロールオブジェクトに関連づけられた1つの条件ノードの代替の後続ノードのそれぞれの中の前記コントロールオブジェクトの代替の値を配置する段階と、
    前記コントロールフローグラフの出口において次のパイプラインステージにライブセットデータを伝達する段階と
    をさらに有する請求項15に記載の方法。
  19. コンピュータに実行させるためのプログラムであって、
    前記コンピュータに
    1つのシーケンシャルアプリケーションプログラムから1つのフローネットワークモデルを構築する段階と、
    前記フローネットワークモデルを複数パイプラインステージにカットする段階と、
    コントロールフロー及び変数のパイプラインステージ間の伝達を実行できる1つのパラレルアプリケーションプログラムのD段のパイプラインステージプログラムを形成すべく、前記複数パイプラインステージを変換する段階と
    を実行させ、
    前記複数のパイプラインステージを変換する段階は、
    (i)1つのパイプラインステージを選択する段階と、
    (ii)前記選択されたパイプラインステージに対応する1つのパケットプロセッシングステージ(PPS)ループについて生成された1つのコントロールフローグラフを選択する段階と、
    (iii)前記選択されたパイプラインステージ内に命令が含まれない場合に、前記コントロールフローグラフから前記命令を削除する段階と、
    (iv)前ステージから伝達された複数の変数及び複数のコントロールオブジェクトに従って、前記選択されたコントロールフローグラフを変換する段階と、
    (v)1つのパイプラインステージを形成すべく、前記変換されたコントロールフローグラフからPPSループを再構築する段階と、
    1つのパラレルネットワークアプリケーションプログラムのD段のパイプラインステージプログラムを形成すべく、それぞれのパイプラインステージについて(i)−(v)を繰り返す段階と、
    を有するプログラム
  20. 前記コントロールフローグラフを変換する段階は、
    前記コントロールフローグラフへの入口において前のパイプラインステージから伝達されたコントロールオブジェクトについて複数の値を選択する段階と、
    前記前のパイプラインステージから受け取ったそれぞれのコントロールオブジェクトについて、前記コントロールオブジェクトを使用して1つの条件命令を構築する段階と、
    前記コントロールフローグラフ内の対応する複数の条件ノードを、前記条件命令で置き換える段階と
    をさらに有する請求項19に記載のプログラム
  21. 前記コントロールフローグラフを変換する段階は、
    前のパイプラインステージから伝達された複数の変数の複数の値を選択する段階と、
    次のパイプラインステージに伝達されるそれぞれの変数について、前記コントロールフローグラフ内の独自の一時的な後続の前記変数の定義に、前記変数の値をセットする段階と
    をさらに有する請求項19に記載のプログラム
  22. 前記コントロールフローグラフを変換する段階は、
    次のパイプラインステージに伝達されるべきコントロールオブジェクトのそれぞれについて、前記コントロールオブジェクトの代替の値を、前記コントロールフローグラフ内の前記コントロールオブジェクトに関連づけられた1つの条件ノードの代替の後続ノードのそれぞれの中に配置する段階と、
    前記コントロールフローグラフの出口において次のパイプラインステージにライブセットデータを伝達する段階と
    をさらに有する請求項21に記載のプログラム
  23. 1つのプロセッサと、
    前記プロセッサに結合された1つのメモリであって、請求項8から請求項14、請求項19から請求項22のいずれか1つに記載のプログラムを前記プロセッサに実行させることで、1つのシーケンシャルアプリケーションプログラムのD段のパイプラインステージプログラムへの変換を生じさせ、Dのプロセッサパイプライン内で前記D段のパイプランステージプログラムの並列実行を可能にする1つのコンパイラを有するメモリと
    を備える装置。
  24. 前記コンパイラは、前記シーケンシャルアプリケーションプログラムについての1つのフローネットワークモデルの構築を生じさせ、前記フローネットワークモデルから複数パイプラインステージの選択を生じさせ、コントロールフロー及び変数のパイプラインステージ間の伝達を実行できる前記D段のパイプランステージプログラムを形成すべく前記複数パイプラインステージの変更を生じさせる
    請求項23に記載の装置。
  25. 前記コンパイラは、前記Dのパイプラインステージプログラムを形成すべく、それぞれのカットがバランスの取れた最小コストカットとなるよう、前記フローネットワークモデルのD−1の連続する複数のカットを生じさせる
    請求項24に記載の装置。
  26. 1つのプロセッサと、
    前記プロセッサに結合された1つのメモリコントローラと、
    前記プロセッサに結合された1つのDDR SRAMメモリであって、請求項8から請求項14、請求項19から請求項22のいずれか1つに記載のプログラムを前記プロセッサに実行させることで、1つのシーケンシャルアプリケーションプログラムのD段のパイプラインステージプログラムへの変換を生じさせ、D段のプロセッサパイプライン内で前記D段のパイプラインステージプログラムの並列実行を可能にする1つのコンパイラを有するDDR SRAMメモリと
    を備えるシステム。
  27. 前記コンパイラは、前記シーケンシャルアプリケーションプログラムについての1つのフローネットワークモデルの構築を生じさせ、前記フローネットワークモデルから複数パイプラインステージの選択を生じさせ、コントロールフロー及び変数のパイプラインステージ間の伝達を実行できる前記D段のパイプランステージプログラムを形成すべく前記複数パイプラインステージの変更を生じさせる
    請求項26に記載のシステム。
  28. 前記コンパイラは、前記Dのパイプラインステージプログラムを形成すべく、それぞれのカットがバランスの取れた最小コストカットとなるよう、前記フローネットワークモデルのD−1の連続する複数のカットを生じさせる
    請求項27に記載のシステム。
JP2006539703A 2003-11-14 2004-11-05 パイプライン変換を通じて自動的にネットワークアプリケーションを並列化する装置及び方法 Expired - Fee Related JP4664923B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/714,465 US7793276B2 (en) 2003-11-14 2003-11-14 Apparatus and method for automatically parallelizing network applications through pipelining transformation
PCT/US2004/037160 WO2005050444A2 (en) 2003-11-14 2004-11-05 An apparatus and method for automatically parallelizing network applications through pipelining transformation

Publications (2)

Publication Number Publication Date
JP2007511835A JP2007511835A (ja) 2007-05-10
JP4664923B2 true JP4664923B2 (ja) 2011-04-06

Family

ID=34573995

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006539703A Expired - Fee Related JP4664923B2 (ja) 2003-11-14 2004-11-05 パイプライン変換を通じて自動的にネットワークアプリケーションを並列化する装置及び方法

Country Status (7)

Country Link
US (2) US7793276B2 (ja)
EP (1) EP1685483B1 (ja)
JP (1) JP4664923B2 (ja)
CN (1) CN1906579B (ja)
AT (1) ATE415655T1 (ja)
DE (1) DE602004018023D1 (ja)
WO (1) WO2005050444A2 (ja)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7793276B2 (en) * 2003-11-14 2010-09-07 Intel Corporation Apparatus and method for automatically parallelizing network applications through pipelining transformation
US8856401B2 (en) * 2003-11-25 2014-10-07 Lsi Corporation Universal controller for peripheral devices in a computing system
US7693690B2 (en) * 2005-08-09 2010-04-06 Nec Laboratories America, Inc. Disjunctive image computation for sequential systems
US7774769B2 (en) * 2005-09-22 2010-08-10 Intel Corporation Transmitting trace-specific information in a transformed application
US8769513B2 (en) * 2005-11-18 2014-07-01 Intel Corporation Latency hiding of traces using block coloring
US8453131B2 (en) * 2005-12-24 2013-05-28 Intel Corporation Method and apparatus for ordering code based on critical sections
US20070237146A1 (en) * 2006-03-31 2007-10-11 Ilija Hadzic Methods and apparatus for modeling and synthesizing packet processing pipelines
US8037466B2 (en) 2006-12-29 2011-10-11 Intel Corporation Method and apparatus for merging critical sections
US20090201817A1 (en) * 2008-02-08 2009-08-13 International Business Machines Corporation Method of optimizing a flow of value in a network
US9043774B2 (en) * 2008-02-12 2015-05-26 William G. Bently Systems and methods for information flow analysis
WO2010060243A1 (en) * 2008-11-28 2010-06-03 Siemens Aktiengesellschaft Automatic control system and method for executing control program in parallel
JP2012510661A (ja) 2008-12-01 2012-05-10 ケーピーアイティ クミンズ インフォシステムズ リミテッド 逐次コンピュータプログラムコードを並列処理する方法及びシステム
US8239866B2 (en) * 2009-04-24 2012-08-07 Microsoft Corporation Reduction of memory latencies using fine grained parallelism and FIFO data structures
US8566801B2 (en) * 2009-05-22 2013-10-22 International Business Machines Corporation Concurrent static single assignment for general barrier synchronized parallel programs
US8448155B2 (en) * 2009-06-01 2013-05-21 National Instruments Corporation Automatically creating parallel iterative program code in a graphical data flow program
JP4931978B2 (ja) * 2009-10-06 2012-05-16 インターナショナル・ビジネス・マシーンズ・コーポレーション 並列化処理方法、システム、及びプログラム
JP4886838B2 (ja) * 2009-10-30 2012-02-29 インターナショナル・ビジネス・マシーンズ・コーポレーション 並列化方法、システム、及びプログラム
US8276148B2 (en) 2009-12-04 2012-09-25 International Business Machines Corporation Continuous optimization of archive management scheduling by use of integrated content-resource analytic model
CN101876899B (zh) * 2009-12-18 2014-06-25 北京北大众志微系统科技有限责任公司 一种计算机程序的优化方法及系统
JP5479942B2 (ja) * 2010-02-22 2014-04-23 インターナショナル・ビジネス・マシーンズ・コーポレーション 並列化方法、システム、及びプログラム
US8868470B2 (en) * 2010-11-09 2014-10-21 Microsoft Corporation Parallel processing of data sets
WO2013010159A1 (en) * 2011-07-14 2013-01-17 Siemens Corporation Reducing the scan cycle time of control applications through multi-core execution of user programs
US20130139164A1 (en) * 2011-11-28 2013-05-30 Sap Ag Business Process Optimization
US20130138473A1 (en) * 2011-11-28 2013-05-30 Sap Ag Business Process Optimization
CN105573717B (zh) * 2014-10-08 2018-02-06 华为技术有限公司 一种面向多核处理器的程序划分方法及装置
US9747089B2 (en) * 2014-10-21 2017-08-29 International Business Machines Corporation Automatic conversion of sequential array-based programs to parallel map-reduce programs
US9836568B1 (en) * 2016-03-14 2017-12-05 Xilinx, Inc. Programmable integrated circuit design flow using timing-driven pipeline analysis
US10509634B2 (en) * 2016-03-30 2019-12-17 International Business Machines Corporation Data flow analysis for dynamic application, skipping views
US10785107B2 (en) * 2018-05-16 2020-09-22 Microsoft Technology Licensing, Llc Method and apparatus for optimizing legacy network infrastructure

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0644209A (ja) * 1992-07-27 1994-02-18 Toshiba Corp 並列シミュレーションモデル分割決定装置
JPH09106351A (ja) * 1995-10-12 1997-04-22 Hitachi Ltd 変数リネーム方法
US6223337B1 (en) * 1997-12-12 2001-04-24 Hewlett-Packard Company Random test generation for compiler optimization
CA2288614C (en) * 1999-11-08 2004-05-11 Robert J. Blainey Loop allocation for optimizing compilers
US7233998B2 (en) * 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
US7793276B2 (en) * 2003-11-14 2010-09-07 Intel Corporation Apparatus and method for automatically parallelizing network applications through pipelining transformation
US7581214B2 (en) * 2004-04-15 2009-08-25 Intel Corporation Live set transmission in pipelining applications
US8543992B2 (en) * 2005-12-17 2013-09-24 Intel Corporation Method and apparatus for partitioning programs to balance memory latency
US8261249B2 (en) * 2008-01-08 2012-09-04 International Business Machines Corporation Distributed schemes for deploying an application in a large parallel system
US8122441B2 (en) * 2008-06-24 2012-02-21 International Business Machines Corporation Sharing compiler optimizations in a multi-node system
US8214814B2 (en) * 2008-06-24 2012-07-03 International Business Machines Corporation Sharing compiler optimizations in a multi-node system
JP5479942B2 (ja) * 2010-02-22 2014-04-23 インターナショナル・ビジネス・マシーンズ・コーポレーション 並列化方法、システム、及びプログラム

Also Published As

Publication number Publication date
US20050108696A1 (en) 2005-05-19
EP1685483B1 (en) 2008-11-26
US20100223605A1 (en) 2010-09-02
US7793276B2 (en) 2010-09-07
JP2007511835A (ja) 2007-05-10
US8438552B2 (en) 2013-05-07
EP1685483A2 (en) 2006-08-02
DE602004018023D1 (de) 2009-01-08
ATE415655T1 (de) 2008-12-15
WO2005050444A3 (en) 2005-09-15
CN1906579B (zh) 2010-06-23
CN1906579A (zh) 2007-01-31
WO2005050444A2 (en) 2005-06-02

Similar Documents

Publication Publication Date Title
JP4664923B2 (ja) パイプライン変換を通じて自動的にネットワークアプリケーションを並列化する装置及び方法
US8893080B2 (en) Parallelization of dataflow actors with local state
JP2007528059A (ja) ソフトウェアのモデル化、抽象、および分析のためのシステムと方法
CN113283613B (zh) 深度学习模型的生成方法、优化方法、装置、设备及介质
JP2016177454A (ja) 動作合成方法、動作合成プログラムおよび動作合成装置
US11556756B2 (en) Computation graph mapping in heterogeneous computer system
Moreira et al. Graph partitioning with acyclicity constraints
Stulova et al. Throughput driven transformations of synchronous data flows for mapping to heterogeneous MPSoCs
Sittel et al. ILP-based modulo scheduling and binding for register minimization
US8904371B2 (en) Data handling among actors in a dataflow programming environment
Falk et al. A rule-based quasi-static scheduling approach for static islands in dynamic dataflow graphs
Milik On PLCs Control Program Hardware Implementation Selected Problems of Mapping and Scheduling
Corre et al. Memory accesses management during high level synthesis
Ye et al. HIDA: A Hierarchical Dataflow Compiler for High-Level Synthesis
Nawaz et al. Recursive variable expansion: A loop transformation for reconfigurable systems
Kirchhoff et al. Increasing efficiency in data flow oriented model driven software development for softcore processors
Zhuge et al. Timing optimization via nest-loop pipelining considering code size
US11922152B2 (en) Workload oriented constant propagation for compiler
Houshmand et al. Grafs: Graph analytics fusion and synthesis
Azarian et al. Coarse/fine-grained approaches for pipelining computing stages in FPGA-based multicore architectures
Véstias et al. System-level co-synthesis of dataflow dominated applications on reconfigurable hardware/software architectures
GB2597088A (en) Sharing data structures
Renaud et al. Automated Clustering and Pipelining of Dataflow Actors for Controlled Scheduling Complexity
Hashemi et al. Throughput-Driven Parallel Embedded Software Synthesis from Synchronous Dataflow Models: Caveats and Remedies
CN115934094A (zh) 结构体变量赋值方法、系统、设备及存储介质

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091020

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100119

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100126

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100219

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100226

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100319

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100329

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100419

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110107

R150 Certificate of patent or registration of utility model

Ref document number: 4664923

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140114

Year of fee payment: 3

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

LAPS Cancellation because of no payment of annual fees