JP3938387B2 - コンパイラ、制御方法、およびコンパイラ・プログラム - Google Patents

コンパイラ、制御方法、およびコンパイラ・プログラム Download PDF

Info

Publication number
JP3938387B2
JP3938387B2 JP2005232085A JP2005232085A JP3938387B2 JP 3938387 B2 JP3938387 B2 JP 3938387B2 JP 2005232085 A JP2005232085 A JP 2005232085A JP 2005232085 A JP2005232085 A JP 2005232085A JP 3938387 B2 JP3938387 B2 JP 3938387B2
Authority
JP
Japan
Prior art keywords
processor
task
execution
cluster
memory
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
JP2005232085A
Other languages
English (en)
Other versions
JP2007048052A (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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2005232085A priority Critical patent/JP3938387B2/ja
Priority to US11/463,496 priority patent/US7503039B2/en
Publication of JP2007048052A publication Critical patent/JP2007048052A/ja
Application granted granted Critical
Publication of JP3938387B2 publication Critical patent/JP3938387B2/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

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Description

本発明は、コンパイラ、制御方法およびコンパイラ・プログラムに関する。特に、本発明は、複数のタスクを並列処理させることによりプログラムを最適化するコンパイラ、制御方法およびコンパイラ・プログラムに関する。
近年、複数のプロセッサ・コアを搭載したマイクロプロセッサが開発されている。各々のプロセッサ・コアは、他のプロセッサ・コアとは独立にかつ他のプロセッサ・コアと並列に演算を行うことができる。例えば、出願人によって開発されたPOWER5プロセッサは、2つのプロセッサ・コアを有し、これらを並列に駆動させることができる。また、出願人らによって開発されたCELLプロセッサは、8つのプロセッサ・コアを並列に駆動させることができる。
図1に、分散メモリ型のマルチコア・マイクロプロセッサ10の構成を示す。マイクロプロセッサ10は、プロセッサ・コア100−1〜Nと、各々のプロセッサ・コアに対応する局所メモリ110およびDMAエンジン120を有する。プロセッサ・コア100−1〜Nの各々は、共通のオンチップバス140により相互に接続されている。また、プロセッサ・コア100−1〜Nは、オフチップバス150によりメイン・メモリ1020に接続されている。
プロセッサ・コア100−1は、局所メモリ110−1からプログラムを読み出して実行し、局所メモリ110−1中のデータにアクセスして処理を進行させる。処理結果は、所定のタイミングでメイン・メモリ1020に出力される。ここで、局所メモリ110−1は、従来のキャッシュメモリと同様に、メイン・メモリ1020と比較して極めて高速にアクセス可能である。また、オンチップバス140は、オフチップバス150による通信と比較して、局所メモリ110−1〜N間を極めて高速に通信させることができる。
以下、本発明の参考技術を挙げる。これらについては後述する。
Y. Kwok and I. Ashmad, "Static Scheduling Algorithms for Allocating Directed Task Graphs to Multiprocessors," ACM Computing Surveys, Vol. 31, No. 4, December 1999. A. Gonzalez Escribano, A.J.C. van Gemund, and V. Cardenoso-Payo, "Mapping Unstructured Applications into Nested Parallelism," Proceedings of VECPAR 2002 - 5th International Conference on High Performance Computing for Computational Science, LNCS 2565, 2003, pp. 407-420. P. Chretienne and C. Picouleau, "Scheduling with communication delays: a survey," In P. Chretienne, E.G. Coffman Jr., J.K. Lenstra, and Z. Liu, editors, Scheduling Theory and its Applications, chapter 4, pp. 65-90, John Wiley & Sons, 1995. MPICH, http://www-unix.mcs.anl.gov/mpi/mpich/ LAM-MPI, http://www.lam-mpi.org PVM, http://www.csm.ornl.gov/pvm/pvm_home.html H. Ogawa and S. Matsuoka, "OMPI: optimizing MPI programs using partial evaluation," Proceedings of the 1996 ACM/IEEE conference on Supercomputing, November 1996.
このようなマルチコア・マイクロプロセッサにおいては、各々のプロセッサ・コアにおいて何れのタスクをどのような順序で実行させるかによって、処理全体の性能が大きく異なる。これは、局所メモリ110−1〜Nの各々の記憶容量が、メイン・メモリ1020と比べて極めて小さいからである。即ち、ある第1タスクの処理結果を次の第2タスクで用いない場合には、その処理結果を局所メモリに保持しておくことはできず、それを後で用いることができるようにメイン・メモリ1020に退避しなければならない。
このため、例えば、ある第1タスクの処理結果を用いる第2タスクは、第1タスクの次に連続して同一のプロセッサ・コアで実行させることが好ましい。また、第1タスクの処理中にその処理経過を用いる第3タスクは、第1タスクの処理中に他のプロセッサ・コアにおいて並列に実行させることが好ましい。従来、このような分散メモリ型マルチコア・マイクロプロセッサの特徴を活用して該当システムで効果的なタスクの実行順序を定める技術は提案されていなかった。
なお、参考技術として、分散メモリ・マルチプロセッサにおいて、複数のタスクを効率的に各々のプロセッサで実行させる技術が提案されている。例えば、非特許文献1においては、複数のタスクの相互依存関係を示すグラフを解析することによりプログラム全体を効率的に実行させるアルゴリズムを比較検討している。
既存の一般的なマルチプロセッサを搭載するシステムにおいて、プロセッサは大容量のメモリを高速にアクセスできる。これに対して、プロセッサ間の通信は低速である。このため、互いに頻繁に通信する複数のタスクについては、これらの間で発生する通信の通信量を低減するべく、同一のプロセッサで実行させるようにしていた。この結果、同一のプロセッサにおいてタスク切替が頻繁に発生する場合があった。
これに対して、マルチコア・プロセッサは、複数のプロセッサ・コアが互いに高速に通信できる。一方で、同一のプロセッサ・コアで異なるタスクを連続して実行する場合には、メイン・メモリへのアクセスが発生して処理効率が低下する。即ち、局所メモリが充分に大きくないので、前のタスクのコンテクストを局所メモリからメイン・メモリに退避し、かつ、次のタスクのコンテクストをメイン・メモリから局所メモリにロードする必要がある。
このように、マルチプロセッサを搭載したシステムとマルチコア・プロセッサとでは、その特徴が大きく異なり、マルチプロセッサに関連する技術をマルチコア・プロセッサにそのまま適用することはできない。
また、他の参考技術として、一群のタスクをクラスタにまとめ、クラスタ間の相互依存関係を示すシリーズパラレル・グラフを生成する技術が提案されている(非特許文献2を参照。)。しかしながら、これらの技術において、各々のクラスタの実行に要する時間、または、クラスタ間の通信に要する時間その他の情報は、グラフの生成に用いられない。また、そのグラフに基づいてクラスタをスケジューリングする技術が提案されている(非特許文献3を参照。)が、この方式は無限個のプロセッサを仮定している。即ち、これらの技術は分散メモリ型マルチコア・プロセッサで効果的なスケジューリングを行わない。
また、動的計画法を効果的に適用するには、全体問題の最適解が、部分問題の最適解の和で構成されることが必要である。即ち、各クラスタを独立して実行した場合の実行時間が、そのクラスタと他のクラスタとを並列または連続して実行したときのそのクラスタの実行時間に一致しなければならない。マルチコア・プロセッサにおいて、あるタスクを実行する実行効率は、そのタスクと並列にまたは連続して実行される他のタスクによって処理効率は大きく異なる。このため、この技術をそのまま適用することは難しい。
更に他の参考技術として、MPI(Message Passing Interface)やPVM(Parallel Virtual Machine)が用いられている(非特許文献4〜7を参照。)。これらの技術によれば、分散メモリ・マルチプロセッサを搭載するシステムにおいて、アプリケーションプログラムを効率的に並列動作させることができる。しかしながら、これらの技術においては、各々のタスクの相互依存関係を静的に解析する機能や、各々のタスクが相互に通信する通信量を解析する機能は提供されない。
そこで本発明は、上記の課題を解決することのできるコンパイラ、コンパイル方法およびコンパイラ・プログラムを提供することを目的とする。この目的は特許請求の範囲における独立項に記載の特徴の組み合わせにより達成される。また従属項は本発明の更なる有利な具体例を規定する。
上記課題を解決するために、本発明の第1の形態においては、マイクロプロセッサ・チップ上に、それぞれが他のプロセッサ・コアとは独立にかつ並列に演算処理を行うことができる、複数のプロセッサ・コアを設けたマルチコア・プロセッサによる、コンパイルの対象プログラムの実行を、最適化する装置としてのコンパイラ(コンパイラ装置)であって、マルチコア・プロセッサが有するプロセッサ・コアのうち、対象プログラムを実行するプロセッサ・コアの個数である実行コア数を記録している、記録部と、前記メモリを当該コンパイラ装置のプロセッサの動作によりアクセスして、前記対象プログラムの中から、それぞれが前記対象プログラムの処理の一部に対応する命令群である複数のタスクによる、処理の流れを示す実行パスのうち、第1タスクの処理結果に依存する複数の第2タスクの中から前記第1タスクと異なるプロセッサ・コアで実行した場合に対する同一のプロセッサ・コアで連続して実行した場合のタスク切替時間の短縮量を最大化する第2のタスクを選択して第1タスクと共に含めて構成した実行パスである支配的パスを当該コンパイラ装置のプロセッサの動作により検出する、パス検出部と、前記記録部に記録された前記実行コア数に基づき、前記実行コア数以下の数の支配的パスを選択することにより前記マルチコア・プロセッサにおいて並列にまたは連続して実行すべき少なくとも1つのタスクをクラスタとして当該コンパイラ装置のプロセッサの動作により生成して、前記メモリに格納する、クラスタ生成部と、前記メモリを当該コンパイラ装置のプロセッサの動作によりアクセスして、前記メモリに格納されたクラスタ毎に、前記実行コア数以下の自然数の中から選択した1つまたは複数の自然数の各々について、当該クラスタを当該自然数に等しい個数のプロセッサ・コアで実行した場合の実行時間を当該コンパイラ装置のプロセッサの動作により算出して、前記メモリに格納する、時間算出部と、前記メモリを当該コンパイラ装置のプロセッサの動作によりアクセスして、前記メモリに格納された前記実行時間に基づいて、前記対象プログラムの実行時間を短縮するべく各クラスタの実行のために割り当てるべきプロセッサ・コアの個数を当該コンパイラ装置のプロセッサの動作により選択して、前記メモリに格納する、コア数選択部とを備えるコンパイラ、当該コンパイラによるコンパイル方法および当該コンパイラとして情報処理システムを機能させるコンパイラ・プログラムを提供する。
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた、発明となりうる。
本発明によれば、マルチコア・プロセッサ等の新たな並列処理用プロセッサにおいて、プログラムを効率的に動作させることができる。
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図2は、コンパイラ20および情報処理システム30の全体構成を示す。コンパイラ20は、対象プログラム15を入力し、プロセッサ10などのマルチコア・プロセッサで実行させるように最適化する。最適化された結果の結果プログラムは、情報処理システム30において実行される。例えば、情報処理システム30は、入力パラメータを結果プログラムに入力して実行し、その処理結果を出力する。
図3は、情報処理システム30のハードウェア構成の一例を示す。情報処理システム30は、ホストコントローラ1082により相互に接続されるプロセッサ10、メイン・メモリ1020、及びグラフィックコントローラ1075を有するCPU周辺部と、入出力コントローラ1084によりホストコントローラ1082に接続される通信インターフェイス1030、ハードディスクドライブ1040、及びCD−ROMドライブ1060を有する入出力部と、入出力コントローラ1084に接続されるBIOS1010、フレキシブルディスクドライブ1050、及び入出力チップ1070を有するレガシー入出力部とを備える。
ホストコントローラ1082は、メイン・メモリ1020と、高い転送レートでメイン・メモリ1020をアクセスするプロセッサ10及びグラフィックコントローラ1075とを接続する。プロセッサ10は、BIOS1010及びメイン・メモリ1020に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィックコントローラ1075は、プロセッサ10等がメイン・メモリ1020内に設けたフレームバッファ上に生成する画像データを取得し、表示装置1080上に表示させる。これに代えて、グラフィックコントローラ1075は、プロセッサ10等が生成する画像データを格納するフレームバッファを、内部に含んでもよい。
入出力コントローラ1084は、ホストコントローラ1082と、比較的高速な入出力装置である通信インターフェイス1030、ハードディスクドライブ1040、及びCD−ROMドライブ1060を接続する。通信インターフェイス1030は、ネットワークを介して外部の装置と通信する。ハードディスクドライブ1040は、情報処理システム30が使用するプログラム及びデータを格納する。CD−ROMドライブ1060は、CD−ROM1095からプログラム又はデータを読み取り、メイン・メモリ1020又はハードディスクドライブ1040に提供する。
また、入出力コントローラ1084には、BIOS1010と、フレキシブルディスクドライブ1050や入出力チップ1070等の比較的低速な入出力装置とが接続される。BIOS1010は、情報処理システム30の起動時にプロセッサ10が実行するブートプログラムや、情報処理システム30のハードウェアに依存するプログラム等を格納する。フレキシブルディスクドライブ1050は、フレキシブルディスク1090からプログラム又はデータを読み取り、入出力チップ1070を介してメイン・メモリ1020またはハードディスクドライブ1040に提供する。入出力チップ1070は、フレキシブルディスク1090や、例えばパラレルポート、シリアルポート、キーボードポート、マウスポート等を介して各種の入出力装置を接続する。
情報処理システム30に提供される結果プログラムは、電気通信回線を経由して通信インターフェイス1030などから提供される。結果プログラムは情報処理システム30に働きかけて、プログラム作成者が意図した演算その他の処理を行わせ、その処理結果を出力させる。以上に示したプログラムは、外部の記憶媒体に格納されて提供されてもよい。記憶媒体としては、フレキシブルディスク1090、CD−ROM1095の他に、DVDやPD等の光学記録媒体、MD等の光磁気記録媒体、テープ媒体、ICカード等の半導体メモリ等を用いることができる。
図4は、対象プログラム15の一例を示す。対象プログラム15は、情報処理システム30に働きかけてガウスの消去法を実現する。以降、この対象プログラム15を例に情報処理システム30のコンパイル処理を説明する。また、本例に示す対象プログラム15は、プログラムの処理内容をその処理手順に沿って説明する擬似コードであり、実際にコンパイルされるプログラムとは異なってもよい。また、対象プログラム15は、2個のプロセッサ・コアと1個のサポートプロセッサとにより実行される。そして、対象プログラム15における変数Nは、行列の大きさを示し、本実施例においてNは4とする。即ち、対象プログラム15は、4×4の正方行列についてガウスの消去法を実現することを目的とする。
3行目から5行目のプログラムは、サポートタスクによる処理を示す。即ち、変数my_task_idには、実行中のタスクの識別番号が予め格納されている。タスクの識別番号が0の場合には、そのタスクはサポートタスクとなる。4行目および5行目のプログラムによって、サポートタスクは、連立方程式のパラメータを他の各々のタスクに分配し、その処理結果を各々のタスクから収集する。
6行目から26行目のプログラムは、サポートタスクを除く他の各々のタスクの処理を示す。7行目および8行目のプログラムによって、各タスクは、連立方程式のパラメータをサポートタスクから取得する。9行目から18行目のプログラムによって、各タスクは、そのタスクの識別番号と同一番号の行の解を求める。19行目から25行目のプログラムによって、各タスクは、そのタスク以外の各々のタスクから解を取得する。また、各タスクは、そのタスクによって担当する行の解を求めて他のタスクに送信する。
図5は、コンパイラ20の機能構成を示す。コンパイラ20は、パス関連処理部500と、性能情報記録部505と、クラスタ関連処理部510と、実行時間算出部520と、コア数選択部530とを有する。性能情報記録部505は、情報処理システム30の性能に関する各種の情報を記録する。例えば、性能情報記録部505は、プロセッサ10が有するプロセッサ・コアの数のうち、対象プログラム15を実行するプロセッサ・コアの個数である実行コア数を記録している。また、性能情報記録部505は、タスクの処理結果を局所メモリ110−1を介して他のタスクに転送する処理の所要時間の見積もりを記録している。なお、所要時間とは、マイクロ秒、ミリ秒等の実時間のみならず、プロセッサの実行サイクル数などの指標値であってもよい。
パス関連処理部500は、性能情報記録部505から取得した性能に関する情報に基づいて、対象プログラム15から所定の実行パスを検出する。ここで、実行パスとは、先行タスクを完了しなければ後続タスクを開始できない関係にある複数のタスクの処理の流れをいう。具体的には、パス関連処理部500は、複数のタスクの各々をノードとし、それらの間の依存関係(例えば、制御依存またはデータ依存など)をエッジとした有向グラフを生成し、そのグラフ中の任意のパスの中から所定の方法によって実行パスを検出してもよい。
なお、本実施例においてタスクとは、対象プログラム15中の処理の一部を指す。好ましくは、タスクは、その実行中にプリエンプション(例えば、コンテクストスイッチなど)を行わないことが保証された命令群である。即ち例えば、コンパイラ20は、最適化処理に先立って、対象プログラム15を、ブロッキング通信関数呼び出しを境界として分割することにより複数のタスクを生成する。
クラスタ関連処理部510は、対象プログラム15に含まれる複数のタスクの中から所定の方法によって少なくとも1つのタスクを選択してクラスタとする。この処理を順次繰り返し、クラスタ関連処理部510は、対象プログラム15に含まれる複数のタスクを複数のクラスタに分類する。クラスタの分類にも、性能情報記録部505に記録された情報が用いられる。
実行時間算出部520は、生成されたクラスタ毎に、実行コア数以下の自然数の中から選択した1つまたは複数の自然数の各々について、当該自然数に等しい個数のプロセッサ・コアで実行した場合の実行時間を算出する。例えば、実行コア数が7であれば、7以下の自然数の中から選択した1つまたは複数の自然数(即ち例えば3個および5個)に等しい個数のプロセッサ・コアで実行した実行時間を算出してもよい。好ましくは、実行時間算出部520は、クラスタを最も効率的に実行し得るプロセッサ・コアの個数を選択し、その個数のプロセッサ・コアで実行した場合の実行時間を算出してもよい。例えば、3以上のプロセッサ・コアで実行してもそれ以下の個数のプロセッサ・コアで実行した場合よりも実行時間が短縮しないことが予め分かっている場合には、実行時間算出部520は、3つのプロセッサ・コアで実行した場合の実行時間のみを算出してもよい。実行時間は、例えば、性能情報記録部505に記録された情報に基づいてその見積もり値が算出される。
コア数選択部530は、対象プログラム15の実行時間を短縮するべく、算出された実行時間に基づいて、各クラスタの実行のために割り当てるプロセッサ・コアの個数を、生成されたクラスタの各々について選択する。各クラスタについて選択されたコアの個数は、例えば、命令スケジューラその他の最適化モジュールに通知されてもよい。このコアの個数に基づいて生成された結果プログラムは、情報処理システム30に出力されて情報処理システム30において実行される。
図6は、性能情報記録部505のデータ構造の一例を示す。図6(a)に示すように、性能情報記録部505は、データ転送条件およびコンテクスト転送条件の組に対応付けて、データ転送時間およびコンテクスト転送時間を記録している。データ転送条件とは、先行タスクおよびその処理結果に依存する後続タスクの間で処理結果のデータを転送する方法を定める条件である。例えば、データ転送条件は、先行タスクおよび後続タスクを同一のプロセッサで連続して実行するか、および、これらを異なるプロセッサで実行するか若しくは非連続に実行するかの何れかである。
先行タスクおよび後続タスクを同一のプロセッサで連続して実行することを条件に、先行タスクの処理結果は局所メモリを介して後続タスク転送される。このため、性能情報記録部505は、この条件に対応するデータ転送時間として、先行タスクの処理結果を後続タスクに局所メモリを介して転送する処理の所要時間を記録する。この所要時間は、実際の所要時間でなくともよく、プロセッサ10の性能から予想される所要時間の見積もり値であってもよい。
先行タスクおよび後続タスクを異なるプロセッサで実行するか若しくは非連続に実行することを条件に、先行タスクの処理結果はメイン・メモリを介して後続タスクに転送される。このため、性能情報記録部505は、この条件に対応するデータ転送時間として、先行タスクの処理結果をメイン・メモリを介して転送する処理の所要時間を記録する。同様に、この所要時間は、情報処理システム30の性能から予想される所要時間の見積もり値であってもよい。
また、コンテクスト転送条件とは、先行タスクおよび後続タスクの間でコンテクストを切り替える方法を定める条件である。例えば、コンテクスト転送条件は、先行タスクおよび後続タスクの間で実行コードおよびコンテクストが等しいか、コンテクストは異なるが実行コードが同一であるか、および、コンテクストも実行コードも異なるかの何れかである。
先行タスクおよび後続タスクの間で実行コードおよびコンテクストが等しいことを条件に、局所メモリに記録されている実行コードおよびコンテクストは、後続タスクにおいてそのまま用いられる。このため、性能情報記録部505は、この条件に対応するコンテクスト転送時間として0を記録する。一方で、先行タスクおよび後続タスクの間でコンテクストが異なり、かつ実行コードが同一であることを条件に、その実行コードは後続タスクにおいてそのまま用いられる。このため、性能情報記録部505は、この条件に対応するコンテクスト転送時間として、先行タスクのコンテクストを局所メモリからメイン・メモリに退避して後続タスクのコンテクストをメイン・メモリから局所メモリに復帰させる処理の所要時間を記録する。ここで、コンテクストとは、例えば、スタックポインタの値やその他のレジスタの値などを指す。
また、先行タスクおよび後続タスクの実行コードも異なることを条件に、先行タスクの実行コードに代えて後続タスクの実行コードがメイン・メモリから局所メモリに読み込まれる。このため、性能情報記録部505は、この条件に対応するコンテクスト転送時間として、先行タスクの実行コードに代えて後続タスクの実行コードをメイン・メモリから局所メモリに読み込む処理の所要時間を、上記コンテクストの退避・復帰に要する時間に加えた時間を記録する。
また、図6(b)に示すように、性能情報記録部505は、実行コア数を更に記録する。実行コア数は、対象プログラム15を実行するプロセッサ・コアのコア数であるから、プロセッサ10が有するコア数と一致するとは限らない。例えば、実行コア数は、プロセッサ10が有するコア数からサポートプロセッサに対応する1つを除いた数であってもよい。一例としてプロセッサ10が8つのプロセッサ・コアを有する場合には、実行コア数は7である。実行コア数は、予め定められてもよいし、コンパイラ20の利用者により設定されてもよい。
図7は、コンパイラ20が対象プログラム15をコンパイルする処理全体の流れを示す。パス関連処理部500は、性能情報記録部505から取得した性能に関する情報に基づいて、単一のプロセッサ・コアで連続して実行すべきタスクの実行パスの候補である支配的パスを検出する(S700)。好ましくは、パス関連処理部500は、異なるプロセッサ・コアで実行し、または、非連続に実行した場合と比較して、性能向上の利得がより大きくなる実行パスを、支配的パスとして検出する。
クラスタ関連処理部510は、実行コア数以下の数の支配的パスを選択することによりプロセッサ10において並列にまたは連続して実行すべきタスクのクラスタを生成する(S710)。生成されたクラスタにおいて支配的パスの数が実行コア数以下であるので、これらがたとえ並列に実行された場合であっても、支配的パス選択による性能向上の利得は失われない。
実行時間算出部520は、生成されたクラスタ毎に、実行コア数以下の自然数の中から選択した1つまたは複数の自然数の各々について、当該クラスタを当該自然数に等しい個数のプロセッサ・コアで実行した場合の実行時間を算出する(S720)。例えば、実行コア数が7であれば、7以下の少なくとも2つ、即ち例えば3個および5個の各々のコア数のプロセッサ・コアで実行した実行時間を算出してもよい。実行時間は、例えば、性能情報記録部505に記録された情報に基づいてその見積もり値が算出される。
これに加えて、実行時間算出部520は、実行コア数以下の3個以上のコア数の各々について実行時間を算出してもよい。好ましくは、実行時間算出部520は、生成されたクラスタ毎に、そのクラスタを1から実行コア数までの各々の自然数に等しい個数のプロセッサ・コアで実行した場合の実行時間を算出する。即ち例えば、実行コア数が7であれば、各クラスタを1個、2個、3個、4個、5個、6個および7個の各々のコア数のプロセッサで実行した実行時間を算出することが望ましい。
更に好ましくは、実行時間の算出に際し、実行時間算出部520は、各々のクラスタの実行時間を、そのクラスタ内からクラスタ外へのタスク切替、または、そのクラスタ外からクラスタ内へのタスク切替に、予め見積もられた最大所要時間を要すると見積もる。予め見積もられた最大所要時間とは、例えば、それらのクラスタが非連続に実行されることによって生じるメモリアクセスの所要時間である。
実際には、あるクラスタの次に連続して他のクラスタが実行される場合には、当該クラスタから当該他のクラスタの間のタスク切替の時間は、この最大所要時間よりも短い。しかしながら、実行時間を算出する処理段階において、当該クラスタと当該他のクラスタとが連続して実行されるか否かを判断することはできない。このため、本実施例の実行時間算出部520は、タスク切替の所要時間を一律の最大所要時間とする。これにより、各クラスタの実行時間を統一した条件で評価することができる。
そして、コア数選択部530は、対象プログラム15の実行時間を短縮するべく、算出された実行時間に基づいて、各クラスタの実行のために割り当てるべきプロセッサ・コアの個数を選択する(S730)。
図8は、対象プログラム15に含まれる複数のタスクがスケジューリングされる処理過程を示す(2図のうち1図目)。図8(a)は、対象プログラム15に明示されたタスクの依存関係を示す。図中の円形の領域は、それぞれタスクを示し、図中の矢印はタスク間の依存関係を示す。図中の矩形領域の各々は、対象プログラム15の文面上で一連の処理として明示されたタスク群を示す。例えば、命令群(T0)は、図4の3行目から5行目の処理に対応し、命令群(T1からT4)の各々は、図4の10行目から18行目に示す「for」文の繰り返し処理の各々に対応する。
各々の繰り返し処理は、その途中にブロッキング通信命令を含むため、複数のタスクに分割されている。複数のタスクは、その処理内容に応じて相互に依存する。例えば、2番、3番、7番、11番および15番のタスクの各々は、1番のタスクの処理結果に依存する。
図8(b)は、パス関連処理部500によって検出された支配的パスの一例を示す。図中の矩形領域は、パス関連処理部500によって検出された支配的パスを示す(I0からI4)。即ち、15番、16番、17番および18番のタスクは、同一のプロセッサで連続して実行すべきタスク群である。より詳細には、15番のタスクの次に連続して12番のタスクを実行するよりも、15番のタスクの次に連続して16番のタスクを実行した方が、性能向上の利得が大きいことを示している。本図の例において、対象プログラム15中に明示された命令群T0からT4の各々は、支配的パスI0からI4の各々と一致するが、これらは必ずしも一致するとは限らない。
図8(c)は、クラスタ関連処理部510によって生成されたクラスタの一例を示す。C1からC5を付して示した各々の矩形領域は、クラスタ関連処理部510によって生成された各々のクラスタを示す。即ち、クラスタ関連処理部510は、実行コア数である2を上限とする数の支配的パスを選択することによってクラスタを生成する。一例として、図8(b)に示した支配的パスI3およびI4によって、クラスタC1が生成されている。
図9は、対象プログラム15に含まれる複数のタスクがスケジューリングされる処理過程を示す(2図のうち2図目)。クラスタ関連処理部510は、各々のクラスタに割り当てるべきプロセッサ・コアの個数を選択するために、各々の当該クラスタの間で実行の依存関係を定めたシリーズパラレル・グラフを生成する。図9(a)は、クラスタ関連処理部510によって生成されたシリーズパラレル・グラフの一例を示す。
具体的な処理としては、まず、クラスタ関連処理部510は、クラスタ間の依存関係を定めるグラフから、推移的な依存関係を取り除く。例えば、図8(c)において、クラスタC1はクラスタC5に直接依存しており、なおかつ、クラスタC1はクラスタC3に直接依存し、クラスタC3はクラスタC5に直接依存している。この場合、クラスタC1がクラスタC5に直接依存する依存関係は推移的な依存関係となる。クラスタ関連処理部510は、このような推移的な依存関係を取り除く。
この結果、クラスタ関連処理部510は、クラスタC4はクラスタC2に、クラスタC2はクラスタC1に、クラスタC1はクラスタC3に、クラスタC3はクラスタC5にそれぞれ直接依存するグラフを、シリーズパラレル・グラフとして生成する。これらのクラスタ群は、この順に逐次的に実行される必要のある逐次実行部分であり、シリーズスィートと呼ばれる。コア数選択部530は、このシリーズスィートの実行時間をより短縮するべく各々のクラスタの実行のために割り当てるプロセッサ・コアの個数を動的計画法により選択する。本例の場合、単純に、各々のクラスタに2つのプロセッサ・コアが割り当てられる。
図9(b)は、コンパイルされた結果プログラムにおいて各々のタスクが実行される順序を示す。即ち、サポートプロセッサ130においてタスク1が最初に実行されてタスク2が最後に実行される。また、プロセッサ・コア100−1およびプロセッサ・コア100−2によりクラスタC3が並列に実行され、クラスタC1が並列に実行され、クラスタC2が並列に実行される。
次に、(1)支配的パスの検出、(2)クラスタの生成、および、(3)プロセッサ・コアの個数の選択の各処理について、その詳細を説明する。
(1)支配的パスの検出処理について
図10は、パス関連処理部500の機能構成を示す。パス関連処理部500は、タスク選択部600と、短縮量算出部610と、パス検出部620とを有する。タスク選択部600は、対象プログラム15中の第1タスクについて、その第1タスクの処理結果に依存する少なくとも1つの第2タスク(例えばその処理結果に依存する全てのタスク)を選択する。短縮量算出部610は、第1タスクおよび選択されたその第2タスクを異なるプロセッサ・コアで実行した場合のタスク切替時間と比較して、第2タスクを第1タスクの次に同一のプロセッサ・コアで実行した場合に短縮されるタスク切替時間の短縮量を算出する。
この短縮量は、第1タスクおよび第2タスクのコンテクストが同一である場合においては、コンテクストの退避および復帰に要する時間を含む。また、この短縮量は、第1タスクおよび第2タスクのコンテクストが異なる場合であっても実行コードが同一である場合においては、実行コードをメイン・メモリ1020から局所メモリに読み込む時間を含む。即ち、短縮量算出部610は、第1タスクおよび第2タスクが同一の実行コードを実行する場合の短縮量として、第1タスクおよび第2タスクが異なる実行コードを実行する場合の短縮量に、メイン・メモリ1020から実行コードを局所メモリに読み込む処理の所要時間を加えた時間を算出する。
パス検出部620は、算出された短縮量短縮幅が最も大きい第2タスクを当該支配的パスに含めて検出する。そして、タスク選択部600は、当該支配的パスに含められた第2タスクを新たな第1タスクとして、その第1タスクに依存する新たな第2タスクについて上記同様の処理を繰り返す。パス検出部620は、全てのタスクを何れかの支配的パスに含めて検出したことを条件に、その検出結果をクラスタ関連処理部510に出力する。
図11は、S700における処理の詳細を示す。タスク選択部600は、既に全てのタスクを何れかの支配的パスに含めるべく選択したか否かを判断する(S1100)。既に全てのタスクを選択したことを条件に(S1100:YES)、パス関連処理部500は本図の処理を終了する。選択していなければ(S1100:NO)、タスク選択部600は、まだ選択されていない何れかのタスクを第1タスクとして選択する(S1110)。
次に、タスク選択部600は、第1タスクが、サポートタスク以外と直接依存関係を有するか否かを判断する(S1120)。依存関係を有しないことを条件に(S1120:NO)、パス関連処理部500は、当該第1タスクを含む支配的パスの検出を完了し(S1170)、次の支配的パスを検出するべくS1100に処理を移す。
依存関係を有することを条件に(S1120:YES)、タスク選択部600は、第1タスクの処理結果に依存する少なくとも1つの第2タスクを選択する(S1130)。選択した第2タスクが、既に他の支配的パスに含まれる場合には(S1140:YES)、タスク選択部600は、その第2タスクがその支配的パスの始点であるか否かを判断する(S1150)。始点であれば(S1150:YES)、パス検出部620は、その支配的パスと検出中の支配的パスとを第2タスクを接点として連結して新たな支配的パスとし(S1160)、他の支配的パスを検出するべくS1100に処理を戻す(S1170)。
もし始点でなければ(S1150:NO)、タスク選択部600は、第2タスクを含めない状態で支配的パスの検出を完了し(S1170)、S1100に処理を戻す。即ちこれにより、支配的パスから分岐や合流を排除することができる。第2タスクが他の支配的パスに含まれないことを条件に(S1140:NO)、パス検出部620は、その第2タスクが、第1タスクにとって直接依存関係を有する唯一のタスクであるか、または、第2タスクについて算出された上記短縮量が最も大きいかを判断する(S1180)。
このとき、好ましくは、短縮量算出部610は、当該第2タスクが処理結果に依存する先行タスクの各々について、当該先行タスクおよび当該第2タスクを異なるプロセッサ・コアで実行した場合のタスク切替時間と比較して、当該第2タスクを当該先行タスクの次に同一のプロセッサ・コアで実行させることにより短縮される短縮量を更に算出する。そして、パス検出部620は、複数の先行タスクのうち第1タスクについての短縮量が最も大きいことを更に条件として、当該第2タスクを第1タスクと共に支配的パスに含めて検出する(S1190)。
この判断処理を図12を用いて説明する。
図12は、支配的パスを検出する処理の具体例を示す。本図において関数Save()は、タスク切替時間の短縮量を算出するための関数を示す。詳細には、Save(T,S)は、タスクTの次にタスクSを同一のプロセッサ・コアで連続して実行させることによって短縮されるタスク切替時間の短縮幅を示す。
Tは、第1タスクを示し、S1からSjの各々は、第1タスクの処理結果に依存する他のタスクを示す。このうちSdを第2タスクとする。また、P1からPlの各々はSdの先行タスクであり、Sdは、P1からPlの各々の処理結果に依存する。
図12(a)に示すように、パス検出部620は、タスクTの次にタスクSdを同一のプロセッサ・コアで連続して実行させた場合の短縮幅Save(T,Sd)が、タスクTの次に他の何れのタスクを実行させた場合の短縮幅よりも大きい場合には、タスクSdを支配的パスに含めて検出する。
図12(b)に示すように、短縮量算出部610は、第2タスク(Sd)が処理結果に依存する各々の先行タスク(P1からPl)について、当該先行タスクおよび当該第2タスクを同一のプロセッサ・コアで実行させることにより短縮される短縮量Save(Pi,Sd)を更に算出する。そして、パス検出部620は、複数の先行タスク(P1からPl)のうち第1タスク(T)についての短縮量が最も大きいことを更に条件として、当該第2タスク(Sd)を第1タスク(T)と共に支配的パスに含めて検出する。
図12(c)に、第1タスクについての短縮幅が最大とならない場合を示す。第2タスク(Sd)が処理結果に依存する各々の先行タスク(P1からPl)のうち、タスク切替時間の短縮幅が最大となる先行タスクはPdであり、第1タスクであるTとは異なっている。このような場合には、好ましくは、パス検出部620は、第2タスク(Sd)を第1タスク(T)と同一の支配的パスに含めない(S1180:NO)。第2タスクは、例えば先行タスク(Pd)などの他のタスクと同一の支配的パスに含めた方がよいからである。
図11に戻る。パス検出部620は、第2タスクを第1タスクと共に支配的パスに含めて検出する(S1190)。タスク選択部600は、この第2タスクを新たな第1タスクとして選択し(S1190)、S1120に処理を戻す。
(2)クラスタの生成処理
図13は、クラスタ関連処理部510の機能構成を示す。クラスタ関連処理部510は、クラスタ生成部515と、循環性依存検出部1300と、隣接パス選択部1310とを有する。循環性依存検出部1300は、検出された支配的パスの各々について循環性依存を検出する。ある支配的パスにおける循環性依存とは、その支配的パス中の何れかのタスクの処理に依存する他の実行パス中のタスクの処理に、その支配的パス中の他のタスクが更に依存することをいう。
隣接パス選択部1310は、検出された支配的パスの各々について、当該支配的パス中の何れかのタスクと直接データ転送するタスクを含む他の支配的パスである隣接パスを選択する。クラスタ生成部515は、検出された循環性依存の数がより少ない支配的パスを他の支配的パスよりも優先して選択し、選択した当該支配的パスおよび他のタスクを含めたクラスタを生成する。クラスタ生成部515は、検出された循環性依存の数が各支配的パスについて同一であることを条件に、隣接パスの数がより少ない支配的パスを他の支配的パスよりも優先して選択し、選択した当該支配的パスおよび他のタスクを含めたクラスタを生成する。
クラスタ生成部515は、候補選択部1320と、パス数算出部1330と、タスク追加部1340と、通信量算出部1350と、アイドル割合算出部1360とを有する。候補選択部1320は、選択した支配的パスについて、その支配的パスと共にクラスタに含めるべきタスクの候補である候補タスクを選択する。パス数算出部1330は、その候補タスクを当該支配的パスと共にクラスタに含めた場合において当該クラスタに含まれる支配的パスの総数を算出する。タスク追加部1340は、算出された支配的パスの総数が実行コア数以下であることを条件に、当該候補タスクを含めて当該クラスタを生成する。
通信量算出部1350は、候補タスクが、当該クラスタ中の複数のタスクの各々と通信する通信量の和を算出する。アイドル割合算出部1360は、候補タスクを当該支配的パスと共にクラスタに含めた場合において当該クラスタ中のタスクを実行コア数のプロセッサ・コア数で実行した場合にプロセッサがアイドル状態となる時間の割合を算出する。タスク追加部1340は、予め定められた基準よりもその通信量の和が大きいことを更に条件として、その候補タスクを含めてクラスタを生成する。更に好ましくは、タスク追加部1340は、予め定められた基準値よりもアイドル状態となる時間の割合が小さいことを更に条件として、当該候補タスクを含めてクラスタを生成する。
図14は、S710における処理の詳細を示す。循環性依存検出部1300は、各々の支配的パスについて循環性依存を検出する(S1400)。また、隣接パス選択部1310は、各々の支配的パスについて隣接パスを選択する(S1410)。クラスタ生成部515は、循環性依存の数がより少ない支配的パスから順に、循環性依存の数が同一の場合には隣接パスの数がより少ない支配的パスから順に、順次支配的パスを選択する(S1420)。
クラスタ生成部515は、選択した支配的パスに他のタスクを含めてクラスタを生成する(S1430)。まだ選択していない支配的パスが存在する場合には(S1440:YES)、クラスタ生成部515は、S1420に処理を戻す。一方で、全ての支配的パスをクラスタとして選択した場合には(S1440:NO)、クラスタ生成部515は、本図の処理を終了する。
図15は、S1400における処理の詳細を示す。S1400において、循環性依存検出部1300は、各々の支配的パスが他の支配的パスとの間に有している循環性依存を検出する。本図においては、この処理のうち、ある支配的パスが他の支配的パスとの間で循環性依存を有するか否かを判定する処理について説明する。具体的には、判定対象の支配的パスを支配的パスC1とし、この支配的パスC1が、支配的パスCxに対して循環性依存を有するか否かを判定する。
まず、循環性依存検出部1300は、支配的パスC1の先頭タスクを選択する(S1500)。この先頭タスクをNfとする。fは、先頭から末尾の順に各々のタスクに付した番号を格納する変数である。即ち、先頭タスクはN1となる。
図16は、循環性依存を検出する処理の対象となるタスクの依存グラフを示す。図16(a)に示すように、m個のタスクから構成される支配的パスC1において、先頭タスクから順に末尾タスクに向けて、1からmまでの番号が付される。
図15に戻る。循環性依存検出部1300は、タスクNfから支配的パスCx中のタスクに到達する依存パスが存在するか否かを判断する(S1510)。存在しない場合には(S1510:NO)、循環性依存検出部1300は、タスクNfが支配的パスC1の末尾タスクか否かを判断する(S1520)。末尾タスクならば(S1520:YES)、循環性依存検出部1300は、支配的パスC1は支配的パスCxに循環性依存を有しないと判断し(S1590)、処理を終了する。
S1510において、タスクNfから支配的パスCx中のタスクに到達する依存パスが判断されるが、この到達判断には、タスク間の依存グラフではなく支配的パス間の依存グラフが用いられる。図16(b)に、支配的パス間の依存グラフを例示し、図16(c)に、タスク間の依存グラフを例示する。図16(c)において、タスクN2からは、支配的パスC3中の何れのタスクにも到達不能である。一方で、図16(b)においては、支配的パスC1の何れのタスクからも、支配的パスC3に到達可能である。S1510において、循環性依存検出部1300は、この支配的パス間の依存グラフに基づいて、依存パスの存在を判断する。
図15に戻る。一方、タスクNfが支配的パスC1の末尾タスクで無いならば(S1520:NO)、循環性依存検出部1300は、タスクNfの後続タスクを選択する。この後続タスクは、例えば、タスクNfの次に先頭側に近いタスクであるので、変数fに1を加えることで選択できる。後続タスクを新たなタスクNfとしてS1510に処理を戻す。
タスクNfから支配的パスCx中のタスクに到達する依存パスが存在することを条件に(S1510:YES)、循環性依存検出部1300は、最も先頭に近い分岐のタスクをNfとして選択する(S1535)。分岐のタスクとは、そのタスクから複数のタスクへの依存パスが存在するタスクである。即ち、分岐のタスクの処理結果には、複数のタスクが依存している。そして、循環性依存検出部1300は、支配的パスC1の末尾タスクをタスクNjとして選択する(S1540)。
次に、循環性依存検出部1300は、支配的パスCx中の何れかのタスクからタスクNjに到達するパスが存在するか否かを判断する(S1550)。存在しない場合には(S1550:NO)、循環性依存検出部1300は、タスクNjは支配的パスC1の先頭タスクか否かを判断する(S1555)。例えば変数jが1ならばNjは先頭タスクである。
先頭タスクであれば(S1555:YES)、循環性依存検出部1300は、支配的パスC1は支配的パスCxに循環性依存を有しないと判断し(S1590)、処理を終了する。一方で、先頭タスクでなければ(S1555:NO)、循環性依存検出部1300は、タスクNjから1つ先頭側のタスクを選択し、これを新たなタスクNjとし(S1560)、S1550に処理を移す。
支配的パスCx中の何れかのタスクからタスクNjに到達するパスが存在することを条件に(S1550:YES)、循環性依存検出部1300は、最も末尾に近い合流のタスクをタスクNjとして選択する(S1570)。合流のタスクとは、そのタスクに対して複数のタスクからの依存パスが存在するタスクである。即ち、合流のタスクは、複数のタスクの処理結果に依存する。
タスクNfがタスクNjの祖先であることを条件に(S1580:YES)、循環性依存検出部1300は、支配的パスC1は支配的パスCxに循環性依存を有すると判断する(S1585)。ここで、タスクNfがタスクNjの祖先であるとは、タスクNjがタスクNfの処理結果に直接的または間接的に依存することをいう。タスクNfがタスクNjの祖先でないことを条件に(S1580:NO)、循環性依存検出部1300は、支配的パスC1が支配的パスCxに循環性依存を有しないと判断する(S1590)。
図17は、循環性依存が生じているタスク群の具体例を示す。(a)に示すように、支配的パスC1中のタスク1は、支配的パスC3中のタスク6に対して依存パスを有する。一方で、タスク6は、支配的パスC1中のタスク2に対して依存パスを有する。この場合、支配的パスC3の実行は支配的パスC1の実行に依存し、支配的パスC1の実行は支配的パスC3の実行に依存する。このような場合には、循環性依存検出部1300は、支配的パスC1が支配的パスC3に対して循環性依存を有すると判断する。同様の理由から、循環性依存検出部1300は、支配的パスC1が支配的パスC2に対して循環性依存を有すると判断する。
一方で、(b)に示すように、支配的パスC1中のタスク1は、支配的パスC3中のタスク6に対して依存パスを有する。しかしながら、タスク6は支配的パスC1中の何れのタスクにも依存パスを有していない。このような場合には、循環性依存検出部1300は、支配的パスC1が支配的パスC3に対して循環性依存を有していないと判断する。
以上、本図の処理によれば、ある支配的パスが他の支配的パスに対して循環性依存を有するか否かを判断することができる。ここで、循環性依存を有する支配的パスの特徴について検討すると、その支配的パスは、相互に依存する他の支配的パスと同一のプロセッサで並列に実行されるべきである。そうしなければ、当該支配的パスおよび当該他の支配的パスとの間で2回以上のコンテクストスイッチが生じ、プログラム全体の実行効率が低下するからである。
本実施例におけるクラスタ関連処理部510は、このように、明らかに並列に実行するべき支配的パスの組については、クラスタ生成の優先度を下げ、その他の支配的パスを並列に実行することによりプログラム全体の効率を高める。このため、S1420で説明したように、クラスタ関連処理部510は、循環性依存の数が少ない支配的パスから順に順次支配的パスをクラスタとして生成する。これにより、対象プログラム15の処理の並列性を引き出して効率を高めることができる。
図18は、S1430における処理の詳細を示す。候補選択部1320は、S1420において選択された支配的パスについて、当該支配的パスに含まれる何れかのタスクに直接依存するタスク、または、当該支配的パスに含まれる何れかのタスクが直接依存するタスクを候補タスクとして選択する(S1800)。そして、通信量算出部1350は、各々の候補タスクについて、当該候補タスクが、当該支配的パスを含むクラスタ中の複数のタスクの各々と通信する通信量の和を算出する(S1810)。
候補選択部1320は、これらの候補タスクの中から、算出した通信量の和が大きい順に順次1つずつ候補タスクを選択する(S1820)。パス数算出部1330は、その候補タスクを当該支配的パスと共にクラスタに含めた場合において当該クラスタに含まれる支配的パスの総数を算出する(S1830)。タスク追加部1340は、算出された支配的パスの総数が実行コア数以下であるか否かを判断する(S1840)。
実行コア数以下であれば(S1840;YES)、アイドル割合算出部1360は、候補タスクを当該支配的パスと共にクラスタに含めた場合において当該クラスタ中のタスクを実行コア数のプロセッサ・コア数で実行した場合にプロセッサがアイドル状態となる時間の割合を算出する(S1850)。予め定められた基準値よりもアイドル状態となる時間の割合が小さいことを条件に(S1860:YES)、タスク追加部1340は、当該候補タスクを当該支配的パスに含めてクラスタを生成する(S1870)。
そして、候補選択部1320は、何れのクラスタにも含まれていないタスクがあれば(S1880:YES)、S1820に処理を戻して次のタスクを選択する。そのようなタスクがなければ(S1880:NO)、候補選択部1320は本図の処理を終了する。一方で、支配的パスの総数が実行コア数より大きいか(S1840:NO)、または、アイドル時間の割合が基準以上であれば(S1860:NO)、候補選択部1320は、候補タスクをクラスタに含めないと判断して本図の処理を終了する。
(3)プロセッサ・コアの個数の選択
続いて、各々のクラスタの実行のために割り当てるプロセッサ・コアの個数を選択する処理を、図4とは異なる対象プログラムを例として説明する。
図19は、クラスタ間の依存関係を定めるシリーズパラレル・グラフを、それに含まれるタスクのスケジューリング結果と共に示す。図19(a)は、クラスタ生成部515により生成されたクラスタを、それらの間の依存関係と共に示す。具体的には、クラスタ関連処理部510は、タスク11、12、15および16を選択して1つのクラスタを生成している。これをクラスタ1とする。
また、クラスタ関連処理部510は、タスク4、5、7および9を選択して1つのクラスタを生成している。これをクラスタ2とする。また、クラスタ関連処理部510は、タスク13、14、17および18を選択して1つのクラスタを生成している。これをクラスタ3とする。また、クラスタ関連処理部510は、タスク3、タスク7、タスク6およびタスク10のそれぞれを、当該タスクのみから構成されるクラスタとして選択している。
クラスタ生成部515は、逐次に実行されまたは並列に実行できる、2以上のクラスタをクラスタの上位階層のクラスタ群とし、逐次に実行されまたは並列に実行できる2以上の前記クラスタ群を更に上位階層のクラスタ群としていく。例えば、また、クラスタ間の依存関係を解析したところ、タスク7のみから構成されるクラスタは、クラスタ1に対して依存パスを有する。従って、図19(b)に示すように、これらのクラスタは、これらのクラスタの上位階層のクラスタ群を形成する。このクラスタ群を、シリーズパラレル・グラフの逐次実行部分と呼ぶ。これを、タスク7およびクラスタ1から成るクラスタ群を逐次実行部分1とする。
また、クラスタ生成部515は、逐次実行され、または並列に実行できる2以上のクラスタをそのクラスタの上位階層のクラスタ群とし、逐次実行され、または並列に実行できる2以上のクラスタ群を更に上位階層のクラスタ群としていく。例えば、タスク3のみから構成されるクラスタは、この逐次実行部分1に対しては依存パスを有していない。このため、このクラスタと、この逐次実行部分1とから構成されるクラスタ群は、これらのクラスタおよび逐次実行部分1の上位階層のクラスタ群を形成する。このクラスタ群を、シリーズパラレル・グラフの並列実行部分と呼ぶ。この並列実行部分を、並列実行部分1とする。このようにクラスタ群を形成していくことによって、クラスタ生成部515は、複数のクラスタについての階層化された実行順序の依存関係を示すシリーズパラレル・グラフを生成する。
その他も同様に、クラスタ3は、タスク10のみから構成されるクラスタと共に逐次実行部分2を構成する。また、この逐次実行部分2は、タスク6のみから構成されるクラスタと共に並列実行部分2を形成する。また、本図のクラスタ群が全体で逐次実行部分を形成する。
図20は、クラスタ群の階層構造を示す。この階層構造を形成するべく、クラスタ生成部515は、複数のクラスタの各々をノードとし、実行順序に依存関係を有する複数のクラスタに対応する複数のノードの上位階層に、当該複数のクラスタが逐次に実行すべき逐次実行部分である旨を示すノードを生成したグラフを生成してもよい。例えば、タスク7を示すノード、および、クラスタ1を示すノードの上位階層には、逐次実行部分1を示すノードが形成される。同様に、クラスタ生成部515は、並列に実行可能な複数のクラスタに対応する複数のノードの上位階層に、当該複数のクラスタが並列に実行可能な並列実行部分である旨を示すノードを生成してもよい。
更に、クラスタ生成部515は、実行順序に依存関係を有する複数の並列実行部分または逐次実行部に対応する複数のノードの上位階層に、当該複数の並列実行部分または逐次実行部が更に逐次実行部分である旨を示すノードを生成する。例えば、逐次実行部分1を示すノードの上位階層には、その部分がタスク3と共に形成する並列実行部分を示すノードが生成される。同様に、クラスタ生成部515は、並列に実行可能な複数の並列実行部分または逐次実行部に対応する複数のノードの上位階層に、当該複数の並列実行部分または逐次実行部分が並列実行部分である旨を示すノードを生成してもよい。
なお、シリーズパラレル・グラフの詳細については、上述の非特許文献2および3に説明されている。
図19に戻る。コア数選択部530は、これらの逐次実行部分、および、並列実行部分の実行時間をより短縮するべく、各々のクラスタの実行のために割り当てるプロセッサ・コアの個数を動的計画法によって選択する。動的計画法の部分問題は、逐次実行部分および並列実行部分の各々の実行時間を最適にするために当該部分を構成するクラスタ、逐次実行部分または並列実行部分の各々に割り当てるプロセッサ・コアの個数を選択する問題となる。そして、コア数選択部530は、各々の部分問題を動的計画法によって解くことにより、対象プログラム15の実行時間を最適にするために各々のクラスタに割り当てるプロセッサ・コアの個数を選択する。
処理の手順としては、下位階層のクラスタ群から順に部分問題が解かれる。即ち、コア数選択部530は、下位階層の前記クラスタ群から順に、プロセッサ・コアの個数以下の自然数の中から選択した1つまたは複数の自然数の各々について、下位階層のクラスタ群の実行時間を短縮すべく、下位階層のクラスタ群の更に下位階層に位置する並列実行可能な2以上のクラスタまたはクラスタ群に割り当てるべきプロセッサ・コアの個数を選択していく。
本図の例においては、コア数選択部530は、逐次実行部分1を1つのプロセッサ・コアで実行した実行時間を算出し、逐次実行部分1を2つのプロセッサ・コアで実行した実行時間を算出する。2つのプロセッサ・コアで実行した実行時間の方が、1つのプロセッサ・コアで実行した実行時間よりも短くなると考えられる。また、プログラムの性質上、逐次実行部分1の最大並列度が2であるので、プロセッサ・コア数が2以上の場合は同一の実行時間となる。
次に、コア数選択部530は、並列実行部分1の実行時間を算出する。プロセッサ・コア数が1の場合には、コア数選択部530は、逐次実行部分1を1つのプロセッサ・コアで実行する場合について既に求めた実行時間に、タスク3を実行する実行時間を加えることにより、並列実行部分1の実行時間を算出する。プロセッサ・コア数が2や3以上の場合には、コア数選択部530は、逐次実行部分1について既に求めた実行時間を用いて、並列実行部分1の実行時間を算出する。
例えば、プロセッサ・コア数が3の場合には、逐次実行部分1を1つのプロセッサ・コアで実行し、それと並行に、タスク3を2つのプロセッサ・コアで実行した実行時間を求める。また、逐次実行部分1を2つのプロセッサ・コアで実行し、それと並行に、タスク3を1つのプロセッサ・コアで実行した実行時間を求める。これらの実行時間のうち短い方の実行時間を、並列実行部分1の実行時間とする。
コア数選択部530は、このように各々の部分の実行時間を算出して、最後に、クラスタ群全体から構成される逐次実行部分を実行コア数で実行した場合の実行時間を算出する。この実行時間を算出した場合において、各々のクラスタに割り当てられたプロセッサ・コア数が、各々のクラスタの実行に割り当てるべきプロセッサ・コア数となる。
以上の実施例によれば、コンパイラ20は、対象プログラム15をマルチコアで効率的に実行させることができる。即ち、第1に、パス関連処理部500は、同一のプロセッサ・コアで実行した場合に利得の大きい実行パスを支配的パスとして検出する。第2に、クラスタ関連処理部510は、複数の支配的パスを、並列に実行できる数を上限として選択し、連続にまたは並列に実行するべきクラスタを生成する。このとき、クラスタ内外で通信する通信量はできるだけ少なくし、循環性依存を有する支配的パスはクラスタ生成の優先度を低下させる。これによって、コア数選択部530による動的計画法の適用を可能とし、プログラム全体を効率的に実行できるようにタスクをスケジューリングできる。
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
図1は、分散メモリ型のマルチコア・マイクロプロセッサ10の構成を示す。 図2は、コンパイラ20および情報処理システム30の全体構成を示す。 図3は、情報処理システム30のハードウェア構成の一例を示す。 図4は、対象プログラム15の一例を示す。 図5は、コンパイラ20の機能構成を示す。 図6は、性能情報記録部505のデータ構造の一例を示す。 図7は、コンパイラ20が対象プログラム15をコンパイルする処理全体の流れを示す。 図8は、対象プログラム15に含まれる複数のタスクがスケジューリングされる処理過程を示す(2図のうち1図目)。 図9は、対象プログラム15に含まれる複数のタスクがスケジューリングされる処理過程を示す(2図のうち2図目)。 図10は、パス関連処理部500の機能構成を示す。 図11は、S700における処理の詳細を示す。 図12は、支配的パスを検出する処理の具体例を示す。 図13は、クラスタ関連処理部510の機能構成を示す。 図14は、S710における処理の詳細を示す。 図15は、S1400における処理の詳細を示す。 図16は、循環性依存を検出する処理の対象となるタスクの依存グラフを示す。 図17は、循環性依存が生じているタスク群の具体例を示す。 図18は、S1430における処理の詳細を示す。 図19は、クラスタ間の依存関係を定めるシリーズパラレル・グラフを、それに含まれるタスクのスケジューリング結果と共に示す。 図20は、クラスタ群の階層構造を示す。
符号の説明
15 対象プログラム
20 コンパイラ
30 情報処理システム
10 プロセッサ
100 プロセッサ・コア
110 局所メモリ
120 DMAエンジン
130 サポートプロセッサ
140 オンチップバス
150 オフチップバス
500 パス関連処理部
505 性能情報記録部
510 クラスタ関連処理部
515 クラスタ生成部
520 実行時間算出部
530 コア数選択部
600 タスク選択部
610 短縮量算出部
620 パス検出部
1020 メイン・メモリ
1300 循環性依存検出部
1310 隣接パス選択部
1320 候補選択部
1330 パス数算出部
1340 タスク追加部
1350 通信量算出部
1360 アイドル割合算出部

Claims (13)

  1. マイクロプロセッサ・チップ上に、それぞれが他のプロセッサ・コアとは独立にかつ並列に演算処理を行うことができる、複数のプロセッサ・コアを設けたマルチコア・プロセッサによる、コンパイルの対象プログラムの実行を、最適化するコンパイラ装置であって、
    前記対象プログラムを記憶するメモリと、
    前記マルチコア・プロセッサが有するプロセッサ・コアのうち、前記対象プログラムを実行するプロセッサ・コアの個数である実行コア数を記録している、記録部と、
    前記メモリを当該コンパイラ装置のプロセッサの動作によりアクセスして、前記対象プログラムの中から、それぞれが前記対象プログラムの処理の一部に対応する命令群である複数のタスクによる、処理の流れを示す実行パスのうち、第1タスクの処理結果に依存する複数の第2タスクの中から前記第1タスクと異なるプロセッサ・コアで実行した場合に対する同一のプロセッサ・コアで連続して実行した場合のタスク切替時間の短縮量を最大化する第2のタスクを選択して第1タスクと共に含めて構成した実行パスである支配的パスを、当該コンパイラ装置のプロセッサの動作により検出する、パス検出部と、
    前記記録部に記録された前記実行コア数に基づき、前記実行コア数以下の数の支配的パスを選択することにより前記マルチコア・プロセッサにおいて並列にまたは連続して実行すべき少なくとも1つのタスクをクラスタとして当該コンパイラ装置のプロセッサの動作により生成して、前記メモリに格納する、クラスタ生成部と、
    前記メモリを当該コンパイラ装置のプロセッサの動作によりアクセスして、前記メモリに格納されたクラスタ毎に、前記実行コア数以下の自然数の中から選択した1つまたは複数の自然数の各々について、当該クラスタを当該自然数に等しい個数のプロセッサ・コアで実行した場合の実行時間を当該コンパイラ装置のプロセッサの動作により算出して、前記メモリに格納する、時間算出部と、
    前記メモリを当該コンパイラ装置のプロセッサの動作によりアクセスして、前記メモリに格納された前記実行時間に基づいて、前記対象プログラムの実行時間を短縮するべく各クラスタの実行のために割り当てるべきプロセッサ・コアの個数を当該コンパイラ装置のプロセッサの動作により選択して、前記メモリに格納する、コア数選択部と
    を備えるコンパイラ装置。
  2. 前記時間算出部は、前記メモリを当該コンパイラ装置のプロセッサの動作によりアクセスして、前記メモリに格納されたクラスタ毎に、当該クラスタを1から前記実行コア数までの各々の自然数に等しい個数のプロセッサ・コアで実行した場合の実行時間を当該コンパイラ装置のプロセッサの動作により算出して、前記メモリに格納し、
    前記コア数選択部は、前記メモリを当該コンパイラ装置のプロセッサの動作によりアクセスして、前記メモリに格納された前記実行時間に基づいて、各クラスタの実行のために割り当てるべきプロセッサ・コアの個数を、当該コンパイラ装置のプロセッサの動作により選択して、前記メモリに格納する
    請求項1に記載のコンパイラ装置。
  3. 前記クラスタ生成部は、前記記録部に記録された前記実行コア数に基づき、逐次に実行されまたは並列に実行できる、2以上の前記クラスタを前記クラスタの上位階層のクラスタ群とし、逐次に実行されまたは並列に実行できる、2以上の前記クラスタ群を更に上位階層のクラスタ群としていくことにより、前記複数のクラスタについての階層化された実行順序の依存関係を示すシリーズパラレル・グラフを当該コンパイラ装置のプロセッサの動作により生成して、前記メモリに格納し、
    前記コア数選択部は、前記メモリを当該コンパイラ装置のプロセッサの動作によりアクセスして、前記メモリに格納された前記実行時間に基づいて、下位階層の前記クラスタ群から順に、前記プロセッサ・コアの個数以下の自然数の中から選択した1つまたは複数の自然数の各々について、前記下位階層のクラスタ群を当該自然数に等しい個数のプロセッサ・コアで実行した場合の実行時間を当該コンパイラ装置のプロセッサの動作により算出し、算出された当該実行時間に基づいて前記下位階層のクラスタ群の実行時間を短縮すべく、前記下位階層のクラスタ群の更に下位階層に位置する並列実行可能な2以上の前記クラスタに、または前記クラスタ群に、割り当てるべきプロセッサ・コアの個数を選択していくことにより、各々の前記クラスタに割り当てるプロセッサ・コアの個数を選択して、前記メモリに格納する
    請求項1に記載のコンパイラ装置。
  4. 前記クラスタ生成部は、前記記録部に記録された前記実行コア数に基づき、複数の前記クラスタの各々をノードとし、実行順序に依存関係を有する複数のクラスタに対応する複数のノードの上位階層に、当該複数のクラスタが逐次に実行すべき逐次実行部分である旨を示すノードを当該コンパイラ装置のプロセッサの動作により生成し、並列に実行可能な複数のクラスタに対応する複数のノードの上位階層に、当該複数のクラスタが並列に実行可能な並列実行部分である旨を示すノードを当該コンパイラ装置のプロセッサの動作により生成し、更に、
    実行順序に依存関係を有する複数の並列実行部分または逐次実行部分に対応する複数のノードの上位階層に、当該複数の並列実行部分または逐次実行部分が更に逐次実行部分である旨を示すノードを当該コンパイラ装置のプロセッサの動作により生成し、または、並列に実行可能な複数の並列実行部分または逐次実行部分に対応する複数のノードの上位階層に、当該複数の並列実行部分または逐次実行部分が更に並列実行部分である旨を示すノードを当該コンパイラ装置のプロセッサの動作により生成することによりシリーズパラレル・グラフを当該コンパイラ装置のプロセッサの動作により生成して、前記メモリに格納し、
    前記コア数選択部は、前記メモリを当該コンパイラ装置のプロセッサの動作によりアクセスして、前記メモリに格納された前記実行時間に基づいて、逐次実行部分および並列実行部分の各々の実行時間を最適にするように当該部分を構成するクラスタ、逐次実行部分または並列実行部分の各々に割り当てるプロセッサ・コアの個数を選択する問題を部分問題とし、各々の部分問題を動的計画法によって解くことにより、前記対象プログラムの実行時間を最適にするために各々のクラスタに割り当てるプロセッサ・コアの個数を当該コンパイラ装置のプロセッサの動作により選択して、前記メモリに格納する
    請求項1に記載のコンパイラ装置。
  5. 検出された前記支配的パスの各々について、前記メモリを当該コンパイラ装置のプロセッサの動作によりアクセスして、前記対象プログラムにおいて、当該支配的パス中の何れかのタスクの処理に依存する他の実行パス中のタスクの処理に、当該支配的パス中の他のタスクが更に依存する循環性依存を当該コンパイラ装置のプロセッサの動作により検出する、循環性依存検出部を更に備え、
    前記クラスタ生成部は、検出された前記循環性依存の数がより少ない支配的パスを、他の支配的パスよりも優先して当該コンパイラ装置のプロセッサの動作により選択し、選択した当該支配的パスおよび他のタスクを含めたクラスタを当該コンパイラ装置のプロセッサの動作により生成して、前記メモリに格納する
    請求項1に記載のコンパイラ装置。
  6. 前記支配的パスの各々について、前記メモリを当該コンパイラ装置のプロセッサの動作によりアクセスして、前記対象プログラムにおいて、当該支配的パス中の何れかのタスクと直接データ転送するタスクを含む他の支配的パスである隣接パスを当該コンパイラ装置のプロセッサの動作により選択する、隣接パス選択部を更に備え、
    前記クラスタ生成部は、検出された前記循環性依存の数が各支配的パスについて同一であることを条件に、前記隣接パスの数がより少ない支配的パスを、他の支配的パスよりも優先して当該コンパイラ装置のプロセッサの動作により選択し、選択した当該支配的パスおよび他のタスクを含めたクラスタを当該コンパイラ装置のプロセッサの動作により生成して、前記メモリに格納する
    請求項5に記載のコンパイラ装置。
  7. 前記クラスタ生成部は、
    少なくとも1つの前記支配的パスについて、当該支配的パスと共にクラスタに含めるべきタスクの候補である候補タスクを当該コンパイラ装置のプロセッサの動作により選択する、候補選択部と、
    前記候補タスクを当該支配的パスと共にクラスタに含めた場合において、前記クラスタに含まれる支配的パスの総数を当該コンパイラ装置のプロセッサの動作により算出する、パス数算出部と、
    前記記録部に記録された前記実行コア数に基づき、算出された支配的パスの前記総数が前記実行コア数以下であることを条件に、前記候補タスクを含めて前記クラスタを当該コンパイラ装置のプロセッサの動作により生成して、前記メモリに格納するタスク追加部と
    を有し、
    前記候補選択部は、前記候補タスクが前記クラスタに追加されたことを条件に、更に他のタスクを前記クラスタに含めるべき他の候補タスクとして当該コンパイラ装置のプロセッサの動作により選択する
    請求項1に記載のコンパイラ装置。
  8. 前記メモリを当該コンパイラ装置のプロセッサの動作によりアクセスして、前記対象プログラムに基づき、選択された前記候補タスクが、前記クラスタ中の複数のタスクの各々と通信する通信量の和を当該コンパイラ装置のプロセッサの動作により算出する通信量算出部を更に備え、
    前記タスク追加部は、予め定められた基準値よりも前記通信量の和が大きいことを更に条件として、選択された前記候補タスクを含めて当該コンパイラ装置のプロセッサの動作により前記クラスタを生成する
    請求項7に記載のコンパイラ装置。
  9. 前記メモリを当該コンパイラ装置のプロセッサの動作によりアクセスして、前記対象プログラムに基づき、選択された前記候補タスクを当該支配的パスと共に前記クラスタに含めた場合において前記クラスタ中のタスクを前記実行コア数のプロセッサ・コアで実行した場合に前記マルチコア・プロセッサがアイドル状態となる時間の割合を当該コンパイラ装置のプロセッサの動作により算出する、アイドル割合算出部を更に備え、
    前記タスク追加部は、予め定められた基準値よりも前記アイドル状態となる時間の割合が小さいことを更に条件として、選択された前記候補タスクを含めて前記クラスタを当該コンパイラ装置のプロセッサの動作により生成して、前記メモリに格納する
    請求項7に記載のコンパイラ装置。
  10. 前記時間算出部は、前記メモリを当該コンパイラ装置のプロセッサの動作によりアクセスして、前記メモリに格納されたクラスタ毎に、当該クラスタの実行時間を、当該クラスタ内から当該クラスタ外へのタスク切替、または、当該クラスタ外から当該クラスタ内へのタスク切替に、予め見積もられた最大所要時間を要すると見積もることによって当該コンパイラ装置のプロセッサの動作により算出し、前記メモリに格納する
    請求項1に記載のコンパイラ装置。
  11. 前記メモリを当該コンパイラ装置のプロセッサの動作によりアクセスして、前記メモリに格納された前記対象プログラム中の第1タスクについて、前記第1タスクの処理結果に依存する少なくとも1つの第2タスクを当該コンパイラ装置のプロセッサの動作により選択する、タスク選択部と、
    前記第1タスクおよび選択された前記第2タスクを異なるプロセッサ・コアで実行した場合のタスク切替時間と比較して、前記第2タスクを前記第1タスクの次に同一のプロセッサ・コアで実行した場合に短縮される前記タスク切替時間の短縮量を当該コンパイラ装置のプロセッサの動作により算出して、前記メモリに格納する短縮量算出部と
    を更に備え、
    前記パス検出部は、前記メモリに格納された前記短縮量に基づき、前記短縮量が最大となる第2タスクを前記第1タスクと共に前記支配的パスに含めて当該コンパイラ装置のプロセッサの動作により検出する
    請求項1に記載のコンパイラ装置。
  12. マイクロプロセッサ・チップ上に、それぞれが他のプロセッサ・コアとは独立にかつ並列に演算処理を行うことができる、複数のプロセッサ・コアを設けたマルチコア・プロセッサによる、コンパイルの対象プログラムの実行を、コンパイラ装置により最適化するコンパイル方法であって、
    前記コンパイラ装置が、前記マルチコア・プロセッサの有するプロセッサ・コアのうちで前記対象プログラムを実行するプロセッサ・コアの個数である実行コア数を記録している記録部と、前記対象プログラムを記憶するメモリとを有し、
    プロセッサが、前記メモリをアクセスして、前記対象プログラムの中から、それぞれが前記対象プログラムの処理の一部に対応する命令群である複数のタスクによる、処理の流れを示す実行パスのうち、第1タスクの処理結果に依存する複数の第2タスクの中から前記第1タスクと異なるプロセッサ・コアで実行した場合に対する同一のプロセッサ・コアで連続して実行した場合のタスク切替時間の短縮量を最大化する第2のタスクを選択して第1タスクと共に含めて構成した実行パスである支配的パスを検出するステップと、
    プロセッサが、前記記録部に記録された前記実行コア数に基づき、前記実行コア数以下の数の支配的パスを選択することにより前記マルチコア・プロセッサにおいて並列にまたは連続して実行すべき少なくとも1つのタスクをクラスタとして生成して、前記メモリに格納するステップと、
    プロセッサが、前記メモリをアクセスして、前記メモリに格納されたクラスタ毎に、前記実行コア数以下の自然数の中から選択した1つまたは複数の自然数の各々について、当該クラスタを当該自然数に等しい個数のプロセッサ・コアで実行した場合の実行時間を算出して、前記メモリに格納するステップと、
    プロセッサが、前記メモリをアクセスして、前記メモリに格納された前記実行時間に基づいて、前記対象プログラムの実行時間を短縮するべく各クラスタの実行のために割り当てるべきプロセッサ・コアの個数を選択して、前記メモリに格納するステップと
    を備える方法。
  13. マイクロプロセッサ・チップ上に、それぞれが他のプロセッサ・コアとは独立にかつ並列に演算処理を行うことができる、複数のプロセッサ・コアを設けたマルチコア・プロセッサによる、コンパイルの対象プログラムの実行を、最適化するコンパイラ装置として、情報処理システムを機能させるコンパイラ・プログラムであって、
    前記情報処理システムを、
    前記対象プログラムを記憶するメモリと、
    前記マルチコア・プロセッサが有するプロセッサ・コアのうち、前記対象プログラムを実行するプロセッサ・コアの個数である実行コア数を記録している、記録部と、
    前記メモリを当該コンパイラ装置のプロセッサの動作によりアクセスして、前記対象プログラムの中から、それぞれが前記対象プログラムの処理の一部に対応する命令群である複数のタスクによる、処理の流れを示す実行パスのうち、第1タスクの処理結果に依存する複数の第2タスクの中から前記第1タスクと異なるプロセッサ・コアで実行した場合に対する同一のプロセッサ・コアで連続して実行した場合のタスク切替時間の短縮量を最大化する第2のタスクを選択して第1タスクと共に含めて構成した実行パスである支配的パスを当該コンパイラ装置のプロセッサの動作により検出する、パス検出部と、
    前記記録部に記録された前記実行コア数に基づき、前記実行コア数以下の数の支配的パスを選択することにより前記マルチコア・プロセッサにおいて並列にまたは連続して実行すべき少なくとも1つのタスクをクラスタとして当該コンパイラ装置のプロセッサの動作により生成して、前記メモリに格納する、クラスタ生成部と、
    前記メモリを当該コンパイラ装置のプロセッサの動作によりアクセスして、前記メモリに格納されたクラスタ毎に、前記実行コア数以下の自然数の中から選択した1つまたは複数の自然数の各々について、当該クラスタを当該自然数に等しい個数のプロセッサ・コアで実行した場合の実行時間を当該コンパイラ装置のプロセッサの動作により算出して、前記メモリに格納する、時間算出部と、
    前記メモリを当該コンパイラ装置のプロセッサの動作によりアクセスして、前記メモリに格納された前記実行時間に基づいて、前記対象プログラムの実行時間を短縮するべく各クラスタの実行のために割り当てるべきプロセッサ・コアの個数を当該コンパイラ装置のプロセッサの動作により選択して、前記メモリに格納する、コア数選択部と
    して機能させるコンパイラ・プログラム。
JP2005232085A 2005-08-10 2005-08-10 コンパイラ、制御方法、およびコンパイラ・プログラム Expired - Fee Related JP3938387B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2005232085A JP3938387B2 (ja) 2005-08-10 2005-08-10 コンパイラ、制御方法、およびコンパイラ・プログラム
US11/463,496 US7503039B2 (en) 2005-08-10 2006-08-09 Preprocessor to improve the performance of message-passing-based parallel programs on virtualized multi-core processors

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005232085A JP3938387B2 (ja) 2005-08-10 2005-08-10 コンパイラ、制御方法、およびコンパイラ・プログラム

Publications (2)

Publication Number Publication Date
JP2007048052A JP2007048052A (ja) 2007-02-22
JP3938387B2 true JP3938387B2 (ja) 2007-06-27

Family

ID=37743998

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005232085A Expired - Fee Related JP3938387B2 (ja) 2005-08-10 2005-08-10 コンパイラ、制御方法、およびコンパイラ・プログラム

Country Status (2)

Country Link
US (1) US7503039B2 (ja)
JP (1) JP3938387B2 (ja)

Families Citing this family (141)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050132363A1 (en) * 2003-12-16 2005-06-16 Vijay Tewari Method, apparatus and system for optimizing context switching between virtual machines
US20050132367A1 (en) * 2003-12-16 2005-06-16 Vijay Tewari Method, apparatus and system for proxying, aggregating and optimizing virtual machine information for network-based management
US7735081B2 (en) * 2004-12-17 2010-06-08 Intel Corporation Method, apparatus and system for transparent unification of virtual machines
US9606821B2 (en) 2004-12-17 2017-03-28 Intel Corporation Virtual environment manager for creating and managing virtual machine environments
US20060143617A1 (en) * 2004-12-29 2006-06-29 Knauerhase Robert C Method, apparatus and system for dynamic allocation of virtual platform resources
JP4784827B2 (ja) * 2006-06-06 2011-10-05 学校法人早稲田大学 ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ
US8332925B2 (en) 2006-08-08 2012-12-11 A10 Networks, Inc. System and method for distributed multi-processing security gateway
US8079077B2 (en) * 2006-08-08 2011-12-13 A10 Networks, Inc. System and method for distributed multi-processing security gateway
US7954095B2 (en) * 2006-11-01 2011-05-31 International Business Machines Corporation Analysis and selection of optimal function implementations in massively parallel computer
US20080147221A1 (en) * 2006-12-13 2008-06-19 Garg Sukesh Grid modeling tool
US20080244222A1 (en) * 2007-03-30 2008-10-02 Intel Corporation Many-core processing using virtual processors
EP2176754B1 (en) 2007-06-26 2019-10-16 Softlife Projects Limited Doing Business as Applied Cytometry Systems System and method for optimizing data analysis
US7840703B2 (en) * 2007-08-27 2010-11-23 International Business Machines Corporation System and method for dynamically supporting indirect routing within a multi-tiered full-graph interconnect architecture
US7904590B2 (en) 2007-08-27 2011-03-08 International Business Machines Corporation Routing information through a data processing system implementing a multi-tiered full-graph interconnect architecture
US7769892B2 (en) 2007-08-27 2010-08-03 International Business Machines Corporation System and method for handling indirect routing of information between supernodes of a multi-tiered full-graph interconnect architecture
US7958183B2 (en) 2007-08-27 2011-06-07 International Business Machines Corporation Performing collective operations using software setup and partial software execution at leaf nodes in a multi-tiered full-graph interconnect architecture
US7958182B2 (en) 2007-08-27 2011-06-07 International Business Machines Corporation Providing full hardware support of collective operations in a multi-tiered full-graph interconnect architecture
US8185896B2 (en) * 2007-08-27 2012-05-22 International Business Machines Corporation Method for data processing using a multi-tiered full-graph interconnect architecture
US8014387B2 (en) * 2007-08-27 2011-09-06 International Business Machines Corporation Providing a fully non-blocking switch in a supernode of a multi-tiered full-graph interconnect architecture
US8108545B2 (en) 2007-08-27 2012-01-31 International Business Machines Corporation Packet coalescing in virtual channels of a data processing system in a multi-tiered full-graph interconnect architecture
US7769891B2 (en) * 2007-08-27 2010-08-03 International Business Machines Corporation System and method for providing multiple redundant direct routes between supernodes of a multi-tiered full-graph interconnect architecture
US8140731B2 (en) 2007-08-27 2012-03-20 International Business Machines Corporation System for data processing using a multi-tiered full-graph interconnect architecture
US7822889B2 (en) * 2007-08-27 2010-10-26 International Business Machines Corporation Direct/indirect transmission of information using a multi-tiered full-graph interconnect architecture
US7809970B2 (en) * 2007-08-27 2010-10-05 International Business Machines Corporation System and method for providing a high-speed message passing interface for barrier operations in a multi-tiered full-graph interconnect architecture
US7793158B2 (en) * 2007-08-27 2010-09-07 International Business Machines Corporation Providing reliability of communication between supernodes of a multi-tiered full-graph interconnect architecture
US7827428B2 (en) 2007-08-31 2010-11-02 International Business Machines Corporation System for providing a cluster-wide system clock in a multi-tiered full-graph interconnect architecture
US7921316B2 (en) 2007-09-11 2011-04-05 International Business Machines Corporation Cluster-wide system clock in a multi-tiered full-graph interconnect architecture
US8789031B2 (en) * 2007-09-18 2014-07-22 Intel Corporation Software constructed strands for execution on a multi-core architecture
JP5036523B2 (ja) * 2007-12-21 2012-09-26 三菱電機株式会社 プログラム並列化装置
US7779148B2 (en) 2008-02-01 2010-08-17 International Business Machines Corporation Dynamic routing based on information of not responded active source requests quantity received in broadcast heartbeat signal and stored in local data structure for other processor chips
US8077602B2 (en) * 2008-02-01 2011-12-13 International Business Machines Corporation Performing dynamic request routing based on broadcast queue depths
US20090198956A1 (en) * 2008-02-01 2009-08-06 Arimilli Lakshminarayana B System and Method for Data Processing Using a Low-Cost Two-Tier Full-Graph Interconnect Architecture
EP2257874A4 (en) 2008-03-27 2013-07-17 Rocketick Technologies Ltd DESIGN SIMULATION ON THE BASIS OF PARALLEL PROCESSORS
US8776030B2 (en) * 2008-04-09 2014-07-08 Nvidia Corporation Partitioning CUDA code for execution by a general purpose processor
US9678775B1 (en) * 2008-04-09 2017-06-13 Nvidia Corporation Allocating memory for local variables of a multi-threaded program for execution in a single-threaded environment
KR101118321B1 (ko) 2008-04-09 2012-03-09 엔비디아 코포레이션 리타게팅된 그래픽 프로세서 가속 코드의 범용 프로세서에 의한 실행
US8386664B2 (en) * 2008-05-22 2013-02-26 International Business Machines Corporation Reducing runtime coherency checking with global data flow analysis
US8281295B2 (en) * 2008-05-23 2012-10-02 International Business Machines Corporation Computer analysis and runtime coherency checking
US9032377B2 (en) 2008-07-10 2015-05-12 Rocketick Technologies Ltd. Efficient parallel computation of dependency problems
KR101607495B1 (ko) * 2008-07-10 2016-03-30 로케틱 테크놀로지즈 리미티드 디펜던시 문제의 효율적인 병렬 계산
US8285670B2 (en) 2008-07-22 2012-10-09 International Business Machines Corporation Dynamically maintaining coherency within live ranges of direct buffers
EP2352087A4 (en) * 2008-10-24 2012-08-08 Ibm PROCESS, SYSTEM AND PROGRAM FOR SOURCE COD PROCESSING
JP2010113482A (ja) * 2008-11-05 2010-05-20 Panasonic Corp 資源割付方法、プログラム、及び資源割付装置
US10621092B2 (en) 2008-11-24 2020-04-14 Intel Corporation Merging level cache and data cache units having indicator bits related to speculative execution
US9672019B2 (en) * 2008-11-24 2017-06-06 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
JP4629768B2 (ja) 2008-12-03 2011-02-09 インターナショナル・ビジネス・マシーンズ・コーポレーション 並列化処理方法、システム、及びプログラム
US8732714B2 (en) * 2008-12-08 2014-05-20 Kpit Technologies Limited Method for reorganizing tasks for optimization of resources
US9250973B2 (en) 2009-03-12 2016-02-02 Polycore Software, Inc. Apparatus and associated methodology of generating a multi-core communications topology
KR101610828B1 (ko) * 2009-09-23 2016-04-08 삼성전자주식회사 멀티코어 프로세서의 인터럽트 온/오프 관리 장치와 방법
JP4931978B2 (ja) * 2009-10-06 2012-05-16 インターナショナル・ビジネス・マシーンズ・コーポレーション 並列化処理方法、システム、及びプログラム
US9274851B2 (en) * 2009-11-25 2016-03-01 Brocade Communications Systems, Inc. Core-trunking across cores on physically separated processors allocated to a virtual machine based on configuration information including context information for virtual machines
US8417778B2 (en) * 2009-12-17 2013-04-09 International Business Machines Corporation Collective acceleration unit tree flow control and retransmit
JP5990466B2 (ja) * 2010-01-21 2016-09-14 スビラル・インコーポレーテッド ストリームに基づく演算を実装するための汎用複数コアシステムのための方法および装置
US8503289B2 (en) 2010-03-19 2013-08-06 Brocade Communications Systems, Inc. Synchronizing multicast information for linecards
US8516453B2 (en) * 2010-05-10 2013-08-20 International Business Machines Corporation Partition-based static analysis of computer software applications
US8495418B2 (en) 2010-07-23 2013-07-23 Brocade Communications Systems, Inc. Achieving ultra-high availability using a single CPU
US9104619B2 (en) 2010-07-23 2015-08-11 Brocade Communications Systems, Inc. Persisting data across warm boots
WO2012019111A2 (en) * 2010-08-06 2012-02-09 Frederick Furtek A method and apparatus for a compiler and related components for stream-based computations for a general-purpose, multiple-core system
US8863128B2 (en) * 2010-09-30 2014-10-14 Autodesk, Inc System and method for optimizing the evaluation of task dependency graphs
US8484642B2 (en) * 2010-11-17 2013-07-09 Intel Corporation Processor core selection based at least in part upon at least one inter-dependency
KR101738641B1 (ko) * 2010-12-17 2017-05-23 삼성전자주식회사 멀티 코어 시스템의 프로그램 컴파일 장치 및 방법
JP5178852B2 (ja) * 2011-01-12 2013-04-10 株式会社東芝 情報処理装置およびプログラム
CN102622208B (zh) * 2011-01-27 2015-06-10 中兴通讯股份有限公司 一种多核可重构处理器簇及其实现重构的方法
US9128748B2 (en) 2011-04-12 2015-09-08 Rocketick Technologies Ltd. Parallel simulation using multiple co-simulators
JP5737057B2 (ja) * 2011-08-19 2015-06-17 富士通株式会社 プログラム、ジョブスケジューリング方法、および情報処理装置
US9143335B2 (en) 2011-09-16 2015-09-22 Brocade Communications Systems, Inc. Multicast route cache system
US9417855B2 (en) 2011-09-30 2016-08-16 Intel Corporation Instruction and logic to perform dynamic binary translation
US20130125099A1 (en) * 2011-11-14 2013-05-16 Microsoft Corporation Modular compilation using partial compilers
US9118618B2 (en) 2012-03-29 2015-08-25 A10 Networks, Inc. Hardware-based packet editor
KR20130115574A (ko) * 2012-04-12 2013-10-22 삼성전자주식회사 단말기에서 태스크 스케줄링을 수행하는 방법 및 장치
JP2013235386A (ja) * 2012-05-08 2013-11-21 Internatl Business Mach Corp <Ibm> 最適化装置、最適化方法、及び最適化プログラム
US9596286B2 (en) 2012-05-25 2017-03-14 A10 Networks, Inc. Method to process HTTP header with hardware assistance
KR101975288B1 (ko) 2012-06-15 2019-05-07 삼성전자 주식회사 멀티 클러스터 프로세싱 시스템 및 그 구동 방법
US8793669B2 (en) * 2012-07-17 2014-07-29 Concurix Corporation Pattern extraction from executable code in message passing environments
US9244880B2 (en) * 2012-08-30 2016-01-26 Netspeed Systems Automatic construction of deadlock free interconnects
US10581763B2 (en) 2012-09-21 2020-03-03 Avago Technologies International Sales Pte. Limited High availability application messaging layer
US9203690B2 (en) 2012-09-24 2015-12-01 Brocade Communications Systems, Inc. Role based multicast messaging infrastructure
US9967106B2 (en) 2012-09-24 2018-05-08 Brocade Communications Systems LLC Role based multicast messaging infrastructure
US10021174B2 (en) 2012-09-25 2018-07-10 A10 Networks, Inc. Distributing service sessions
KR101692751B1 (ko) 2012-09-25 2017-01-04 에이10 네트워크스, 인코포레이티드 데이터망 부하 분산
US10467681B2 (en) * 2012-10-04 2019-11-05 Sap Se System, method, and medium for matching orders with incoming shipments
US8885510B2 (en) 2012-10-09 2014-11-11 Netspeed Systems Heterogeneous channel capacities in an interconnect
JP5714622B2 (ja) * 2013-02-21 2015-05-07 トヨタ自動車株式会社 制御装置
WO2014129354A1 (ja) 2013-02-21 2014-08-28 トヨタ自動車株式会社 制御装置の設計方法及び制御装置
US9582256B2 (en) * 2013-03-14 2017-02-28 Sas Institute Inc. Automated cooperative concurrency with minimal syntax
US9880842B2 (en) 2013-03-15 2018-01-30 Intel Corporation Using control flow data structures to direct and track instruction execution
US10027761B2 (en) 2013-05-03 2018-07-17 A10 Networks, Inc. Facilitating a secure 3 party network session by a network device
JP6303300B2 (ja) * 2013-06-25 2018-04-04 富士通株式会社 制御依頼方法、情報処理装置、システム、およびプログラム
US9471726B2 (en) 2013-07-25 2016-10-18 Netspeed Systems System level simulation in network on chip architecture
US9473388B2 (en) 2013-08-07 2016-10-18 Netspeed Systems Supporting multicast in NOC interconnect
WO2015039320A1 (en) * 2013-09-19 2015-03-26 Intel Corporation Techniques for distributed processing task portion assignment
US9891936B2 (en) 2013-09-27 2018-02-13 Intel Corporation Method and apparatus for page-level monitoring
US9195436B2 (en) * 2013-10-14 2015-11-24 Microsoft Technology Licensing, Llc Parallel dynamic programming through rank convergence
GB2521367A (en) * 2013-12-17 2015-06-24 Ibm Adaptable and extensible runtime and system for heterogeneous computer systems
US9699079B2 (en) 2013-12-30 2017-07-04 Netspeed Systems Streaming bridge design with host interfaces and network on chip (NoC) layers
US9473415B2 (en) 2014-02-20 2016-10-18 Netspeed Systems QoS in a system with end-to-end flow control and QoS aware buffer allocation
WO2015126543A1 (en) 2014-02-21 2015-08-27 3M Innovative Properties Company Method, apparatus and system for visible light communication
US10020979B1 (en) 2014-03-25 2018-07-10 A10 Networks, Inc. Allocating resources in multi-core computing environments
US9806943B2 (en) 2014-04-24 2017-10-31 A10 Networks, Inc. Enabling planned upgrade/downgrade of network devices without impacting network sessions
WO2015163506A1 (ko) * 2014-04-25 2015-10-29 전자부품연구원 그래픽 처리 장치의 동작을 위한 작업 할당 시스템 및 방법
US9742630B2 (en) 2014-09-22 2017-08-22 Netspeed Systems Configurable router for a network on chip (NoC)
US9571341B1 (en) 2014-10-01 2017-02-14 Netspeed Systems Clock gating for system-on-chip elements
US9619349B2 (en) 2014-10-14 2017-04-11 Brocade Communications Systems, Inc. Biasing active-standby determination
US9400683B2 (en) * 2014-10-16 2016-07-26 Sap Se Optimizing execution of processes
US9916187B2 (en) 2014-10-27 2018-03-13 Oracle International Corporation Graph database system that dynamically compiles and executes custom graph analytic programs written in high-level, imperative programming language
US10175885B2 (en) 2015-01-19 2019-01-08 Toshiba Memory Corporation Memory device managing data in accordance with command and non-transitory computer readable recording medium
CN105808444B (zh) * 2015-01-19 2019-01-01 东芝存储器株式会社 存储装置及非易失性存储器的控制方法
US9529643B2 (en) 2015-01-26 2016-12-27 Qualcomm Incorporated Method and system for accelerating task control flow
US9660942B2 (en) 2015-02-03 2017-05-23 Netspeed Systems Automatic buffer sizing for optimal network-on-chip design
US9444702B1 (en) 2015-02-06 2016-09-13 Netspeed Systems System and method for visualization of NoC performance based on simulation output
US9928204B2 (en) 2015-02-12 2018-03-27 Netspeed Systems, Inc. Transaction expansion for NoC simulation and NoC design
US9568970B1 (en) 2015-02-12 2017-02-14 Netspeed Systems, Inc. Hardware and software enabled implementation of power profile management instructions in system on chip
US10050843B2 (en) 2015-02-18 2018-08-14 Netspeed Systems Generation of network-on-chip layout based on user specified topological constraints
US10348563B2 (en) 2015-02-18 2019-07-09 Netspeed Systems, Inc. System-on-chip (SoC) optimization through transformation and generation of a network-on-chip (NoC) topology
JP6427054B2 (ja) * 2015-03-31 2018-11-21 株式会社デンソー 並列化コンパイル方法、及び並列化コンパイラ
EP3082038A1 (en) * 2015-04-15 2016-10-19 Hybridserver Tec AG Method, device and system for creating a massively parallelized executable object
US9864728B2 (en) 2015-05-29 2018-01-09 Netspeed Systems, Inc. Automatic generation of physically aware aggregation/distribution networks
US9825809B2 (en) 2015-05-29 2017-11-21 Netspeed Systems Dynamically configuring store-and-forward channels and cut-through channels in a network-on-chip
US10218580B2 (en) 2015-06-18 2019-02-26 Netspeed Systems Generating physically aware network-on-chip design from a physical system-on-chip specification
CN106325967B (zh) * 2015-06-30 2019-10-25 华为技术有限公司 一种硬件加速方法、编译器以及设备
CN108780565B (zh) 2016-03-24 2022-08-02 富士胶片株式会社 图像处理装置、图像处理方法及存储介质
US10506016B2 (en) 2016-05-19 2019-12-10 Oracle International Corporation Graph analytic engine that implements efficient transparent remote access over representational state transfer
US10592279B2 (en) * 2016-06-23 2020-03-17 Advanced Micro Devices, Inc. Multi-processor apparatus and method of detection and acceleration of lagging tasks
US10452124B2 (en) 2016-09-12 2019-10-22 Netspeed Systems, Inc. Systems and methods for facilitating low power on a network-on-chip
US20180159786A1 (en) 2016-12-02 2018-06-07 Netspeed Systems, Inc. Interface virtualization and fast path for network on chip
US10313269B2 (en) 2016-12-26 2019-06-04 Netspeed Systems, Inc. System and method for network on chip construction through machine learning
US10063496B2 (en) 2017-01-10 2018-08-28 Netspeed Systems Inc. Buffer sizing of a NoC through machine learning
US10084725B2 (en) 2017-01-11 2018-09-25 Netspeed Systems, Inc. Extracting features from a NoC for machine learning construction
US10469337B2 (en) 2017-02-01 2019-11-05 Netspeed Systems, Inc. Cost management against requirements for the generation of a NoC
US10298485B2 (en) 2017-02-06 2019-05-21 Netspeed Systems, Inc. Systems and methods for NoC construction
US10547514B2 (en) 2018-02-22 2020-01-28 Netspeed Systems, Inc. Automatic crossbar generation and router connections for network-on-chip (NOC) topology generation
US10983910B2 (en) 2018-02-22 2021-04-20 Netspeed Systems, Inc. Bandwidth weighting mechanism based network-on-chip (NoC) configuration
US11144457B2 (en) 2018-02-22 2021-10-12 Netspeed Systems, Inc. Enhanced page locality in network-on-chip (NoC) architectures
US10896476B2 (en) 2018-02-22 2021-01-19 Netspeed Systems, Inc. Repository of integration description of hardware intellectual property for NoC construction and SoC integration
KR102485935B1 (ko) * 2018-02-23 2023-01-10 삼성전자주식회사 전자 장치 및 그의 동작 방법
US11023377B2 (en) 2018-02-23 2021-06-01 Netspeed Systems, Inc. Application mapping on hardened network-on-chip (NoC) of field-programmable gate array (FPGA)
US11176302B2 (en) 2018-02-23 2021-11-16 Netspeed Systems, Inc. System on chip (SoC) builder
CN108613681A (zh) * 2018-05-14 2018-10-02 河海大学常州校区 大数据环境下基于迭代计算的路径规划分布式计算方法
CN109828837B (zh) * 2019-01-25 2022-10-21 桂林电子科技大学 基于最长路径优先的关联性任务调度方法
CN113439256A (zh) * 2019-02-26 2021-09-24 三菱电机株式会社 信息处理装置、信息处理方法和信息处理程序
CN111752700B (zh) * 2019-03-27 2023-08-25 杭州海康威视数字技术股份有限公司 一种处理器上的硬件选择方法和装置

Also Published As

Publication number Publication date
US7503039B2 (en) 2009-03-10
US20070038987A1 (en) 2007-02-15
JP2007048052A (ja) 2007-02-22

Similar Documents

Publication Publication Date Title
JP3938387B2 (ja) コンパイラ、制御方法、およびコンパイラ・プログラム
Ozdal et al. Energy efficient architecture for graph analytics accelerators
JP5711853B2 (ja) 異種コアの自動カーネル移行
JP5658365B2 (ja) ハイブリッド・コンピューティング環境における高スループット・コンピューティングの方法、システム及びプログラム
EP2707797B1 (en) Automatic load balancing for heterogeneous cores
US8214814B2 (en) Sharing compiler optimizations in a multi-node system
US9430353B2 (en) Analysis and visualization of concurrent thread execution on processor cores
JP7039631B2 (ja) アクセスリクエストを管理するための方法、装置、デバイス、および記憶媒体
US9336055B2 (en) Apparatus and method for predicting processing performance
US20090320003A1 (en) Sharing Compiler Optimizations in a Multi-Node System
TWI564810B (zh) 多核心處理器之晶粒內差異特性化技術
JP5966509B2 (ja) プログラム、コード生成方法および情報処理装置
JP4381459B1 (ja) 情報処理装置、粒度調整方法およびプログラム
Clemente-Castelló et al. Performance model of mapreduce iterative applications for hybrid cloud bursting
Makrani et al. A comprehensive memory analysis of data intensive workloads on server class architecture
CN115658277A (zh) 一种任务调度方法、装置及电子设备和存储介质
JP5321691B2 (ja) 並列計算装置、並列計算方法、および並列計算プログラム
TW201435576A (zh) 陷阱處理期間的協作執行緒陣列粒化內文切換
JP4908363B2 (ja) 情報処理装置、並列処理最適化方法およびプログラム
JP6051733B2 (ja) 制御システム、制御方法、及び、制御プログラム
US8732721B2 (en) Method for reducing trap overhead when executing a guest in a virtual machine
JP7131005B2 (ja) 情報処理装置、情報処理方法、及び情報処理プログラム
KR102365261B1 (ko) 전자시스템, 그 동작방법 및 그 메모리 장치의 동작방법
Minglani et al. Design space exploration for efficient computing in Solid State drives with the Storage Processing Unit
CN117076116A (zh) 一种基于嵌入式产品的内存优化方法及相关装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061107

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070111

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20070111

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

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20070307

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070320

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees