JP2009169862A - プログラム変換装置、方法、プログラムおよび記録媒体 - Google Patents
プログラム変換装置、方法、プログラムおよび記録媒体 Download PDFInfo
- Publication number
- JP2009169862A JP2009169862A JP2008009772A JP2008009772A JP2009169862A JP 2009169862 A JP2009169862 A JP 2009169862A JP 2008009772 A JP2008009772 A JP 2008009772A JP 2008009772 A JP2008009772 A JP 2008009772A JP 2009169862 A JP2009169862 A JP 2009169862A
- Authority
- JP
- Japan
- Prior art keywords
- processing
- program
- conversion apparatus
- request information
- processing units
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/314—Parallel programming languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/456—Parallelism detection
Abstract
【課題】並列化される処理単位に割り当てるべき処理性能をOSまたはスケジューラに指示する情報(例えば相対優先度)を付加する作業を効率化するプログラム変換装置を提供する。
【解決手段】本発明のプログラム変換装置は、目的プログラム201の全体または一部に対する要求性能を示す要求情報102を受け付ける要求情報入力部2と、並列化可能な複数の処理単位のうち少なくとも一つの処理量を算出し、要求情報102に示される要求性能を満たすように、前記複数の処理単位に分割する分割部3と、分割された処理単位のうち少なくとも一つに対する割り当てるべき処理性能をプロセッサに指示する指示情報ファイル204を生成する指示情報出力部4とを備える。
【選択図】図1
【解決手段】本発明のプログラム変換装置は、目的プログラム201の全体または一部に対する要求性能を示す要求情報102を受け付ける要求情報入力部2と、並列化可能な複数の処理単位のうち少なくとも一つの処理量を算出し、要求情報102に示される要求性能を満たすように、前記複数の処理単位に分割する分割部3と、分割された処理単位のうち少なくとも一つに対する割り当てるべき処理性能をプロセッサに指示する指示情報ファイル204を生成する指示情報出力部4とを備える。
【選択図】図1
Description
本発明は、C言語やアセンブリ言語で記述された入力プログラムを機械語の目的プログラムに変換するプログラム変換装置及び方法に関し、特に、並列化機能を有し、並列化により分割されるスレッド等の処理単位に対して自動的に性能を確保できる形でプログラムを変換することを可能とするプログラム変換装置、方法、プログラムおよび記録媒体に関する。
従来の並列化コンパイラは、入力プログラム内に明示的に指定された並列実行可能部分を複数の処理単位に分割するか、自動的に並列実行可能部分を検出して複数の処理単位に分割する。これらは並列化による処理速度の向上を目的としたものである。
メディア処理の実行環境では、処理性能の保証が重要とされる。処理性能の保証とは、一定時間内にあるタスクが完了することを保証することである。処理性能を保証するために、プログラマはタスクに相対優先度を設定する。相対優先度が設定されたタスクは、性能保証タスクとして、オペレーティングシステムもしくはハードウェアのスケジューラによって、相対優先度に応じた時間割り当てが行なわれる。これにより、性能保証タスクは他のタスクに影響を受けることなく、割り当てられた時間は実行環境を優先的に使用することができるため、処理性能が保証される。
メディア処理の実行環境における並列化では、処理速度の向上よりも処理性能の保証が重要とされる。性能保証タスクに対して並列化を行なうと、複数の処理単位に分割されるため、処理性能が保証できなくなる。そのため、分割されるそれぞれの処理単位に対して、相対優先度を付加しなければならない。
これに対して、従来は、例えば特許文献1のようにプログラムの指定区間に対して相対優先度を与えることにより、該当区間を自動的にタスクに分割して相対優先度を付加する方法があった。
特開2006−126977号公報
従来の手法では、プログラマが並列化によって分割されるそれぞれの処理単位に対して、相対優先度を付加する。相対優先度は目的プログラムがプログラマの要求する処理性能を保証できる値でなければならない。そのため、処理単位に対して相対優先度を付加するには、各処理単位の処理量を求め、その処理量に応じて相対優先度を付加しなければならない。しかし、並列化によって分割された処理単位には、並列化コンパイラによって並列に実行するために必要な処理が追加される。この追加された処理にかかる処理量を並列化のオーバヘッドと呼ぶ。処理単位の処理量を求める際は、この並列化のオーバヘッドも考慮しなければならない。そのため、ソースコードから各処理単位の処理量を求めるのは大変困難となっており、プログラマはトライアンドエラーを繰り返して、要求する処理性能を保証できる相対優先度を求めるしか方法がなく、大変な時間を要する。その上、前記方法で求めた相対優先度は、処理性能を最低限保証する相対優先度であり、スケジューラが余剰な時間を割り当ててしまう、精度の低い相対優先度である可能性が高い。
本発明の目的は、並列化される処理単位に割り当てるべき処理性能をOSまたはスケジューラに指示する情報(例えば相対優先度)を付加する作業を効率化するプログラム変換装置方法、プログラムおよび記録媒体を提供することを目的とする。
また、本発明の他の目的は、並列化される処理単位に割り当てるべき処理性能をOSまたはスケジューラに指示する情報の精度を向上させるプログラム変換装置方法、プログラムおよび記録媒体を提供することを目的とする。
上記目的を達成するために、本発明に係るプログラム変換装置は、入力プログラムを目的プログラムに変換するプログラム変換装置であって、前記入力プログラムの少なくとも一部を並列化可能な複数の処理単位に分割する分割手段と、前記複数の処理単位のうち少なくとも一つに対して割り当てるべき処理性能をプロセッサに指示する指示情報を生成する生成手段とを備えることを特徴とする。
この構成によれば、前記入力プログラムを変換する際に、並列化される処理単位に割り当てるべき処理性能をOSまたはスケジューラに指示する指示情報(例えば相対優先度)を付加する作業の効率を向上させることができる。
ここで、前記分割手段は、さらに、前記複数の処理単位のうち少なくとも一つの処理量を算出し、前記生成手段は、前記分割手段により算出された処理量に従って前記指示情報を生成するようにしてもよい。
この構成によれば、分割手段に算出された処理量に従って前記指示情報を生成でき、処理単位に対する指示情報を決定する効率が向上する。
ここで、前記プログラム変換装置は、さらに、目的プログラムの全体または一部に対する要求性能を示す要求情報を受け付ける受付手段を備え、前記分割手段は、さらに、前記要求情報に示される要求性能を満たすように、前記複数の処理単位に分割するようにしてもよい。
この構成によれば、プログラマが要求情報を作成しておくだけで、前記目的プログラムの全体または一部に対するプログラマの要求を満たす指示情報を生成でき、処理単位に対する処理性能を設定する作業の効率化と指示情報の精度を向上させることができる。
ここで、前記分割手段は、並列化可能な複数の分割箇所を決定する決定部と、前記複数の分割箇所のうち少なくとも1つの分割箇所の処理量を算出する算出部と、算出された前記処理量が前記要求情報に示される要求性能を満たすか否か判定する判定部と、前記判定部によって満たすと判定されたとき、前記複数の分割箇所に従って前記入力プログラムの少なくとも一部を、複数の処理単位に分割する分割処理部とを備え、前記決定部は、前記判定部によって前記処理量が前記要求性能を満たさないと判定されたとき、前記分割箇所を変更するようにしてもよい。
この構成によれば、並列化される処理単位に割り当てるべき処理性能を設定するためのプログラマのトライアンドエラー作業を大幅に削減することができる。
ここで、前記分割手段は、複数の処理単位のために生じるオーバヘッドを含めた処理量を算出するようにしてもよい。
この構成によれば、前記複数の処理単位のうち、前記入力プログラムを変換する際に前記プログラム変換装置が保有する情報で処理量が決定する処理単位に対して、並列化のオーバヘッドを考慮した処理単位ごとの指示情報を生成でき、並列化される処理単位に割り当てるべき処理性能の精度が向上する。
ここで、前記分割手段は、前記入力プログラムに付加されたプロファイル情報に基づいて前記処理量を算出するようにしてもよい。
これによって、前記入力プログラムを変換する際に前記プログラム変換装置が保有していない情報によって処理量が決定する処理単位に対しても、並列化のオーバヘッドを考慮した処理単位ごとの指示情報を生成でき、算出される処理量の精度が向上する。
ここで、前記分割手段は、前記入力プログラムに付加されたヒント情報に基づいて前記処理量を算出するようにしてもよい。
ここで、前記ヒント情報は、前記複数の処理単位の全部または一部の処理にかかるサイクル数に関する情報であってもよい。
ここで、前記ヒント情報は、前記目的プログラム全体の処理量に対する、前記複数の処理単位の全部または一部の処理量の割合に関連してもよい。
ここで、前記ヒント情報は、前記目的プログラムの実行時に値が決定する前記入力プログラム内の変数の値に関する情報であってもよい。
これによって、ヒント情報が付加された処理単位の処理量を求める時間を短縮でき、変換速度が向上する。さらに、前記入力プログラムを変換する際に前記プログラム変換装置が保有していない情報によって処理量が決定する処理単位に対してヒント情報が付加された場合は、指示情報が出力できるようになり、処理単位に対する相対優先度を決定する効率と相対優先度の精度が向上する。
ここで、前記決定部は、前記分割箇所を変更できないとき、その旨を示すメッセージを出力してもよい。
これによって、目的プログラムを実行することなく、期待する処理性能を満たさないことが確認でき、処理単位に対して指示情報を設定する作業効率が向上する。
ここで、前記指示情報は、前記複数の処理単位の全部または一部の処理にかかるサイクル数に関する情報であってもよい。
ここで、前記指示情報は、前記複数の処理単位の全部または一部の処理にかかる時間に関連してもよい。
ここで、前記指示情報は、全体の処理量に対する、前記複数の処理単位の全部または一部の処理量の割合に関する情報であってもよい。
ここで、前記指示情報は、前記複数の処理単位の全部または一部の優先度に関連してもよい。
ここで、前記指示情報は、前記複数の処理単位の全部または一部に割り当てるべき処理量に関する情報であってもよい。
これによって、指示情報の精度を向上させ、ひいては処理単位に割り当てるべき処理性能の精度を向上させることができる。
ここで、前記生成手段は、前記指示情報をファイルとして出力してもよい。
これによって、プログラマはファイル中の指示情報を見ることができ、指示情報がファイルなので、プログラマによる修正を容易にする。
これによって、プログラマはファイル中の指示情報を見ることができ、指示情報がファイルなので、プログラマによる修正を容易にする。
ここで、前記生成手段は、前記指示情報を前記目的プログラムの一部分として出力してもよい。
これによって、プログラマはプログラム中の指示情報を見ることができ、プログラマによる修正を容易にする。また、指示情報を目的プログラムにまとめて配置すればプログラマは前記目的プログラムのみを管理すればよいため、プログラムファイルの管理が容易になる。また、前記複数の処理単位の全部または一部に対する前記指示情報をそれぞれ前記目的プログラム内に分けて配置すれば、スケジューラは前記目的プログラム内の処理単位の実行時に、前記目的プログラム内を検索することなく指示情報を取得することができるため、スケジューラの処理速度が向上する。
ここで、前記要求情報は、二つ以上の処理単位に対する性能要求であってもよい。
ここで、前記要求情報は、前記目的プログラムの全体または一部の処理にかかるサイクル数の上限値に関する情報であってもよい。
ここで、前記要求情報は、前記目的プログラムの全体または一部の処理にかかるサイクル数の上限値に関する情報であってもよい。
これによって、処理単位に対する、要求情報が示すサイクル数を満たした相対優先度を決定する効率が向上する。
ここで、前記要求情報は、前記目的プログラムの全体または一部の処理にかかる時間の上限値に関する情報であってもよい。
これによって、処理単位に対する、要求する処理時間を満たした相対優先度を決定する効率が向上する。
ここで、前記要求情報は、前記目的プログラムの全体または一部の処理の命令数の上限値に関する情報であってもよい。
これによって、処理単位に対する、要求情報が示す命令数を満たした相対優先度を決定する効率が向上する。
ここで、前記要求情報は、前記目的プログラムの全体または一部の処理のコードサイズの上限値に関する情報であってもよい。
これによって、処理単位に対する、要求情報が示すコードサイズを満たした相対優先度を決定する効率が向上する。
ここで、要求情報は、前記複数の処理単位の全部または一部に割り当てるべき処理性能の割合の上限値に関する情報であってもよい。
これによって、目的プログラムの全体または一部の処理を情報が示す割り当て性能の範囲内で処理することを可能とする相対優先度を決定する効率が向上する。
ここで、前記要求情報は、前記目的プログラムの全体または一部で使用するハードウェア資源の使用量の上限値に関する情報であってもよい。
これによって、処理単位に対する、要求情報が示すハードウェア資源の使用量を満たした相対優先度を決定する効率が向上する。
ここで、前記要求情報は、前記目的プログラムの全体または一部の処理フローを制御する情報に関する情報であってもよい。
これによって、処理単位に対する、前記目的プログラムの全体または一部の処理フローを実行する際の処理性能を決定する効率が向上する。
なお、本発明は、このような特徴的な機能を有するプログラム変換装置として実現することができるだけでなく、当該プログラム変換装置に含まれる特徴的な機能をステップとするプログラム変換方法として実現したり、当該プログラム変換装置に含まれる特徴的な機能をコンピュータに実行させるコンパイラとして実現したりすることもできる。そして、そのようなコンパイラは、Compact Disc-Read Only Memory (CD-ROM)などの記録媒体やインターネット等の伝送媒体を介して流通させることができるのは言うまでもない。
並列化によって分割される各処理単位の処理量に対応した指示情報を出力することにより、それぞれの処理単位に割り当てるべき処理性能を決定する作業効率と、処理単位に割り当てるべき処理性能の精度が向上する。
以下、図面を参照しながら本発明の実施の形態に係るコンパイラシステムについて説明する。
図1は、本発明に係るコンパイラシステム1の構成を示すブロック図である。
コンパイラシステム1は、要求情報入力部2と、分割部3と、指示情報出力部4とにより構成される。
コンパイラシステム1は、要求情報入力部2と、分割部3と、指示情報出力部4とにより構成される。
要求情報入力部2は、目的プログラム201の全体または一部に対する要求性能を示す要求情報102を受け付ける受付手段として機能する。ここで、要求情報102は、並列化すべき処理単位に対して割り当てるべき性能要求を示す。例えば、要求情報102は、目的プログラム201の全体または一部の処理にかかるサイクル数の上限値、目的プログラム201の全体または一部の処理にかかる時間の上限値、前記目的プログラムの全体または一部の処理の命令数の上限値、前記目的プログラムの全体または一部の処理のコードサイズの上限値、前記複数の処理単位の全部または一部に割り当てるべき処理性能の割合の上限値に、前記目的プログラムの全体または一部で使用するハードウェア資源の使用量の上限値、前記目的プログラムの全体または一部の処理フローを制御する情報等の1つ以上を含む。
分割部3は、入力プログラムの少なくとも一部を並列化可能な複数の処理単位に分割する。その際、分割部3は、並列化可能な複数の処理単位のうち少なくとも一つの処理量を算出し、要求情報102に示される要求性能を満たすように、前記複数の処理単位に分割する。より具体的には、分割部3は、並列化可能な複数の分割箇所を決定し、前記複数の分割箇所のうち少なくとも1つの分割箇所の処理量を算出し、算出された処理量が要求情報102に示される要求性能を満たすか否か判定し、満たすと判定したとき、当該複数の分割箇所に従って前記入力プログラムの少なくとも一部を、複数の処理単位に分割する。また、満たさないと判定したときは、分割箇所を変更して、再度処理量の算出から繰り返す。
指示情報出力部4は、前記複数の処理単位のうち少なくとも一つに対する割り当てるべき処理性能をプロセッサに指示する指示情報を生成する生成手段として機能する。ここで、指示情報は、複数の処理単位の全部または一部の処理にかかるサイクル数、複数の処理単位の全部または一部の処理にかかる時間、複数の処理単位の全部または一部の処理量の割合の少なくとも1つに関し、OSまたはスケジューラによって解釈され複数の処理単位の全部または一部の処理のスケジューリングに適用される。同図では指示情報は指示情報ファイル204として生成される。
1. 要求情報入力部2
ここでは、入力プログラム101として、図2に示すようなC言語で記述されたものを例として説明する。ただし、本発明は言語や文法を規定するものではない。
ここでは、入力プログラム101として、図2に示すようなC言語で記述されたものを例として説明する。ただし、本発明は言語や文法を規定するものではない。
要求情報入力部2が入力プログラムに付加された要求情報102を取得する過程を図3のフローを用いて説明する。要求情報102を取得するためには、入力プログラムの字句解析を行い、予め定められた予約語を検出する必要があるが、本発明では字句解析の方法については規定しない。ここでは、C言語のコンパイラへの指示行を示す“#pragma”を用い、要求情報と要求情報に対応する対応範囲の開始行と終端行を示す予約語を仮に“_req”、“_req_start”、“_req_end”とする。要求情報の種別を示す予約語を仮に、処理にかかるサイクル数の上限値を“cycle”、処理にかかる時間(単位はms)の上限値を“time”、処理の命令数の上限値を“instruction”、処理のコードサイズ(単位はbit)の上限値を“size”、システムの使用可能性能を1としたときの要求情報の対応範囲内の処理単位に割り当てる性能の上限値を“ratio”、使用するプロセッサの使用量の上限値を“processor”、使用するメモリの使用量(byte)の上限値を“memory”、処理フローを制御する情報を“path”の8種類とする。
ステップb001は、“#pragma _req(種別, 数値)”の行を検出し、種別と数値を要求情報として取得する。ステップb001は、“#pragma _req_start”を取得するまで繰り返す。
ステップb002は、“#pragma _req_start”から“#pragma _req_end”までの区間を要求情報に対応する対応範囲として取得する。
次にステップb003は、ステップb001にて取得した要求情報とステップb002にて取得した対応範囲を図4に示す要求情報リストに登録する。この登録時に、要求情報の種別に対応した図5に示す変換式を適用し、後に説明する分割部で使用する情報へ変換する。変換対象となる種別は、“time”、“instruction”の2種である。それぞれの変換式について説明する。“time”は1000で割り、単位を秒に変換した後、実行環境のプロセッサ周波数“frequency”をかけ、“cycle”に変換する。“time”と“cycle”の両方が付加された場合は、より要求が厳しい情報を要求情報リストに登録する。“instruction”は1命令のビット長“instruction bit”をかけ、“size”に変換する。“instruction”と“size”の両方が付加された場合は、より要求が厳しい情報を要求情報リストに登録する。これらの変換を行うことにより、要求情報リストに保持する情報が減るため、コンパイラシステム1のメモリ使用量を削減できる。
上記、ステップb001からステップb003を入力プログラム101の終端行まで繰り返し、要求情報の対応範囲ごとに要求情報リストを作成する。
図2のものを入力した場合の動作の具体例を説明する。
ステップb001は、a002〜a004で、種別である「time」と数値である「80」を要求情報a002、種別である「ratio」と数値である「0.1」を要求情報a003、種別である「processor」と数値である「2」を要求情報a004として取得する。
ステップb001は、a002〜a004で、種別である「time」と数値である「80」を要求情報a002、種別である「ratio」と数値である「0.1」を要求情報a003、種別である「processor」と数値である「2」を要求情報a004として取得する。
ステップb002は、a005の“#pragma _req_start”からa007の“#pragma _req_end”で囲まれたa006の関数「para_func()」を対応範囲として取得する。
ステップb003は、要求情報リストの対応範囲に「para_func()」を登録する。続いて、要求情報a002、要求情報a003、要求情報a004の登録を行う。要求情報a002の種別は“time”なので、変換対象となる。そのため、“time”を1000でわり、実行環境のプロセッサ周波数“frequency”(ここでは「50MHz」とする)をかけた数値「4,000,000」を“cycle”に登録する。要求情報a003、要求情報a004は、種別が“ratio”と“processor”で変換対象でないため、それぞれ“ratio”に「0.1」、“processor”に「2」を登録する。
図2のものには、終端行までの間に、他に要求情報の対応範囲が無いため、これで要求情報入力部2の処理は終了する。
なお、上記説明では、使用するハードウェア資源としてプロセッサとメモリを例として上げたが、これは使用するハードウェア資源をプロセッサとメモリに制限するものではない。
なお、上記図2のものを入力した例では、要求情報を入力プログラム内に“#pragma”を用いて記載したが、要求情報とその要求情報に対応する対応範囲は要求情報リストとして、入力ファイルとは別の要求情報ファイルに記載してもよい。その場合は入力プログラムと要求情報ファイルを入力とし、入力プログラムに対しては通常の字句解析を行い、要求情報入力部は要求情報ファイルの内容を、要求情報リストに登録すればよい。このようにファイルを分けることにより、入力プログラムを書き換えずにすむため、入力ファイルの流用性が高くなる利点がある。その一方、ファイルが複数になることによる、構成管理の手間が増えるという欠点もある。
なお、ステップb003で要求情報リストの種別を8項目に拡張し、種別に応じた要求情報の変換を行わず、そのまま登録してもよい。その場合は、後に説明する分割部3で変換を行えばよい。ただし、要求情報リストに保持する情報が増えるため、コンパイラシステム1のメモリ使用量が増加する欠点がある。
なお、ステップb003で1命令のビット長が固定ではなく、可変である場合は要求情報取得時に“instruction”を“size”に変換することができない。このような場合は、要求情報リストに“instruction”の項目を追加し、要求情報の対応範囲の命令列が決定した後、“size”に変換すればよい。
なお、図4では要求情報リストの種別に6項目を記載しているが、この項目はコンパイラシステム1が要求情報として入力可能とする種別に応じて増減させても良い。これにより、新しく要求情報の種別が追加された場合にも柔軟に対応できる。また、種別の項目数を可変とし、入力された要求情報の種別に応じて項目を決定しても良い。これにより、入力されなかった種別の項目が必要なくなり、コンパイラシステム1のメモリ使用量を削減できる。
2. 分割部3
分割部3が並列実行可能部分を複数の処理単位に分割する過程を図6のフローを用いて説明する。
分割部3が並列実行可能部分を複数の処理単位に分割する過程を図6のフローを用いて説明する。
ステップe001は、入力プログラム101内の処理単位に分割可能な並列実行可能部分を決定する。並列実行可能部分の決定方法は、従来の並列化コンパイラと同様に入力プログラム内に明示的に指定された並列実行可能部分を検出したり、自動的に並列実行可能部分を検出したりすればよい。本発明では、並列実行可能部分の決定方法については規定しない。ステップe001では、処理単位の分割は行わず、分割はステップe006で行う。ステップe002〜e005では、分割後の処理単位を想定して処理を行う。
ステップe002は、ステップe001で決定した分割する処理単位ごとの処理量を求める。ここでの処理量とは、分割する処理単位の処理に必要とするサイクル数である。分割する処理単位の処理量は、分割する処理単位の理想サイクル数と並列化のオーバヘッドから求めることが可能である。理想サイクル数とは、分割する処理単位内の命令列と各命令にかかるサイクル数から求めたサイクル数である。処理単位に追加される並列実行に必要な処理は、処理単位の生成・開放、処理単位間の同期といった、あらかじめ決められた処理であるため、並列化のオーバヘッドはコンパイラシステム1の内部に必要サイクル数を保持しておき、分割する処理単位の処理量を求める際に加算すればよい。
分割する処理単位の制御の流れが、目的プログラム201の実行時に値が決定する変数に依存する場合、上記の方法では処理量を求めることができない。このような場合は、目的プログラム201のプロファイル情報を利用するか、入力プログラム101に付加されたヒント情報を利用することで、処理量を求めることができる。
まず、プロファイル情報を利用する方法について説明する。プロファイル情報とは、目的プログラムを実際の実行環境もしくはシミュレータ上で実行して得られる情報である。本発明では、プロファイル情報の取得方法については規定しない。プロファイル情報が利用できる場合、ステップe002は、分割する処理単位ごとの処理量をプロファイル情報から取得すればよい。
次にヒント情報利用する方法について説明する。ヒント情報とは、目的プログラムを実行させることなく、プログラマが把握している情報である。本発明では、ヒント情報の記載方法については規定しないが、C言語のコンパイラへの指示行を示す“#pragma”を用いる方法がある。ヒント情報として分割する処理単位の一部または全部の処理に必要なサイクル数の場合は、サイクル数が記載されていない箇所の理想サイクル数を求めて、分割する処理単位の処理量を求める。ヒント情報として目的プログラム201に対する分割する処理単位の一部または全部の処理量の割合の場合は、分割する処理単位の一部または全部の処理量から目的プログラム201の処理量を求める。ヒント情報として実行時に値が決定する分割する処理単位内の変数の値の場合は、この値を用いて分割する処理単位の理想サイクル数を求める。
ステップe003は、処理単位分割後の目的プログラム201が、入力プログラム101に付加された要求情報102を満たすかどうかを判定する。この判定方法について説明する。
まず、分割する処理単位内の処理の一部もしくは全部が要求情報リストに登録されている対応範囲に含まれるかどうかを判定する。含まれる場合は要求情報の種別ごとに要求を満たすかどうかを判定する。要求情報の種別が“cycle”の場合は、分割する処理単位内の処理量から、要求情報を満たすかどうかを判定する。要求情報の種別が“size”の場合は、分割する処理単位内の命令数と1命令のビット長からサイズを求め、要求情報を満たすかどうかを判定する。要求情報の種別が“ratio”の場合は、分割する処理単位の処理量が処理単位に対する割り当て性能の範囲内で処理可能かを判定する。要求情報の種別が“processor”の場合は、分割する処理単位の数と“processor”の値を比較し、要求情報を満たすかどうかを判定する。要求情報の種別が“memory”の場合は、分割する処理単位内で使用するメモリ使用量を求め、要求情報を満たすかどうかを判定する。要求情報の種別が“path”の場合は、“path”に指定された処理フローの場合に他の要求情報を満たすかどうかを判定する。以上の判定をすべての分割する処理単位と要求情報リストに対して繰り返す。
ステップe003で、要求情報を満たす場合は、ステップe006を実施する。要求情報を満たさない場合は、ステップe004を実施する。
ステップe004は、満たさなかった要求情報に応じて、分割方法を変更する。満たさなかった要求情報の種別が“cycle”の場合、並列に実行する処理単位の数を増加させることにより、処理単位あたりの処理量を削減する。満たさなかった要求情報の種別が“size”の場合、分割する処理単位の数を減らすことにより、分割する処理単位に追加される並列実行に必要な処理を減らし、コードサイズを削減する。満たさなかった要求情報の種別が“ratio”の場合、“cycle”の場合と同様に並列に実行する処理単位の数を増加させることにより、処理単位あたりの処理量を削減する。満たさなかった要求情報の種別が“processor”の場合、並列に実行する処理単位の数を減少させる。満たさなかった要求情報の種別が“memory”の場合は、“size”の場合と同様に分割する処理単位の数を減らすことにより、分割する処理単位ごとに使用するメモリ使用量を削減する。
ステップe004で、分割方法が変更できた場合は、ステップe002に戻り、再度処理量を求め、ステップe003で要求情報を満たすかどうかを判定する。分割方法を変更できない場合は、ステップe005を実施する。ステップe002〜e004を繰り返すうちに一度実施した分割方法になる場合や、要求情報が矛盾し満たすことができない場合もステップe005を実施する。
ステップe005は、満たさなかった要求情報についてメッセージを出力する。このメッセージにより、プログラマは見直す要求情報の特定が容易になる。
ステップe006は、処理単位を分割する。処理単位の分割方法に関しても、従来の並列化コンパイラと同様の方法でよいため、本発明では、処理単位の分割方法については規定しない。
図2のものを入力した場合の動作の具体例を説明する。
ここでは、C言語のコンパイラへの指示行を示す“#pragma”を用い、並列実行可能部分の指示を示す予約語を仮に“_para_sections”とし、“#pragma _para_sections”の検出行に続く“{”から、対応する“}”までを並列実行可能部分とする。並列実行可能部分内の分割箇所を示す予約語を仮に“_para_section”とし、“#pragma _para_section”の検出行に続く“{”から、対応する“}”までを分割箇所とする。
ここでは、C言語のコンパイラへの指示行を示す“#pragma”を用い、並列実行可能部分の指示を示す予約語を仮に“_para_sections”とし、“#pragma _para_sections”の検出行に続く“{”から、対応する“}”までを並列実行可能部分とする。並列実行可能部分内の分割箇所を示す予約語を仮に“_para_section”とし、“#pragma _para_section”の検出行に続く“{”から、対応する“}”までを分割箇所とする。
ステップe001は、a008の“#pragma _para_sections”に続く“{”から、対応する“}”までのa001を並列実行可能部分として検出する。次に、並列実行可能部分a001内のa009、a010、a011の各“#pragma _para_section”に続く、“{”から、対応する“}”までを分割箇所a012、a013、a014として検出する。続いて、検出した分割箇所a012、a013、a014を処理単位に分割する箇所として決定する。
ステップe002は、ステップe001で処理単位に分割する箇所として決定した分割箇所a012、a013、a014の処理量を求める。ここでは、並列化のオーバヘッドを「100,000cycle」とし、a012の理想サイクル数を「2,400,000cycle」、a013の理想サイクル数を「1,700,000cycle」、a014の理想サイクル数を「1,100,000cycle」とする。また、要求情報の対応範囲であるa006の「para_func()」から並列実行可能部分a001を除いた逐次実行部分の理想サイクル数を「500,000cycle」とする。
ステップe003は、要求情報リストの対応範囲にa012、a013、a014が含まれるかを判定する。要求情報の対応範囲であるa006の「para_func()」にa012、a013、a014が含まれるので、並列実行可能部分a001内の分割箇所を処理単位に分割後の「para_func()」が要求を満たすかどうかを判定する。
並列実行可能部分a001内の分割箇所を処理単位に分割後の「para_func()」の実行イメージを図7に示す。「para_func()」の並列実行可能部分の前後の逐次実行部分とa012をあわせた処理単位を“main”、a013、a014をそれぞれ処理単位に分割したものを“sub1”、“sub2”で示し、並列化のオーバヘッドを“OH”で示す。「para_func()」は“プロセッサ1”で実行を開始し、並列実行部分の処理に移る際に処理単位“sub1”、“sub2”がそれぞれ“プロセッサ2”、“プロセッサ3”で起動され、“main”、“sub1”、“sub2”が並列に処理される。並列実行部分の処理が完了後、“プロセッサ1”で“main”の残りの逐次実行部分が処理される。
ステップe002で求めた処理量から、処理単位“main”の並列実行部分、“sub2”、“sub3”の処理量はそれぞれ「2,500,000cycle」、「1,800,000cycle」、「1,200,000cycle」であることが分かる。“main”の逐次実行部分の処理量は「500,000cycle」であるので、「para_func()」全体の処理量は「3,000,000cycle」である。「para_func()」に対する要求情報は、“cycle”の「4,000,000」、“ratio”の「0.1」、“processor”の「2」である。「para_func()」全体の処理量は「3,000,000cycle」であるので、“cycle”の要求を満たしている。ここでは、システムの使用可能性能はプロセッサ周波数“frequency”と同じ「50MHz」とする。“ratio”は「0.1」であるので、プロセッサごとの割り当て性能は「5MHz」となり、1秒あたり「5,000,000cycle」となる。処理単位“main”、“sub1”、“sub2”の処理量は、「5,000,000cycle」以内であるので、“ratio”の要求を満たしている。ステップe001で処理単位を“main”、“sub1”、“sub2”に分割したため、3つのプロセッサを使用する。これは、“processor”の要求を満たさない。要求情報を満たさないため、ステップe004を実施する。
ステップe004は、ステップe003で満たさなかった“processor”の要求を満たすように処理単位の分割方法を変更する。“processor”の要求は「2」であるので、2つの処理単位に変更する。処理量の少ない処理単位“sub1”、“sub2”を1つの処理単位に結合し、処理単位“sub”とする。分割方法を変更できたので、再度ステップe002を実施する。
2度目のステップe002は、ステップe004で変更した処理単位“sub”の処理量を求める。図8に分割方法の変更前と変更後の処理量を示す。処理単位“sub”の処理量は、a013、a014の理想サイクル数と並列化のオーバヘッドを足した「2,900,000cycle」となる。
2度目のステップe003は、分割方法変更後の「para_func()」が要求情報を満たすかどうかを判定する。分割方法変更後の「para_func()」の実行イメージを図9に示す。分割方法を変更したことにより、「para_func()」全体の処理量は「3,400,000cycle」となる。よって、“cycle”の要求を満たしている。次に、処理単位“main”、“sub”の処理量は、「5,000,000cycle」以内であるので、“ratio”の要求を満たしている。処理単位は“main”、“sub”の2つなので、“processor”の要求を満たしている。要求情報を満たしているので、ステップe006を実施する。
ステップe006は、「para_func()」の逐次実行部分とa012を処理単位“main”に、a013とa014 を処理単位“sub”に分割する。
以上で、分割部3の並列実行可能部分を複数の処理単位に分割する処理は終了する。
なお、上記説明では、処理単位の分割をステップe006で行なったが、ステップe001、ステップe004で分割箇所が決定する度に行なってもよい。ただし、分割方法の変更時に分割前の状態に戻す必要がある場合、余分に処理が必要となる欠点がある。また、分割前の状態を保持したまま、分割を行なうこともできるが、分割方法の変更の度にメモリ使用量が倍増する欠点がある。
なお、上記説明では、処理単位の分割をステップe006で行なったが、ステップe001、ステップe004で分割箇所が決定する度に行なってもよい。ただし、分割方法の変更時に分割前の状態に戻す必要がある場合、余分に処理が必要となる欠点がある。また、分割前の状態を保持したまま、分割を行なうこともできるが、分割方法の変更の度にメモリ使用量が倍増する欠点がある。
3. 指示情報出力部4
指示情報出力部4が処理単位ごとに指示情報を出力する過程を図10のフローを用いて説明する。ここでは、指示情報を目的プログラムとは別の指示情報ファイルに、すべての処理単位に対応する指示情報をまとめて出力するものとして説明する。
指示情報出力部4が処理単位ごとに指示情報を出力する過程を図10のフローを用いて説明する。ここでは、指示情報を目的プログラムとは別の指示情報ファイルに、すべての処理単位に対応する指示情報をまとめて出力するものとして説明する。
ステップj001は、目的プログラム内の処理単位ごとに、対応する指示情報を出力する。出力する指示情報は、処理単位を示す名前と分割部3のステップe002で求めた処理量を合わせて出力する。
オペレーティングシステムもしくはハードウェアのスケジューラは、指示情報ファイル内の指示情報を相対優先度として解釈し、目的プログラムのスケジューリングを行うことにより、処理性能を保証する。
図2のものを入力した場合の動作の具体例を説明する。
図2のものを入力した場合に指示情報出力部4が出力する指示情報ファイルを図11に示す。ここでは、指示情報の出力フォーマットとして、仮に“DI_QUANTUM(処理単位名, 指示情報)”で出力するものとする。
図2のものを入力した場合に指示情報出力部4が出力する指示情報ファイルを図11に示す。ここでは、指示情報の出力フォーマットとして、仮に“DI_QUANTUM(処理単位名, 指示情報)”で出力するものとする。
ステップj001は、まず目的プログラム内の処理単位“main”に対する指示情報を出力する。処理単位“main”の処理量は、「3,400,000cycle」であるので、k001のように“DI_QUANTUM(main, 3400000)”と出力する。続いて、処理単位“sub”に対する指示情報を出力する。処理単位“sub”の処理量は、「2,900,000cycle」であるので、k002のように“DI_QUANTUM(sub, 2900000)”と出力する。
以上で、指示情報出力部4が処理単位ごとに指示情報を出力する処理は終了する。
なお、上記説明では、指示情報を目的プログラムとは別の指示情報ファイルに、すべての処理単位に対応する指示情報をまとめて出力するものとして説明したが、本発明はこの出力方法に限定されるものではない。例えば、処理単位ごとに指示情報ファイルを分けて出力してもよいし、指示情報ファイルに出力するのではなく、目的プログラム内に出力してもよい。目的プログラム内に出力する場合は、指示情報をまとめて出力してもよいし、処理単位ごとに出力してもよい。
なお、上記説明では、指示情報を目的プログラムとは別の指示情報ファイルに、すべての処理単位に対応する指示情報をまとめて出力するものとして説明したが、本発明はこの出力方法に限定されるものではない。例えば、処理単位ごとに指示情報ファイルを分けて出力してもよいし、指示情報ファイルに出力するのではなく、目的プログラム内に出力してもよい。目的プログラム内に出力する場合は、指示情報をまとめて出力してもよいし、処理単位ごとに出力してもよい。
なお、上記説明では、すべての処理単位に対して指示情報を出力したが、処理量が求まらない場合は、一部の処理単位に対して指示情報を出力してもよい。
なお、上記説明では、指示情報としてサイクル数を出力したが、時間を示す値を出力してもよい。その場合は、時間[ms] = (サイクル数/プロセッサ周波数) * 1000で処理にかかる時間を求めることができる。
なお、上記説明では、指示情報としてサイクル数を出力したが、単位時間あたりのサイクル数を出力してもよい。その場合は、単位時間あたりのサイクル数 = サイクル数 * (1 / 単位時間) で求めることができる。
なお、上記説明では、指示情報としてサイクル数を出力したが、単位時間あたりの時間を示す値を出力してもよい。その場合は、単位時間あたりの時間[ms] = (サイクル数/プロセッサ周波数) * 1000 * (1 / 単位時間) で求めることができる。
なお、上記説明では、指示情報としてサイクル数を出力したが、目的プログラム全体の処理量に対する処理単位の処理量の割合を出力してもよい。
なお、上記説明では、指示情報としてサイクル数を出力したが、目的プログラムの実行環境の可能処理量に対する処理単位の処理量の割合を出力してもよい。
なお、上記説明では、指示情報としてサイクル数を出力したが、優先度を示す値を出力してもよい。優先度は、処理量の多い処理単位から順に高い優先度を示す値を設定すればよい。
なお、上記説明では、指示情報は相対優先度を一意に決定する情報であるものとして、オペレーティングシステムもしくはハードウェアのスケジューラは指示情報をそのまま相対優先度として使用したが、指示情報を相対優先度の決定のための参考値として使用してもよい。即ち、プログラマが目的プログラムの実行状況に応じて修正してもかまわないし、オペレーティングシステムもしくはハードウェアのスケジューラが扱いやすい指標に変更してもよい。
以上、本発明に係るコンパイラシステムおよびその構成要素について、実施の形態に基づいて説明したが、本発明はこの実施形態に限られない。即ち、
(1)上記実施の形態では、C言語向けのコンパイラシステムを想定していたが、本発明はC言語のみに限定されるものではない。他のプログラミング言語を採用した場合でも本発明の有意性は保たれる。
(2)上記実施の形態では、コンパイラシステムのみで構成されていたが、本発明はこの構成に限定されるものではない。例えば、より多くの構成要素・サブツールに分解されていてもよい。
(3)上記実施の形態では、入力プログラムに要求情報が付加されていることを想定していたが、要求情報が付加されていない入力プログラムに対して、処理単位に分割する場合も指示情報を出力しても良い。その場合は図1の要求情報102と要求情報入力部2は必要なく、図12のようにコンパイラシステムL1は、要求情報が付加されていない入力プログラムL101を入力とし、分割部L3で処理単位に分割する。分割部L3の処理フローを図13に示す。分割部L3は、ステップm001で処理単位に分割する箇所を決定し、ステップm002で分割する処理単位ごとの処理量を求める。ステップm003で処理単位に分割し、処理は終了する。指示情報出力部L4は、図1の指示情報出力部4と同様に、分割部L3で求めた処理量を指示情報L203として指示情報ファイルに出力すればよい。
本発明は、C言語やアセンブリ言語で記述されたソースプログラムを機械語プログラムに変換するコンパイラシステムに適用できる。
1 コンパイラシステム
2 要求情報入力部
3 分割部
4 指示情報出力部
101 入力プログラム
102 要求情報
201 目的プログラム
202 処理単位
203 指示情報
204 指示情報ファイル
2 要求情報入力部
3 分割部
4 指示情報出力部
101 入力プログラム
102 要求情報
201 目的プログラム
202 処理単位
203 指示情報
204 指示情報ファイル
Claims (29)
- 入力プログラムを目的プログラムに変換するプログラム変換装置であって、
前記入力プログラムの少なくとも一部を並列化可能な複数の処理単位に分割する分割手段と、
前記複数の処理単位のうち少なくとも一つに対して割り当てるべき処理性能をプロセッサに指示する指示情報を生成する生成手段と
を備えることを特徴とするプログラム変換装置。 - 前記分割手段は、さらに、前記複数の処理単位のうち少なくとも一つの処理量を算出し、
前記生成手段は、前記分割手段により算出された処理量に従って前記指示情報を生成する
ことを特徴とする請求項1記載のプログラム変換装置。 - 前記プログラム変換装置は、さらに、目的プログラムの全体または一部に対する要求性能を示す要求情報を受け付ける受付手段を備え、
前記分割手段は、さらに、前記要求情報に示される要求性能を満たすように、前記複数の処理単位に分割する
ことを特徴とする請求項1記載のプログラム変換装置。 - 前記分割手段は、
並列化可能な複数の分割箇所を決定する決定部と、
前記複数の分割箇所のうち少なくとも1つの分割箇所の処理量を算出する算出部と、
算出された前記処理量が前記要求情報に示される要求性能を満たすか否か判定する判定部と、
前記判定部によって満たすと判定されたとき、前記複数の分割箇所に従って前記入力プログラムの少なくとも一部を、複数の処理単位に分割する分割処理部と
を備え、
前記決定部は、前記判定部によって前記処理量が前記要求性能を満たさないと判定されたとき、前記分割箇所を変更する
ことを特徴とする請求項3記載のプログラム変換装置。 - 前記分割手段は、複数の処理単位のために生じるオーバヘッドを含めた処理量を算出することを特徴とする請求項2または3記載のプログラム変換装置。
- 前記分割手段は、前記入力プログラムに付加されたプロファイル情報に基づいて前記処理量を算出することを特徴とする請求項2から5の何れかに記載のプログラム変換装置。
- 前記分割手段は、前記入力プログラムに付加されたヒント情報に基づいて前記処理量を算出することを特徴とする請求項2から5の何れかに記載のプログラム変換装置。
- 前記ヒント情報は、前記複数の処理単位の全部または一部の処理にかかるサイクル数に関することを特徴とする請求項2から5の何れかに記載のプログラム変換装置。
- 前記ヒント情報は、前記目的プログラム全体の処理量に対する、前記複数の処理単位の全部または一部の処理量の割合に関することを特徴とする請求項2から5の何れかに記載のプログラム変換装置。
- 前記ヒント情報は、前記目的プログラムの実行時に値が決定する前記入力プログラム内の変数の値に関することを特徴とする請求項2から5の何れかに記載のプログラム変換装置。
- 前記決定部は、前記分割箇所を変更できないとき、その旨を示すメッセージを出力することを特徴とする請求項4に記載のプログラム変換装置。
- 前記指示情報は、前記複数の処理単位の全部または一部の処理にかかるサイクル数に関することを特徴とする請求項2から5の何れかに記載のプログラム変換装置。
- 前記指示情報は、前記複数の処理単位の全部または一部の処理にかかる時間に関することを特徴とする請求項2から5の何れかに記載のプログラム変換装置。
- 前記指示情報は、全体の処理量に対する、前記複数の処理単位の全部または一部の処理量の割合に関することを特徴とする請求項2から5の何れかに記載のプログラム変換装置。
- 前記指示情報は、前記複数の処理単位の全部または一部の優先度に関することを特徴とする請求項2から5の何れかに記載のプログラム変換装置。
- 前記指示情報は、前記複数の処理単位の全部または一部に割り当てるべき処理量に関することを特徴とする請求項2から5の何れかに記載のプログラム変換装置。
- 前記生成手段は、前記指示情報をファイルとして出力することを特徴とする請求項2から5の何れかに記載のプログラム変換装置。
- 前記生成手段は、前記指示情報を前記目的プログラムの一部分として出力することを特徴とする請求項2から5の何れかに記載のプログラム変換装置。
- 前記要求情報は、二つ以上の処理単位に対する性能要求であることを特徴とする請求項2から5の何れかに記載のプログラム変換装置。
- 前記要求情報は、前記目的プログラムの全体または一部の処理にかかるサイクル数の上限値に関することを特徴とする請求項2から5の何れかに記載のプログラム変換装置。
- 前記要求情報は、前記目的プログラムの全体または一部の処理にかかる時間の上限値に関することを特徴とする請求項2から5の何れかに記載のプログラム変換装置。
- 前記要求情報は、前記目的プログラムの全体または一部の処理の命令数の上限値に関することを特徴とする請求項2から5の何れかに記載のプログラム変換装置。
- 前記要求情報は、前記目的プログラムの全体または一部の処理のコードサイズの上限値に関することを特徴とする請求項2から5の何れかに記載のプログラム変換装置。
- 前記要求情報は、前記複数の処理単位の全部または一部に割り当てるべき処理性能の割合の上限値に関することを特徴とする請求項2から5の何れかに記載のプログラム変換装置。
- 前記要求情報は、前記目的プログラムの全体または一部で使用するハードウェア資源の使用量の上限値に関することを特徴とする請求項2から5の何れかに記載のプログラム変換装置。
- 前記要求情報は、前記目的プログラムの全体または一部の処理フローを制御する情報に関することを特徴とする請求項2から5の何れかに記載のプログラム変換装置。
- 入力プログラムを目的プログラムに変換するプログラム変換方法であって、
前記入力プログラムの少なくとも一部を、並列化可能な複数の処理単位に分割する分割ステップと、
前記複数の処理単位のうち少なくとも一つに対する割り当てるべき処理性能をプロセッサに指示する指示情報を生成する生成ステップと
を有することを特徴とするプログラム変換方法。 - 請求項27に記載のプログラム変換方法の各ステップをコンピュータに実行させることを特徴とするコンピュータ読み取り可能なプログラム。
- 請求項28に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008009772A JP2009169862A (ja) | 2008-01-18 | 2008-01-18 | プログラム変換装置、方法、プログラムおよび記録媒体 |
CN200910001723.2A CN101488094A (zh) | 2008-01-18 | 2009-01-06 | 程序转换装置、方法、程序以及记录介质 |
US12/355,214 US20090187895A1 (en) | 2008-01-18 | 2009-01-16 | Device, method, program, and recording medium for converting program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008009772A JP2009169862A (ja) | 2008-01-18 | 2008-01-18 | プログラム変換装置、方法、プログラムおよび記録媒体 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009169862A true JP2009169862A (ja) | 2009-07-30 |
Family
ID=40877470
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008009772A Pending JP2009169862A (ja) | 2008-01-18 | 2008-01-18 | プログラム変換装置、方法、プログラムおよび記録媒体 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20090187895A1 (ja) |
JP (1) | JP2009169862A (ja) |
CN (1) | CN101488094A (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5059174B2 (ja) * | 2010-08-10 | 2012-10-24 | 株式会社東芝 | プログラム変換装置、およびそのプログラム |
TWI507920B (zh) * | 2014-08-20 | 2015-11-11 | Quanta Comp Inc | 電子裝置及避免多個輸入裝置互相干擾的方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0744507A (ja) * | 1993-08-03 | 1995-02-14 | Agency Of Ind Science & Technol | 並列プログラムのコンパイル方法 |
JP2006243839A (ja) * | 2005-02-28 | 2006-09-14 | Toshiba Corp | 命令生成装置及び命令生成方法 |
JP2006260096A (ja) * | 2005-03-16 | 2006-09-28 | Matsushita Electric Ind Co Ltd | プログラム変換方法およびプログラム変換装置 |
JP2007328415A (ja) * | 2006-06-06 | 2007-12-20 | Univ Waseda | ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ |
JP2007328416A (ja) * | 2006-06-06 | 2007-12-20 | Univ Waseda | ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5659794A (en) * | 1995-03-31 | 1997-08-19 | Unisys Corporation | System architecture for improved network input/output processing |
JP2998612B2 (ja) * | 1995-06-06 | 2000-01-11 | ヤマハ株式会社 | 楽音発生装置 |
US5860137A (en) * | 1995-07-21 | 1999-01-12 | Emc Corporation | Dynamic load balancing |
US5687390A (en) * | 1995-11-14 | 1997-11-11 | Eccs, Inc. | Hierarchical queues within a storage array (RAID) controller |
JP3939189B2 (ja) * | 2002-04-17 | 2007-07-04 | パナソニック コミュニケーションズ株式会社 | 情報処理装置、製品の組立工程表示用プログラム、及び製品の組立工程表示方法 |
JP3840149B2 (ja) * | 2002-06-28 | 2006-11-01 | 株式会社東芝 | コンパイラ、演算処理システム及び演算処理方法 |
JP4405365B2 (ja) * | 2004-10-27 | 2010-01-27 | パナソニック株式会社 | プログラム変換装置及び方法 |
-
2008
- 2008-01-18 JP JP2008009772A patent/JP2009169862A/ja active Pending
-
2009
- 2009-01-06 CN CN200910001723.2A patent/CN101488094A/zh active Pending
- 2009-01-16 US US12/355,214 patent/US20090187895A1/en not_active Abandoned
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0744507A (ja) * | 1993-08-03 | 1995-02-14 | Agency Of Ind Science & Technol | 並列プログラムのコンパイル方法 |
JP2006243839A (ja) * | 2005-02-28 | 2006-09-14 | Toshiba Corp | 命令生成装置及び命令生成方法 |
JP2006260096A (ja) * | 2005-03-16 | 2006-09-28 | Matsushita Electric Ind Co Ltd | プログラム変換方法およびプログラム変換装置 |
JP2007328415A (ja) * | 2006-06-06 | 2007-12-20 | Univ Waseda | ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ |
JP2007328416A (ja) * | 2006-06-06 | 2007-12-20 | Univ Waseda | ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ |
Also Published As
Publication number | Publication date |
---|---|
US20090187895A1 (en) | 2009-07-23 |
CN101488094A (zh) | 2009-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3285170B1 (en) | Application profiling job management system, program, and method | |
JP4635082B2 (ja) | マルチプロセッサシステム及びグルーピング方法 | |
JP4621786B2 (ja) | 情報処理装置、並列処理最適化方法およびプログラム | |
US20180004495A1 (en) | Verification of a dataflow representation of a program through static type-checking | |
US20110126179A1 (en) | Method and System for Dynamic Patching Software Using Source Code | |
JP4381459B1 (ja) | 情報処理装置、粒度調整方法およびプログラム | |
JP2004220583A (ja) | アセンブラにおいて大域的プロセッサ資源割当てを実行するための方法およびシステム | |
JP2017107448A (ja) | 並列化方法、並列化ツール、車載装置 | |
JP4830108B2 (ja) | プログラム処理装置、プログラム処理方法、並列処理プログラム用コンパイラおよび並列処理プログラム用コンパイラを格納した記録媒体 | |
CN110968320A (zh) | 针对异构硬件架构的联合编译方法和编译系统 | |
JP5655448B2 (ja) | Plcシステム、その開発支援装置 | |
CN111930359B (zh) | 一种异构嵌入式系统上进行算法开发的系统及方法 | |
JP4770657B2 (ja) | パイプライン合成システム、方法及びプログラム | |
JP2009169862A (ja) | プログラム変換装置、方法、プログラムおよび記録媒体 | |
JP2009009253A (ja) | プログラム実行方法、プログラム、およびプログラム実行システム | |
WO2010029812A1 (ja) | マルチコアにおけるプログラミングシステム、その方法及びそのプログラム | |
US10922061B2 (en) | Information processing apparatus, information processing method and storage medium storing program related to instruction selection of a compiler | |
US8510342B1 (en) | Automatic conversion of build processes to use streaming input | |
WO2011090032A1 (ja) | 並列処理プログラム生成方法、並列処理プログラム生成プログラム、及び並列処理プログラム生成装置 | |
Becker et al. | Extending automotive legacy systems with existing end-to-end timing constraints | |
JP6050193B2 (ja) | 変換プログラム、および変換方法 | |
Ather et al. | Transformation of Sequential Program to KPN- An Overview | |
US20230176851A1 (en) | Computer-readable recording medium storing conversion program and conversion method | |
JP3394353B2 (ja) | 機械語命令スケジューリング装置 | |
KR20200072656A (ko) | 전투체계 소프트웨어 빌드 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20101109 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20111226 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120110 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20120605 |