JP6500626B2 - 計算機、コンパイラプログラム、リンクプログラムおよびコンパイル方法 - Google Patents
計算機、コンパイラプログラム、リンクプログラムおよびコンパイル方法 Download PDFInfo
- Publication number
- JP6500626B2 JP6500626B2 JP2015121358A JP2015121358A JP6500626B2 JP 6500626 B2 JP6500626 B2 JP 6500626B2 JP 2015121358 A JP2015121358 A JP 2015121358A JP 2015121358 A JP2015121358 A JP 2015121358A JP 6500626 B2 JP6500626 B2 JP 6500626B2
- Authority
- JP
- Japan
- Prior art keywords
- task
- function
- information
- source program
- cycles
- 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.)
- Active
Links
Images
Classifications
-
- 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/451—Code distribution
- G06F8/452—Loops
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
[第1の実施の形態]
図1は、第1の実施の形態の計算機を示す図である。
演算部1bは、リンク処理の際に、コンパイル時に生成したサイクル数および呼び出し関係の情報に基づいて、タスク毎の実行に要するサイクル数を算出する。例えば、演算部1bが第1のオブジェクトファイル4aと第2のオブジェクトファイル5aとを結合して実行可能ファイルを生成する場合を考える。
図2では、一例としてC言語を用いて第1のソースプログラム4を記述する場合を示している。ソースプログラムにおいて、タスクは、所定の指示文によって指定されることがある。指示文としては、例えば、OpenMP(登録商標)の構文を用いることが可能である。図2の例では、OpenMPで、それぞれスレッド数が4,4である2つの並列タスクを表現するサンプルコードを例示している。なお、図2において、左側に付されている番号は行番号である(以降の図でも同様にして行番号を図示することがある)。なお、3以上の並列タスクも同様に表現され得る。
図3でも、図2と同様に、一例としてC言語を用いて第2のソースプログラム5を記述する場合を示している。第2のソースプログラム5は、関数func1,func2それぞれの定義を含む。
第2の実施の形態の情報処理装置は、コンパイラおよびリンカを用いて、C言語などの高級言語で記述されたソースコードから実行コードを生成する。
情報処理装置100は、CPU101,102、RAM103、HDD104、画像信号処理部105、入力信号処理部106、媒体リーダ107および通信インタフェース108を有する。これらのハードウェアユニットは、情報処理装置100内でバスに接続されている。CPU101,102は、第1の実施の形態の演算部1bの一例であり、RAM103またはHDD104は、第1の実施の形態の記憶部1aの一例である。
情報処理装置100は、ソースファイル記憶部110、オブジェクトファイル記憶部120、実行可能ファイル記憶部130、コンパイラ140およびリンカ150を有する。ソースファイル記憶部110、オブジェクトファイル記憶部120および実行可能ファイル記憶部130は、例えば、RAM103またはHDD104に確保された記憶領域として実装される。コンパイラ140およびリンカ150は、例えば、CPU101,102が実行するソフトウェアのモジュールとして実装される。
タスク範囲解析部152は、タスク範囲情報からタスクのラベル名を取得する。ラベル名が存在しない場合は、並列なタスクが存在しないため、以降の解析を実行しなくてよい(通常通り実行可能ファイルが生成されることになる)。
タスクコスト解析部154は、各タスクのコストを解析する。タスクコスト解析部154は、関数呼び出し解析部153によって構築された関数呼び出し関係に基づいて、タスクから呼び出されている全ての関数のコストを集める。タスクコスト解析部154は、該当のタスクから呼び出されている全ての関数のコストを考慮に入れた当該タスクの総コストを、実行スレッド数をパラメータとして表わす。
第2の実施の形態では、以下のファイルを例示する。ソースファイル111,112,113,114は、ソースファイル記憶部110に記憶される。ソースファイル111のファイル名は、“main.c”である。ソースファイル112のファイル名は、“sub1.c”である。ソースファイル113のファイル名は、“sub2.c”である。ソースファイル114のファイル名は、“sub3.c”である。
次に、ソースファイル111,112,113,114に含まれるソースプログラムを例示する。以下では、一例としてC言語による記述を示す。
例えば、ソースファイル111には、関数mainが含まれる。ソースファイル111のコンパイルの際、ループ並列性解析部141は、関数main内で並列可能なループを探すが、関数mainには並列可能なループは存在していない。更に、タスク範囲抽出部142は、ソースファイル111内にタスクが定義されていることを検出し、開始位置と終了位置を記憶する。具体的には、ソースファイル111には、12行目〜14行目に1つ目のタスクが、17行目〜19行目に2つ目のタスクが記述されている。1つ目のタスクをタスクAとする。2つ目のタスクをタスクBとする。ソースファイル111の11行目の記述“#pragma omp parallel num_threads(4)”は、タスクAのスレッド数の指定である。同16行目の記述“#pragma omp parallel num_threads(2)”は、タスクBのスレッド数の指定である。
図8(A)は、ソースファイル112に含まれるソースプログラムの例を示す。図8(B)は、ソースファイル113に含まれるソースプログラムの例を示す。図8(C)は、ソースファイル114に含まれるソースプログラムの例を示す。
図9(A)は、関数mainに対する命令列の例を示している。図9(B)は、関数func1に対する命令列の例を示している。これらの命令列は、コンパイラ140によって生成されるオブジェクトコードの一部と考えてもよい。
サイクル数テーブル125は、例えばオブジェクトファイル記憶部120に予め格納される。サイクル数テーブル125は、命令およびサイクル数の項目を含む。
タスク範囲情報121aは、オブジェクトファイル121に追加されるタスク範囲情報を例示している。タスク範囲情報121aは、タスクAに対するラベル名、および、タスクBに対するラベル名を含む。ソースファイル111が3以上のタスクを含む場合には、タスク範囲情報121aは3以上のラベル名を含むことになる。
関数コスト情報121bは、オブジェクトファイル121に追加される関数コスト情報を例示している。関数コスト情報121bは、前述のように、タスクまたは関数において呼び出し先の関数のコストを含まないコストC(t,n)を含む。
関数呼び出し情報121cは、オブジェクトファイル121に追加される関数呼び出し情報を例示している。関数呼び出し情報121cは、呼び出し元のタスクまたは関数名、呼び出し先の関数名および呼び出し回数の情報を含む。例えば、タスクAでは、関数func1を1回呼び出す。したがって、関数呼び出し情報121cは、呼び出し元のタスク名が“タスクA”、呼び出し先の関数名が“func1”、呼び出し回数が“1”という情報を含むことになる。オブジェクトファイル122,123,124も同様の関数呼び出し情報を含む。ただし、他の関数の呼び出しを含まない場合は、関数呼び出し情報として、呼び出しがないという情報が登録されることになる。
オブジェクトファイル121は、通常時のmain.cに対するオブジェクト情報(オブジェクトコードの情報)に加えて、関数mainの関数情報を含む。関数mainの関数情報は、下記のタスク範囲情報(タスク範囲情報121a)、関数コスト情報(関数コスト情報121b)、および、関数呼び出し情報(関数呼び出し情報121c)を含む。
関数呼び出し情報は、“タスクAでfunc1を1回呼び出し”という情報を含む。これは、タスクAが関数func1を1回呼び出すことを示す。関数呼び出し情報は、“タスクBでfunc2を1回呼び出し”という情報を含む。これは、タスクBが関数func2を1回呼び出すことを示す。
オブジェクトファイル122は、通常時のsub1.cに対するオブジェクト情報に加えて、関数func1の関数情報を含む。関数func1の関数情報は、下記のタスク範囲情報、関数コスト情報、および、関数呼び出し情報を含む。
関数呼び出し解析部153は、オブジェクトファイル121,122,123,124に追加された関数呼び出し情報に基づいて、タスクおよび関数の呼び出し関係を把握する。例えば、関数呼び出し解析部153は、オブジェクトファイル121に含まれる関数呼び出し情報に基づいて、タスクAから関数func1が1回呼び出されることを把握する。関数呼び出し解析部153は、オブジェクトファイル122に含まれる関数func1の関数呼び出し情報から、関数func1からは他の関数の呼び出しがないことを把握する。
利用可能なコア数を8個とする。スレッド数判定部155は、n=1、m=1を初期値として、AllC(タスクA,1)=2102およびAllC(タスクB,1)=10010を求める。コストの大きい方のタスクに割り当てるスレッド数を1追加し、AllC(タスクA,n)およびAllC(タスクB,m)を計算し直す。これを、n+m=8となるまで繰り返し、最終的な(n,m)の組(n,m)=(2,6)を取得する。この場合、スレッド数判定部155は、タスクAに割り当てるスレッド数を2とする。また、スレッド数判定部155は、タスクBに割り当てるスレッド数を6とする。
図19(A)は、スレッド数の設定前のオブジェクトファイル121を例示している。図19(B)は、スレッド数の設定後のオブジェクトファイル121を例示している。スレッド数変更部156は、スレッド数判定部155が求めた各タスクのスレッド数をオブジェクトファイル121に設定する。
図20は、コンパイル処理の例を示すフローチャートである。以下、図20に示す処理をステップ番号に沿って説明する。以下の手順は、1つのソースファイルのコンパイル毎に実行される。
(S15)コンパイラ140は、ソースプログラムに相当する命令列を生成する。
(S22)関数情報追加部145は、ステップS17,S18,S19で生成されたタスク範囲情報、関数コスト情報および関数呼び出し情報を、RAM103から読み出して、オブジェクトファイルの生成時に、オブジェクトファイルに埋め込む。
(S31)関数情報取得部151は、結合対象の全てのオブジェクトファイル(例えば、オブジェクトファイル121,122,123,124)から、コンパイル時に埋め込まれた関数情報を取得する。関数情報は、タスク範囲情報、関数コスト情報および関数呼び出し情報を含む。
(S37)スレッド数変更部156は、ステップS36で決定されたタスク毎のスレッド数を、オブジェクトファイルに埋め込む。オブジェクトファイルにスレッド数を埋め込む方法は、図19で例示した通りである。上記のオブジェクトファイル121,122,123,124に対する処理の場合、スレッド数変更部156は、これらのうちオブジェクトファイル121にスレッド数を埋め込むことになる。
(S42)スレッド数判定部155は、各タスクに割り当てているスレッド数の和(スレッド総数)が利用可能なコア数よりも小さいか(スレッド総数<コア数)否かを判定する。スレッド総数がコア数よりも小さい場合、処理をステップS43に進める。スレッド総数がコア数よりも小さい場合、各タスクに現在割り当てているスレッド数を各タスクへ割り当てるスレッド数として確定し、処理を終了する。
このようにして、スレッド数判定部155は、各タスクに対して割り当てるスレッド数を決定する。これにより、並列実行される各タスクの終了時刻の時間差を小さくすることができる。
第2の実施の形態では、並列タスクの数が2の場合を例示したが、並列タスクの数は3以上でもよい。例えば、図23では、割り当てスレッド数として、それぞれ6,4,2が指定された3つの並列タスク(図中“<タスク1>”、“<タスク2>”、“<タスク3>”と表記)を定義する場合を示している。
更に、第2の実施の形態では、各タスクが関数呼び出し命令を含む場合を例示したが、一部のタスクが関数呼び出し命令を含まないこともある。例えば、図24に示すように、並列実行可能な2つのタスクのうち、一方のタスクは、関数呼び出しを含む。もう一方のタスクは、ループ処理の記述を含むが、関数呼び出しを含まない。この場合、後者のタスク(関数呼び出しを含まないタスク)については、AllC(t,n)=C(t,n)となる。このように、並列タスクに、関数呼び出し命令を含むタスク、および、関数呼び出し命令を含まないタスクが混在する場合にも、第2の実施の形態の方法を適用して各タスクのスレッド数を決定できる。
(付記1) ソースプログラムを記憶する記憶部と、
前記ソースプログラムのコンパイルの際に、前記ソースプログラムに含まれる関数毎の実行に要するサイクル数とタスクおよび関数の呼び出し関係とを示す情報を生成し、
リンク処理の際に、前記サイクル数および前記呼び出し関係に基づいてタスク毎の実行に要するサイクル数を算出する演算部、
を有するコンパイルを行う計算機。
(付記5) 前記コンパイル時に生成される前記サイクル数の情報は、前記タスクの定義に含まれる命令の実行に要するサイクル数を含む、付記1乃至4の何れか1つに記載の計算機。
前記演算部は、前記コンパイルの際に、前記ソースプログラムから生成された命令列と前記対応関係に基づいて、前記サイクル数の情報を生成する、
付記1乃至5の何れか1つに記載の計算機。
ソースプログラムのコンパイルの際に、前記ソースプログラムに含まれる関数毎の実行に要するサイクル数とタスクおよび関数の呼び出し関係とを示す情報を出力する、
処理を実行させるコンパイラプログラム。
ソースプログラムのコンパイルの際に生成された、前記ソースプログラムに含まれる関数毎の実行に要するサイクル数とタスクおよび関数の呼び出し関係とを示す情報に基づいて、タスク毎の実行に要するサイクル数を算出する、
処理を実行させるリンクプログラム。
ソースプログラムのコンパイルの際に、前記ソースプログラムに含まれる関数毎の実行に要するサイクル数とタスクおよび関数の呼び出し関係とを示す情報を生成し、
リンク処理の際に、前記サイクル数および前記呼び出し関係に基づいてタスク毎の実行に要するサイクル数を算出する、
コンパイル方法。
1a 記憶部
1b 演算部
2 コンパイラ
3 リンカ
4 第1のソースプログラム
4a 第1のオブジェクトファイル
5 第2のソースプログラム
5a 第2のオブジェクトファイル
Claims (9)
- 複数のタスクの定義を含む第1のソースプログラムと何れかのタスクで呼び出される複数の関数の定義を含む第2のソースプログラムとを記憶する記憶部と、
前記第1および前記第2のソースプログラムのコンパイルの際に、前記第1のソースプログラムにおけるタスクの定義に応じた命令の実行に要する第1のサイクル数を示す情報と当該タスクで呼び出される関数を示す呼び出し関係情報とをタスク毎に生成し、前記第2のソースプログラムに含まれる関数の実行に要する第2のサイクル数を示す情報を関数毎に生成し、
リンク処理の際に、前記呼び出し関係情報に基づく前記タスクで呼び出される関数の特定、および、前記タスクに対応する前記第1のサイクル数と特定した当該関数に対応する前記第2のサイクル数とに基づく前記タスクの実行に要するサイクル数の算出を、タスク毎に実行する演算部、
を有するコンパイルを行う計算機。 - 前記演算部は、前記第1のソースプログラムのコンパイル時に生成された前記第1のサイクル数を示す情報および前記呼び出し関係情報を前記第1のソースプログラムのコンパイルにより生成された第1のオブジェクトファイルに追加し、前記第2のソースプログラムのコンパイル時に生成された前記第2のサイクル数を示す情報を、前記第2のソースプログラムのコンパイルにより生成された第2のオブジェクトファイルに追加する、請求項1記載の計算機。
- 前記演算部は、前記リンク処理の際に、結合対象の前記第1のオブジェクトファイルから前記第1のサイクル数および前記呼び出し関係情報を取得し、結合対象の前記第2のオブジェクトファイルから前記第2のサイクル数を取得する、請求項2記載の計算機。
- 前記演算部は、前記リンク処理の際に、並列に実行可能な複数のタスクそれぞれのサイクル数に基づいて、前記複数のタスクそれぞれに割り当てるスレッド数を決定する、請求項1乃至3の何れか1項に記載の計算機。
- 前記演算部は、前記複数のタスクそれぞれに割り当てるスレッド数の組み合わせの候補毎に前記複数のタスクそれぞれのサイクル数を算出し、前記複数のタスクそれぞれのサイクル数の差が最小になるスレッド数の組み合わせを選択する、請求項4記載の計算機。
- 前記演算部は、決定したスレッド数の情報を前記第1のソースプログラムのコンパイルにより生成された第1のオブジェクトファイルに追加し、前記第1のオブジェクトファイルを用いて実行可能ファイルを生成する、請求項4または5記載の計算機。
- コンピュータに、
複数のタスクの定義を含む第1のソースプログラムのコンパイルの際に、前記第1のソースプログラムにおけるタスクの定義に応じた命令の実行に要する第1のサイクル数を示す情報と当該タスクで呼び出される関数を示す呼び出し関係情報とをタスク毎に出力し、
何れかのタスクで呼び出される複数の関数の定義を含む第2のソースプログラムのコンパイルの際に、前記第2のソースプログラムに含まれる関数の実行に要する第2のサイクル数を示す情報を関数毎に出力する、
処理を実行させるコンパイラプログラム。 - コンピュータに、
複数のタスクの定義を含む第1のソースプログラムのコンパイルの際に生成された、前記第1のソースプログラムにおけるタスクの定義に応じた命令の実行に要する第1のサイクル数を示す情報と当該タスクで呼び出される関数を示す呼び出し関係情報とをタスク毎に取得し、
何れかのタスクで呼び出される複数の関数の定義を含む第2のソースプログラムのコンパイルの際に生成された、前記第2のソースプログラムに含まれる関数の実行に要する第2のサイクル数を示す情報を関数毎に取得し、
前記呼び出し関係情報に基づく前記タスクで呼び出される関数の特定、および、前記タスクに対応する前記第1のサイクル数と特定した当該関数に対応する前記第2のサイクル数とに基づく前記タスクの実行に要するサイクル数の算出をタスク毎に実行する、
処理を実行させるリンクプログラム。 - コンピュータが、
複数のタスクの定義を含む第1のソースプログラムのコンパイルの際に、前記第1のソースプログラムにおけるタスクの定義に応じた命令の実行に要する第1のサイクル数を示す情報と当該タスクで呼び出される関数を示す呼び出し関係情報とをタスク毎に生成し、
何れかのタスクで呼び出される複数の関数の定義を含む第2のソースプログラムのコンパイルの際に、前記第2のソースプログラムに含まれる関数の実行に要する第2のサイクル数を示す情報を関数毎に生成し、
リンク処理の際に、前記呼び出し関係情報に基づく前記タスクで呼び出される関数の特定、および、前記タスクに対応する前記第1のサイクル数と特定した当該関数に対応する前記第2のサイクル数とに基づく前記タスクの実行に要するサイクル数の算出をタスク毎に実行する、
コンパイル方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015121358A JP6500626B2 (ja) | 2015-06-16 | 2015-06-16 | 計算機、コンパイラプログラム、リンクプログラムおよびコンパイル方法 |
US15/165,419 US10089088B2 (en) | 2015-06-16 | 2016-05-26 | Computer that performs compiling, compiler program, and link program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015121358A JP6500626B2 (ja) | 2015-06-16 | 2015-06-16 | 計算機、コンパイラプログラム、リンクプログラムおよびコンパイル方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2017010077A JP2017010077A (ja) | 2017-01-12 |
JP6500626B2 true JP6500626B2 (ja) | 2019-04-17 |
Family
ID=57588138
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015121358A Active JP6500626B2 (ja) | 2015-06-16 | 2015-06-16 | 計算機、コンパイラプログラム、リンクプログラムおよびコンパイル方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10089088B2 (ja) |
JP (1) | JP6500626B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114328168B (zh) * | 2020-10-09 | 2024-07-02 | 腾讯科技(深圳)有限公司 | 异常检测方法、装置、计算机设备和存储介质 |
CN113778451B (zh) * | 2020-11-17 | 2024-06-18 | 北京沃东天骏信息技术有限公司 | 文件加载方法、装置、计算机系统和计算机可读存储介质 |
CN113031961B (zh) * | 2021-03-23 | 2023-04-07 | 北京百度网讯科技有限公司 | 编译方法、编译装置、电子设备、存储介质和程序产品 |
US11748155B1 (en) | 2022-04-20 | 2023-09-05 | Snowflake Inc. | Declarative engine for workloads |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3039953B2 (ja) * | 1989-04-28 | 2000-05-08 | 株式会社日立製作所 | 並列化装置 |
JPH06187309A (ja) | 1992-12-21 | 1994-07-08 | Hitachi Ltd | プロセッサ割付制御方式 |
JPH06250988A (ja) | 1993-02-26 | 1994-09-09 | Nec Software Ltd | 自動並列化処理方法 |
JPH0756723A (ja) * | 1993-08-11 | 1995-03-03 | Fujitsu Ltd | コンパイラ装置 |
JPH11306026A (ja) * | 1998-04-22 | 1999-11-05 | Toshiba Corp | コード最適化装置、コード最適化方法、及び、コード最適化プログラムを記録したコンピュータ読み取り可能な記録媒体 |
JP2003131888A (ja) * | 2001-10-29 | 2003-05-09 | Hitachi Ltd | 手続き間命令スケジューリング方法 |
JP4132802B2 (ja) * | 2001-12-07 | 2008-08-13 | 富士通株式会社 | 概略マルチタスクソフトウェアのシミュレーションを行う方法、装置及びプログラム |
US7392366B2 (en) * | 2004-09-17 | 2008-06-24 | International Business Machines Corp. | Adaptive fetch gating in multithreaded processors, fetch control and method of controlling fetches |
US7886283B2 (en) * | 2004-09-17 | 2011-02-08 | The Regents Of The University Of California | Phantom serializing compiler and method of operation of same |
US7606694B1 (en) * | 2006-03-24 | 2009-10-20 | Xilinx, Inc. | Framework for cycle accurate simulation |
JP5040136B2 (ja) * | 2006-03-27 | 2012-10-03 | 富士通セミコンダクター株式会社 | チューニング支援装置、チューニング支援プログラム、チューニング支援プログラムを記録したコンピュータ読み取り可能な記録媒体およびチューニング支援方法 |
JP4784827B2 (ja) * | 2006-06-06 | 2011-10-05 | 学校法人早稲田大学 | ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ |
US20080271001A1 (en) * | 2006-09-11 | 2008-10-30 | Yo Nonomura | Method of generating program, information processing device and microcomputer |
US8032875B2 (en) * | 2006-11-28 | 2011-10-04 | Oracle America, Inc. | Method and apparatus for computing user-specified cost metrics in a data space profiler |
JPWO2008072334A1 (ja) | 2006-12-14 | 2010-03-25 | 富士通株式会社 | コンパイル方法及びコンパイラ |
JP5353587B2 (ja) * | 2009-09-11 | 2013-11-27 | 株式会社リコー | 組み込み用プログラム開発装置及び組み込み用プログラム開発方法 |
US8887160B2 (en) * | 2011-11-21 | 2014-11-11 | Hewlett-Packard Development Company, L.P. | Mapping tasks to execution threads |
US8819653B2 (en) * | 2012-01-30 | 2014-08-26 | Cisco Technology, Inc. | Automated improvement of executable applications based on evaluating independent execution heuristics |
US20130227531A1 (en) * | 2012-02-24 | 2013-08-29 | Zynga Inc. | Methods and Systems for Modifying A Compiler to Generate A Profile of A Source Code |
US9134981B2 (en) * | 2012-06-22 | 2015-09-15 | Altera Corporation | OpenCL compilation |
RU2012127578A (ru) * | 2012-07-02 | 2014-01-10 | ЭлЭсАй Корпорейшн | Анализатор применимости программного модуля для разработки и тестирования программного обеспечения для многопроцессорных сред |
US20150363230A1 (en) * | 2013-01-23 | 2015-12-17 | Waseda University | Parallelism extraction method and method for making program |
-
2015
- 2015-06-16 JP JP2015121358A patent/JP6500626B2/ja active Active
-
2016
- 2016-05-26 US US15/165,419 patent/US10089088B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US10089088B2 (en) | 2018-10-02 |
JP2017010077A (ja) | 2017-01-12 |
US20160371068A1 (en) | 2016-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102165428B (zh) | 软件应用性能增强 | |
KR101559090B1 (ko) | 이종 코어를 위한 자동 커널 마이그레이션 | |
KR101759256B1 (ko) | 사용자-주도 프로파일-구동 최적화들을 위한 프레임워크 | |
US7882498B2 (en) | Method, system, and program of a compiler to parallelize source code | |
US7877741B2 (en) | Method and corresponding apparatus for compiling high-level languages into specific processor architectures | |
US8799881B2 (en) | Program parallelization device and program product | |
US20130139137A1 (en) | Systems and Methods for Customizing Optimization/Transformation/ Processing Strategies | |
JP6500626B2 (ja) | 計算機、コンパイラプログラム、リンクプログラムおよびコンパイル方法 | |
US10430191B2 (en) | Methods and apparatus to compile instructions for a vector of instruction pointers processor architecture to enable speculative execution and avoid data corruption | |
US9195444B2 (en) | Compiler method and compiler apparatus for optimizing a code by transforming a code to another code including a parallel processing instruction | |
US20180032320A1 (en) | Computer-implemented method for allowing modification of a region of original code | |
KR20080093108A (ko) | 프로그램 병렬 실행 시스템 및 방법 | |
JP2019049843A (ja) | 実行ノード選定プログラム、実行ノード選定方法及び情報処理装置 | |
JP2012510661A (ja) | 逐次コンピュータプログラムコードを並列処理する方法及びシステム | |
TWI743698B (zh) | 解譯執行位元組碼指令流的方法及裝置 | |
JP2008250838A (ja) | ソフトウェア生成装置、方法、およびプログラム | |
US20210182041A1 (en) | Method and apparatus for enabling autonomous acceleration of dataflow ai applications | |
JP2007080049A (ja) | 組み込み用プログラム生成方法、組み込み用プログラム開発システム、及び情報テーブル部 | |
CN113721899A (zh) | 面向gpdsp的轻量级高效汇编代码编程方法及系统 | |
Heid et al. | Improved parallelization of legacy embedded software on soft-core MPSoCs through automatic loop transformations | |
JP2024118113A (ja) | コンパイラ依存性抽出装置およびソースコード解析システム | |
Oliva et al. | Speeding up thread-local storage access in dynamic libraries | |
Kavvadias et al. | A portable specification of zero-overhead looping control hardware applied to embedded processors | |
Putkinen | The operating environment of autovectorizing code generators | |
KR20110126504A (ko) | 스택 풀기를 위한 방법 및 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20180306 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20181127 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20181130 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20190124 |
|
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: 20190219 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20190304 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6500626 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |