JP2818016B2 - プロセス並列実行方法および装置 - Google Patents

プロセス並列実行方法および装置

Info

Publication number
JP2818016B2
JP2818016B2 JP2212264A JP21226490A JP2818016B2 JP 2818016 B2 JP2818016 B2 JP 2818016B2 JP 2212264 A JP2212264 A JP 2212264A JP 21226490 A JP21226490 A JP 21226490A JP 2818016 B2 JP2818016 B2 JP 2818016B2
Authority
JP
Japan
Prior art keywords
parallel
execution
loop
processing
processes
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 - Lifetime
Application number
JP2212264A
Other languages
English (en)
Other versions
JPH0498323A (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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2212264A priority Critical patent/JP2818016B2/ja
Priority to US07/743,031 priority patent/US5524242A/en
Publication of JPH0498323A publication Critical patent/JPH0498323A/ja
Application granted granted Critical
Publication of JP2818016B2 publication Critical patent/JP2818016B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

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

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は、プロセス並列実行方式に関し、特に、複数
の命令プロセッサを有するマルチプロセッサシステムに
おいて、高級言語で記述されたソースプログラムをオブ
ジェクトモジュールに変換して実行する場合に、実行時
間を最小とする個数の並列プロセスを生成して、生成し
た並列プロセスを効率的に実行させるプロセス並列実行
方法に関するものである。
〔従来の技術〕
マルチプロセッサシステムにおいて、高級言語で記述
されたソースプログラムをオブジェクトモジュールに変
換して、プログラムのデータ処理を行う場合、システム
内に備えられている複数のプロセッサが並列動作してデ
ータ処理を行い、プログラムの処理を効率よく行うこと
が所望される。
しかし、複数のプロセッサが並列動作できる度合は、
プログラムの内容により、また、ソースプログラムから
変換したオブジェクトモジュールの内容により異なるの
で、ソースプログラムをオブジェクトモジュールに変換
するコンパイル処理は、各プロセッサにおけるプログラ
ム処理の実行ができるだけ並列動作により行なわれるよ
うに並列化対象部分(並列プロセス)を生成する処理が
行なわれ、オブジェクトモジュールを実行するための処
理単位のプロセスの生成も、最適な並列プロセス数を生
成して、並列プロセスの実行制御が効率よく行なわれる
ことが所望される。
従来、並列プロセスを複数プロセッサに割り付れるア
ルゴリズムについては、パラレル プログラミング ア
ンド コンパイラーズ,1988点,クルエル アカデミッ
ク パブリシャズ発行,第97頁から第101頁(Parallel
Programming and Compilers,Kluwer Academic Pablishe
rs,1988,pp97〜101)において論じられている。ここで
は、スケジューリングの例として、動的タスクスケジュ
ール(Run−Time Task Scheduling)と、ループスケジ
ュール(Loop Scheduling)とが説明されている。動的
タスクスケジュールは、並列化対象部分(並列プロセ
ス)が並列実行可能になった時点で、並列プロセスをキ
ューに登録し、空いているプロセッサがキューを先入れ
先出し方法で順に取り出し、並列プロセスの処理を実行
するスケジュール方法である。また、ループスケジュー
ルは、並列プロセス(並列化対象部分)がプログラムの
繰り返し計算を行う計算ループ(以下、DOループとい
う)である場合、ループの繰り返しに関して分割を行
い、並列処理を行うスケジュール方法である。このルー
プスケジュールには、ループ繰り返しの1回の処理を1
つの並列プロセスとするセルフスケジューリング(self
scheduling)と、ループ繰り返しのn回(固定)の処
理を1つの並列プロセスとするチャンクスケジューリン
グ(chunk scheduling)と、並列プロセスの1つのプロ
セスを残りループ回数に依存して簡単な式で求めるガイ
ドデドセルフスケジューリング(guided self scheduli
ng)とがあるが、並列処理時間の理論解析からは、ガイ
ドデドセルフスケジューリングが、プロセッサの負荷バ
ランスおよび分割オーバーヘッドの両者を考慮して、最
も良いと述べている。
このように、並列実行可能なDOループのループの繰り
返しに関して、並列プロセスとして分割する時の並列プ
ロセスの生成個数に対応して、各スケジューリング方法
が論じられている。
〔発明が解決しようとする課題〕
ところで、上述の従来の技術においては、DOループの
処理をマルチプロセッサシステムで処理する場合の最適
な並列プロセスへのプロセス分割方法が論じられている
が、DOループのループ繰り返しを分割して並列プロセス
を生成した後、並列プロセスを処理するためのオーバー
ヘッドについては考慮されていない。このため、並列プ
ロセスとする当該DOループの演算量が、並列プロセス処
理のためのオーバーヘッドより小さい場合には、並列プ
ロセス処理によって当該DOループの演算を実行すると、
当該DOループの実行性能が劣化するという問題がある。
本発明は、上記の問題を解決するためになされたもの
である。
本発明の目的は、複数の命令プロセッサを有するマル
チプロセッサシステムにおいて、高級言語で記述された
ソースプログラムをオブジェクトモジュールに変換して
実行する場合に、実行時間を最小とする個数の並列プロ
セスを生成して、生成した並列プロセスを効率的に実行
させるプロセス並列実行方法を提供することにある。
〔課題を解決するための手段〕
上記目的を達成するため、本発明のプロセス並列実行
方法は、複数の命令プロセッサを有するマルチプロセッ
サシステムにおいて、高級言語で記述されたソースプロ
グラムをオブジェクトモジュールに変換し、並列実行可
能な並列化対象部分の処理に対して並列プロセスを生成
し、複数の命令プロセッサ上で並列プロセスを実行する
ことにより並列処理を行うプロセス並列実行方法であっ
て、前記ソースプログラムをオブジェクトモジュールに
変換する時、並列実行可能な並列化対象部分の実行時間
がソースプログラム中で指定されている場合には、その
実行時間の値、ソースプログラム中で指定されていない
場合には並列プロセスオブジェクト命令列の中間語の語
数およびプログラムの繰り返し計算を行う各々のループ
の繰り返し回数から計算して求めた並列プロセス部分の
演算量の値を、並列実行可能な並列化対象部分の逐次実
行時間の目安を与える実行コスト値としてオブジェクト
モジュール中に設定し、並列プロセスの実行直前に、実
行コスト値に応じて並列プロセスの生成個数を決定し、
決定した生成個数の並列プロセスを生成し、並列プロセ
スの実行により並列処理を行うことを特徴とする。
また、並列プロセスの実行直前に行う並列プロセスの
生成個数の決定は、実行コスト値をもとにして、並列プ
ロセスの最大生成個数を定め、プログラムの繰り返し計
算を行う各々のループの繰り返し回数から、並列プロセ
スの生成個数を決定することを特徴とする。
〔作用〕
これによれば、複数の命令プロセッサを有するマルチ
プロセッサシステムにおいて、高級言語で記述されたソ
ースプログラムをオブジェクトモジュールに変換して、
プログラム実行を行う場合、並列実行可能な並列化対象
部分の処理に対しては並列プロセスを生成して、複数の
命令プロセッサ上で並列プロセスを実行することにより
並列処理を行う。まず、ソースプログラムをオブジェク
トモジュールに変換する時に、オブジェクトモジュール
中に並列実行可能な並列化対象部分の実行時間の目安を
与える実行コスト値を設定する。すなわち、ソースプロ
グラムをオブジェクトモジュールに変換する時、並列実
行可能な並列化対象部分の実行時間がソースプログラム
中で指定されている場合には、その実行時間の値、ソー
スプログラム中で指定されていない場合には、並列プロ
セスオブジェクト命令列の中間語の語数およびプログラ
ムの繰り返し計算を行う各々のループの繰り返し回数か
ら計算して求めた並列プロセス部分の演算量の値を、並
列実行可能な並列化対象部分の逐次実行時間の目安を与
える実行コスト値としてオブジェクトモジュール中に設
定する。オブジェクトモジュールの実行時において、逐
次オブジェクト命令列の実行を行い、並列プロセスオブ
ジェクトの実行直前に、実行コスト値に応じて並列プロ
セスの生成個数を決定し、決定した生成個数の並列プロ
セスを生成し、生成した並列プロセスの実行により並列
処理を行う。
並列プロセスの実行直前に行う並列プロセスの生成個
数の決定は、実行コスト値をもとにして、並列プロセス
の最大生成個数を定め、プログラムの繰り返し計算を行
うDOループの各々のループの繰り返し回数から、並列プ
ロセスの生成個数を決定する。
したがって、例えば、並列実行可能なDOループの実行
において、当該DOループの演算量による実行コスト値を
基にして、DOループの繰り返し回数を考慮に入れて、並
列プロセスの実行に伴うオーバーヘッド分をも含めて最
小実行時間で並列プロセスの処理を行う並列プロセスの
生成個数を決定できる。最適な数の並列プロセス生成個
数を決定して、並列プロセスによる処理を行うことによ
り、並列実行に伴うオーバーヘッドによる性能低下がな
く、並列実行可能なDOループの実行に対して、効率的な
並列実行を行うことができる。
〔実施例〕
以下、本発明の一実施例を図面を用いて具体的に説明
する。
まず、本発明の実施例にかかるプロセス並列実行方法
を一態様で実施するための基本的な構成について説明す
る。最適な並列プロセスの生成個数を決定し、生成した
並列プロセスの処理による並列処理をマルチプロセッサ
システムで行うプロセス並列実行方法は、具体的には、
コンパイラの処理,コンパイラが出力するオブジェクト
モジュールの構成,並列プロセスの実行制御を行う並列
実行時ライブラリの処理を、次のように分担して行い、
更にプロセス登録ライブラリを設けることで実現する。
A.コンパイラの処理 高級言語で記述されたソースプログラムをオブジェク
トモジュールに変換するコンパイラの処理では、例え
ば、並列実行可能なDOループの演算量を、DOループの繰
り返し回数に着目して計算し、計算した演算量を並列プ
ロセスの実行コスト値とする。この演算量の計算におい
て、DOループがコンパイル時には定数とならない変数を
持つ場合は、演算量の計算式そのものをオブジェクトモ
ジュール中に生成し、オブジェクトモジュール実行時
に、確定した変数の値を用いて当該演算量の計算式によ
り計算された演算量の計算結果を実行コスト値を格納す
る実行コトストフィールドに格納する指示を与える中間
コードを生成する。
コンパイル時に演算量の計算値が定数になる場合、ま
たはソースプログラムにおいて実行コスト値が指定され
ている場合、その指定値を実行コスト値として実行コス
トフィールドに設定する。
B.オブジェクトモジュールの構成 コンパイラの処理により高級言語で記述されたソース
プログラムを変換して生成するオブジェクトモジュール
の構成においては、並列プロセスの実行制御を行う並列
実行時ライブラリへ与える実行情報として、実行コスト
値を与えるため、実行コスト値を格納する実行コストフ
ィールドを設ける。実行コストフィールドに格納された
実行コスト値は、オブジェクトモジュールから並列実行
時ライブラリへ与えるインタフェース情報となり、各々
の並列実行可能なDOループの実行時間の目安を与える。
C.並列実行時ライブラリの処理 並列プロセスの実行制御を行う並列実行時ライブラリ
には、各々の並列プロセスの管理のため、プロセス情報
テーブルが設けられる。プロセス情報テーブルには、オ
ブジェクトモジュール中にある並列プロセスのオブジェ
クト命令列を指示するオブジェクトアドレスと、実行コ
ストフィールドを含む並列実行可能なDOループの実行情
報を指示する実行情報アドレスと、並列プロセスの繰り
返しの初期値と、並列プロセスの繰り返しの終値とが設
定される。このプロセス情報テーブルをキューに登録
し、またキューから取り出すことにより、並列プロセス
のスケジュールが行なわれる。
D.プロセス登録ライブラリ 並列実行時ライブラリの処理において、一連の並列実
行可能なDOループを並列プロセスとして、キュー登録を
行う時に以下の処理をするプロセス登録ライブラリを設
ける。
当該並列実行可能なDOループの実行コスト値により、
並列プロセスの生成個数を決定して、プロセス情報テー
ブルに生成する並列プロセスの繰り返しの初期値と、並
列プロセスの繰り返しの終値を設定する。
次に、これらのコンパイラの処理および並列実行時ラ
イブラリの処理により、並列プロセスが生成され、並列
プロセスの処理が行なわれて、プログラムの並列処理が
行なわれる一連の処理の流れの概略を説明する。
コンパイラは、並列実行可能なDOループに実行コスト
の値の指定がソースプログラムにある場合、その指定さ
れた値をオブジェクトモジュールの中の当該DOループの
対応の実行コストフィールドに設定する。実行コストの
値の指定がない場合は、当該DOループの演算量をループ
繰り返し回数に着目して計算し、その値が確定する場合
には、その値をオブジェクトモジュール中の対応の実行
コストフィールドに設定する。ループ繰り返し回数が確
定しない場合には、プロセスの実行時に当該演算量を計
算して計算結果をオブジェクトモジュール中の実行コス
トフィールドに格納するコードを出力する。これによ
り、並列実行時ライブラリの並列プロセスの実行制御に
おいて、並列実行可能なDOループを実行する直前では、
オブジェクトモジュール中の当該DOループの実行情報領
域の実行コストフィールドには、各並列実行可能なDOル
ープの実行時間に比例した数値が実行コスト値として設
定されていることになる。オブジェクトモジュールの並
列実行可能なDOループの実行に対して、並列実行時ライ
ブラリは、プロセス登録ライブラリが当該ループの実行
コスト,並列実行最小コスト,並列プロセス最大生成数
および当該ループのループ繰り返し回数から並列プロセ
ス生成数を決定し、プロセス情報テーブルに生成する各
並列プロセスのループの繰り返しの初期値と終値を設定
して、キュー登録をする。
これにより、各々の並列実行可能なDOループの実行
は、並列実行に際して最適な数の並列プロセスが生成さ
れ、生成した並列プロセス数から各プロセスのループ繰
り返し初期値と終値が決定されるため、並列実行による
性能低下はなく、実行速度は向上する。
第1図は、本発明の一実施例にかかるプロセス並列実
行方式による並列処理の要素の全体構成を説明するブロ
ック図である。第1図において、5はオブジェクトモジ
ュールである。オブジェクトモジュール5は、予めコン
パイラにより高級言語で記述されたソースプログラムの
内容に応じて変換され生成された機械語コードのプログ
ラムと実行制御にかかる実行情報から構成されているプ
ログラムデータである。オブジェクトモジュール5に
は、ソースプログラムの内容に応じて、逐次オブジェク
ト命令列6,並列プロセスオブジェクト命令列7が生成さ
れ、また、データ領域8および並列実行可能なDOループ
実行情報8が生成されている。
オペレーティングシステム(OS)1は、ユーザからの
ジョブステップという処理要求を受け付けると、ユーザ
メモリ空間2に当該ユーザに対してユーザ空間(ASCB
1)10を生成し、次にユーザ空間の中で第1タスク(TCB
0)11を生成して、この第1タスク(TCB0)11によっ
て、オブジェクトモジュール5の実行を開始させる。
オブジェクトモジュール5の実行が開始されると、第
1タスク(TCB0)11は、始めの処理として、メインプロ
グラムの開始部のプロローグ処理の先頭でジョブ制御言
語(JCL)のEXEC文のPARAMオペランドにより、実行時ラ
イブラリ3から¥ATTACHライブラリ30を呼ぶ。¥ATTACH
ライブラリ30は、ユーザが指定したサブタスク数のサブ
タスクを生成させる。ここでは生成させるサブタスクと
して、例えば、第2タスク(TCB1)12、第3タスク(TC
B2)13を生成させる。このサブタスク(第2タスク12,
第3タスク13)は、並列プロセス保持キュー4から、キ
ューヘッダ40により指示されている第1のプロセス情報
テーブル41を取り出し、実行時ライブラリ3の¥PRCSラ
イブラリ42を起動して、第1のプロセス情報テーブル41
にかかる並列プロセスを実行させる。プロセス情報テー
ブル41(第6図)は、詳細は後述するが、プロセスの実
行制御情報を格納しているテーブルであり、例えば、並
列プロセスを制御する並列プロセスのループ繰り返しの
初期値および終値などの実行情報を格納している。
オブジェクトモジュールの実行が進み、並列実行可能
なDOループの直前に到達すると、実行時ライブラリ3か
ら¥DISPライブラリ31を呼ぶ。¥DISPライブラリ31は、
並列実行可能なDOループに対して、新たなるプロセス情
報テーブル42を生成し、実行情報として設定されている
オブジェクトモジュール5の並列実行可能なDOループの
実行情報の実行コスト値により、並列プロセスの生成数
を決定し、各並列プロセスのループの繰り返しの初期値
と終値を当該プロセス情報テーブル42に設定する。そし
て、一連の並列実行可能なDOループの実行時の最後の処
理ステップの¥DISPライブラリ呼び出し時に、並列プロ
セス保持キュー4に一括登録する。
ここでの、実行コスト値は、オブジェクトモジュール
5の生成時に、コンパイラによって、並列実行可能なDO
ループの実行制御を行う実行情報として設定されてい
る。また、実行コスト値は、¥DISPライブラリの呼び出
し前に設定されればよいので、コンパイル時には変数が
確定されない場合などで未設定の場合には、この¥DISP
ライブラリの呼び出し前に、オブジェクトモジュール5
に設定されている演算量計算式の処理で算出され、実行
コスト値を格納する実行コストフィールドの位置に設定
される。
並列プロセス保持キュー4の実行は、並列実行時ライ
ブラリ3の¥PRCSライブラリ32が一連の並列実行可能な
DOループに対して生成された並列プロセスの順序に行な
われる。これは、¥PRCSライブラリ32が、タスクに並列
プロセスを割り付けて、各々の並列プロセスを物理的な
処理装置(命令プロセッサ)に実行させる。そして、実
行時ライブラリ3の¥WAITライブラリ33を呼び出し、一
連の並列実行可能なDOループが終了するのを待つ。次
に、メインプログラムの終了部であるエピローグ処理で
生成したサブタスクを消滅させるために、実行時ライブ
ラリ3の¥DETACHライブラリ34を呼び、一連のプログラ
ムの処理が終了する。
第2図は、本発明の一実施例にかかるオブジェクトモ
ジュールの詳細構成を示す図である。第2図に示すよう
に、オブジェクトモジュール5は、命令語領域21,デー
タ領域22,実行情報領域23から構成されている。命令語
領域21は、エントリコード領域21a,プロローグ処理命令
領域21b,逐次オブジェクト命令列領域21c,並列プロセス
オブジェクト命令列領域21d,エピローグ処理命令領域21
eに分けられており、それぞれの処理の機械語命令が格
納されている。データ領域22は、レジスタ退避領域22a,
データ領域ベースアドレ領域22b,外部参照アドレス列領
域22c,実数および配列領域22d,パラメータリスト領域22
eに分けられており、それぞれの処理のデータが格納さ
れている。また、実行制御情報が格納される実行情報領
域23には、並列実行可能DOループ1実行情報23a,並列実
行可能DOループ2実行情報23b,…が並列プロセス対応に
分けられて格納されている。例えば、並列実行可能DOル
ープ1実行情報23aとしては、1つの並列プロセスを生
成して処理を実行するのために、プロセスに対応して並
列実行可能なDOループの実行情報の並列プロセスオブジ
ェクト先頭アドレス25,実行コスト値26,外部参照アドレ
ス27,ワーク領域の大きさ28,ワーク領域で必要な初期値
情報29の各々のデータを格納するフィールドが設けら
れ、この各フィールドに、各々の実行情報が格納されて
いる。また、ここでは、図示していないが、次の実行可
能DOループ2実行情報23bに対しても、同様に、1つの
並列プロセスを生成して処理を実行するのために、プロ
セスに対応して並列実行可能なDOループの実行情報の並
列プロセスオブジェクト先頭アドレス25,実行コスト値2
6,外部参照アドレス27,ワーク領域の大きさ28,ワーク領
域で必要な初期値情報29の各々のデータを格納するフィ
ールドが設けられ、この各フィールドの各々の実行情報
が格納されている。
並列プロセスオブジェクト先頭アドレス25を格納する
フィールドには、オブジェクトプログラム命令中にある
対応並列プロセスオブジェクト命令列6の先頭アドレス
を示すデータが格納される。実行コスト値26を格納する
実行コストフィールドには、当該並列実行可能なDOルー
プの負荷を指定した値を示す実行コスト値が格納され
る。外部参照アドレス27を格納するフィールドには、当
該並列実行可能なDOループ内に外部手続きや外部関数の
ある場合、その各々に対する入り口アドレスを保持する
アドレスデータが格納される。ワーク領域の大きさ28を
格納するフィールドには、当該並列実行可能なDOループ
において、並列実行のために必要な一時変数,変数,配
列のために必要なワーク領域の大きさを示すデータが格
納される。ワーク領域で必要な初期値情報29を格納する
フィールドには、並列実行可能なDOループで必要なワー
ク領域の1つのページレジスタで届かない大きさの場合
のワーク領域のベースアドレス値などを示すデータが格
納される。
第3図は、本発明の一実施例にかかるプロセス並列実
行方式による処理の流れを説明するフローチャートであ
る。
第3図を参照して説明する。まず、コンパイラ46を起
動させ、高級言語で記述されたソースプログラム45をフ
ァイルから読み出し、ソースプログラム45に対して、機
械語命令列に変換するコンパイル処理を行い、オブジェ
クトモジュールとして、ファイルに出力する。オブジェ
クトモジュールには、当該ソースプログラム45の実行情
報を含み、並列処理が可能な部分のソースプログラムに
対しては、並列プロセスを生成して処理するため、並列
オブジェクトモジュール47に変換する。ここで変換され
る並列オブジェクトモジュール47には、並列プロセスの
実行情報の実行コストフィールドに実行コスト値が設定
される。
並列プロセスを生成して並列実行が可能となっている
DOループに対して、例えば、DOループの変数の範囲が固
定されており、実行コストの値の指定がソースプログラ
ムにある場合には、その指定された値が当該DOループの
対応の実行コストフィールドに設定される。また、例え
ば、DOループの変数の範囲が固定でなく、多重のDOルー
プなどで、ソースプログラムには実行コストの値が指定
されていない場合は、当該DOループの演算量をループ繰
り返し回数,多重度などに着目して計算し、演算量の値
が確定する場合には、その計算をした演算量の値をオブ
ジェクトモジュール中の対応の実行コストフィールドに
設定する。また、ここでのコンパイル処理の時に、ルー
プ繰り返し回数どの演算量が確定しない場合、例えば、
DOループの変数の範囲が直前の処理内容により定まる場
合などでは、このコンパイル処理時には、並列プロセス
の実行直前に当該演算量を計算し、その計算結果をオブ
ジェクトモジュール中の実行コストフィールドに格納す
るコードを生成し、オブジェクトモジュール中に出力し
ておく。
以上のようなコンパイラ46の処理が終了し、ソースプ
ログラム45の並列実行可能な部分に対して、実行情報を
含む並列オブジェクトモジュール47がオブジェクトモジ
ュール中に生成される。
オブジェクトモジュールが生成されると、処理の制御
は、次にオブジェクトモジュールの実行制御に移ること
になる。
処理実行では、まず、オブジェクトモジュールの実行
制御のため、タスクが生成され、当該タスクが始めの処
理として、メインプログラムの開始部のプロローグ処理
の先頭において、ジョブ制御言語のEXEC文のPARAMオペ
ランドによって、実行時ライブラリ3を呼び、¥ATTACH
ライブラリ30に処理の制御を移す。¥ATTACHライブラリ
30の処理は、並列実行に必要なサブタスクを作成する。
ここで作成するサブタスクの数は、複数の並列プロセス
の処理のための必要な数であり、ユーザが指定した数の
サブタスクが生成される。処理ボックス51に示すよう
に、既に生成されている親タスク(TCB0)に続いて、例
えば、第2タスク(TCB1),第3タスク(TCB2),第4
タスク(TCB3)を生成させる。
次に、処理の制御は¥DISPライブラリ31に移る。¥DI
SPライブラリ31の処理では、並列プロセス処理の実行情
報の実行コストフィールドから実行コスト値を取り出
し、実行コスト値を並列実行可能な部分の総演算量とし
て、当該実行コスト値から生成する並列プロセス数を決
定し、決定した数の並列プロセスを、各並列プロセスの
ループの繰り返し初期値および終値を計算して、それぞ
れにプロセス情報テーブルの値を設定してプロセスを生
成し登録する。これにより、処理ボックス52に示すよう
に、生成された各々の並列プロセスは、当該並列プロセ
スの実行制御情報を設定したプロセス情報テーブルP1,P
2,P3として登録され、プロセス情報テーブルP1,P2,P3
が、並列プロセス保持キューのキューヘッダQHに順次に
リンクされ登録される。
次に、処理の制御は¥PRCSライブラリ32に移る。¥PR
CSライブラリ32の処理では、処理ボックス53に示すよう
に、並列プロセス保持キューから並列プロセス(P1,P2,
P3)を取り出し、¥ATACHライブラリ30の処理により、
複数個が生成されてシステム制御プログラム(オペレー
ティクシステム)により動作している各タスク(サブタ
スク;TCB1,TCB2,TCB3)に、各々の並列プロセス(P1,P
2,P3)を割り付て、各々の並列プロセスを物理的な処理
装置(命令プロセッサ)で実行させる。
次に、処理の制御を¥WAITライブラリ33に移し、各々
の並列プロセス(P1,P2,P3)の処理が終了するのを待
つ。これにより、処理ボックス54に示すように、各々の
タスクにおける並列プロセス(P1,P2,P3)の処理が終了
し、並列処理可能なDOループの処理は、複数の並列プロ
セスの処理により並列処理が行なわれて、一連の処理が
終了する。
そして、次に処理の制御を¥DETACHライブラリ33に移
し、メインプログラムの終了部であるエピローグ処理に
よって、生成した複数の各々のサブタスクを消滅させ、
ここでの一連のプログラム処理を終了させる(処理ボッ
クス55)。
第4図は、¥DISPライブリの処理を示すフローチャー
トである。
実行時ライブラリによる並列プロセスの実行制御にお
いて、¥DISPライブリによって並列実行可能なDOループ
の並列オブジェクトモジュールを実行する直前には、オ
ブジェクトモジュール中の当該DOループの実行情報領域
の実行コストフィールドに、各並列実行可能なDOループ
の実行時間に比例した数値が実行コスト値として設定さ
れている。
第4図を参照して説明すると、まず、ステップ61にお
いて、並列実行可能なDOループの実行コスト値,システ
ム固有の並列実行最小コスト,並列プロセス生成最大
数,および当該DOループの繰り返し回数から、生成する
並列プロセス数を決定する。次に、ステップ62におい
て、各々に生成する並列プロセスにおいて、実行コスト
値が均等になるように、生成プロセスのループ繰り返し
の初期値と終値を計算して求める。
次に、ステップ63において、生成する並列プロセスの
数だけのプロセス情報テーブル領域を確保し、次のステ
ップ64の処理において、プロセス情報テーブルの各フィ
ールドに値を設定する処理を行う。各フィールドの値は
次のように設定する。すなわち、当該プロセス情報テー
ブルをチェインするためのチェインフィールドには“0"
を設定し、次のプロセス情報テーブルのチェーンフィー
ルドには、当該プロセス情報テーブル領域分のアドレス
を加算したアドレスを設定する。並列プロセスを実行す
る時に必要な実行情報に保持するため、並列実行可能な
DOループの実行情報アドレスには、入力引数の並列実行
可能なDOループの実行アドレスを設定する。ECB(事象
制御ブロック;Event Control Block)フィールドは、並
列プロセス終了通知のための連絡領域であり、初期値と
して“0"を設定する。当該並列プロセスのループ繰り返
し初期値および終値には、ステップ62の処理で計算した
計算値の初期値および終値を設定する。
次に、ステップ65において、並列プロセス保持キュー
のキューヘッダに、当該並列プロセスに対するプロセス
情報テーブルの先頭アドレスを設定し、並列プロセスを
登録する処理を行い、一連の¥DISPライブラリの処理を
終了する。
以上の処理により、各々の並列プロセスに対する実行
情報が設定されたプロセス情報テーブルが作成され、並
列プロセスに対する当該プロセス情報テーブルを、並列
プロセス保持キューに順次に登録することにより、実行
コスト値によって定められる最適な個数の並列プロセス
を生成し、生成した並列プロセスを登録する一連の処理
を終了する。
ここで、実行コスト値により定められる最適な並列プ
ロセスの個数の決定は、ステップ61の処理によって、並
列実行可能なDOループの実行コスト値,システム固有の
並列実行最小コスト,並列プロセス生成最大数,および
当該DOループの繰り返し回数の各データから、生成する
並列プロセス数を計算して決定する処理を行う。
第5図は、並列プロセスの生成個数を算出する処理フ
ローを示すフローチャートである。
並列実行可能なDOループを処理するために生成する並
列プロセスの数の算出のために、この処理では、まず、
ステップ66において、当該DOループの実行情報の実行コ
ストフィールドに格納されている実行コストの値を当該
システムに固有の並列実行最小コストで除算して、並列
プロセス生成可能数を算出する。次に、ステップ67にお
いて、当該DOループのループ繰り返し回数が、算出した
並列プロセス生成可能数より大きいか否かを判定し、当
該DOループのループ繰り返し回数が大きい場合には、そ
のままステップ69に進み、また、当該DOループのループ
繰り返し回数が大きくなり(並列プロセス生成可能数の
方が大きい)場合には、ステップ68において、並列プロ
セス生成可能数を、当該ループのループ繰り返し回数に
変更して、ステップ69に進む。
ステップ69においては、並列プロセス生成最大数が並
列プロセス生成可能数より大きいか否かを判定する。並
列プロセス生成最大数の方が大きい場合、ステップ70に
おいて、生成プロセス数を並列プロセス生成可能数と決
定する。また、並列プロセス生成可能数の方が大きい場
合には、ステップ71において、生成プロセス数を並列プ
ロセス生成最大数と決定する。
次に、ステップ72において、上述の処理により決定し
た生成プロセス数が“1"であるか否かを判定する。生成
プロセス数が“1"であると判定されると、並列プロセス
処理により当該DOループの処理を行うことは、並列プロ
セス処理のためのオーバーヘッドが大きくなるので、逐
次オブジェクトの処理とする。このため、この¥DISPの
処理を終了する。また、決定した生成プロセス数が“1"
でなく、複数であると判定されると、そのまま並列プロ
セスの処理により、当該並列処理可能なDOループを処理
を並列プロセスにより行えば、能率よく処理を行えるの
で、処理をリターンして、¥DISPライブラリの処理(ス
テップ62)に戻る。
これにより、並列実行可能なDOループの実行を並列実
行するための最適な数の並列プロセスが決定される。こ
の最適な数の並列プロセスの生成数が求められると、並
列プロセス数から各プロセスのループ繰り返し初期値と
終値を決定して、並列プロセスを生成するため、並列実
行による性能低下はなく、当該並列実行可能なDOループ
の実行速度が向上する。
第6図は、並列プロセスのプロセス情報テーブルの構
成の一例を示す図である。
プロセス制御テーブル74は、チェインデータフィール
ド75,並列実行可能DOループの実行情報アドレスフィー
ルド76,並列プロセス終了通知用ECBフィールド77,並列
プロセスのループ繰り返し初期値フィールド78,および
並列プロセスのループ繰り返し終値フィールド79から構
成されている。例えば、チェインデータフィールド75
は、複数の当該プロセス情報テーブルをチェインするた
めのチェンスデータのフィールドであり、次にチェイン
するプロセス情報テーブルのアドレスを設定する。並列
実行可能DOループの実行情報アドレスフィールド76は、
並列プロセスの実行制御を行う際に必要な実行情報を保
持するため、入力引数の並列実行可能DOループの実行ア
ドレスを設定する。並列プロセス終了通知用ECBフィー
ルド77は、該並列プロセスが終了したことを連絡する連
絡領域である。並列プロセスのループ繰り返し回数の初
期値フィールド78は、並列プロセスのループ繰り返し回
数の初期値を設定する。また、並列プロセスのループ繰
り返し回数の終値フィールド79は、並列プロセスのルー
プ繰り返し回数の終値を設定する。
このような並列プロセスのプロセス情報テーブルの複
数個が、並列プロセス保持キューのキューヘッダからチ
ェインされて、複数の並列プロセスが生成されている。
次に、FORTRANプログラムのDOループの処理を例とし
て具体的な並列プロセスの処理について説明する。
第7図は、処理例の説明のためのFORTRANプログラム
の一例を示す図であり、第8図は、並列制御に関する部
分の動作がわかる程度に第7図のFORTRANプログラムのD
Oループ部分をFORTRANライクに記述した並列オブジェク
トモジュールの構成を示す図である。
第7図および第8図を参照して説明する。第7図のFO
RTRANプログラムにおいて、DOループのプログラム部80
は、並列処理が可能なプログラム部分であり、このプロ
グラム部80に対して、コンパイラは並列プロセスを生成
して並列処理を行うため、第8図に示すような並列オブ
ジェクトモジュールを生成する。
並列オブジェクトモジュールでは、並列プロセスの処
理の実行前に、各々の並列プロセスの実行コスト値を確
定して実行コストフィールドに格納されているようにす
るため、まず、第1のコード81として“並列実行可能な
DOループの実行コストを計算し、その値をINF1(オブジ
ェクトモジュール中の並列実行可能なDOループ1の実行
情報領域)の実行コストフィールド(26;第2図)に格
納するコード”を生成する。次に、続く第2のコード82
として“CALL¥DISP(INF1,PTBL1)”なるコードを生成
する。第2のコード82の処理では、実行時ライブラリか
ら並列プロセスを生成し登録するための¥DISPライブラ
リ(31;第3図,第4図)が呼び出されて、処理が¥DIS
Pライブラリに移る。第2のコード82で呼び出される¥D
ISPライブラリの第1引数(INF1)は、並列実行可能なD
Oループの実行情報領域のアドレスであり、また、第2
引数(PTBL1)は、¥DISPライブラリの処理により生成
される並列プロセスのプロセス情報テーブル(41;第1
図,第6図)のアドレスである。更に次に続く第3のコ
ード83としては“CALL ¥WAIT(1,PTBL1,…)”なるコ
ードを生成する。第3のコード83の処理では、実行時ラ
イブラリの並列プロセスの完了待ちの処理のため¥WAIT
ライブラリ(33;第3図)を呼び出す。ここで呼び出さ
れる¥WAITライブラリの第1引数(1)は並列実行可能
なDOループの数であり、第2引数(PTBL1)以降は、生
成された並列プロセスのプロセス情報テーブルのアドレ
スである。
次に続く第4のコード84としては、“GOTO LAB1"にな
るコードが生成される。これによりラベルLAB1まで分岐
する。これは、更に次に続く第5のコード85の並列実行
可能なDOループのオブジェクトコード「 LAB10; DO 10 I=1,500 10 X(I)=Y(I)*Z(I) 呼び元(¥PRCS)に戻るコード」、 更に続く第6のコード86の逐次実行のDOループのオブジ
ェクトコード「 DO 10 I=1,500 10 X(I)=Y(I)*Z(I)」 を、ここでは実行しないので、更に次の第7のコード87
の部分まで分岐するためである。
オブジェクトモジュールの処理は、メインタスク(TC
B0)で行なわれ、上述の第1のコード81,第2のコード8
2,第3のコード83,第4のコード84,および続く第7のコ
ード87の処理により、メインタスクの処理は終了する。
このメインタスクの処理により、並列プロセスは生成さ
れて登録され、次にサブタスクの処理により並列プロセ
スが並列実行されることになる。
この並列プロセスの実行は、前述したように、¥PRCS
ライブラリ(32;第3図)に処理が移ってから実行され
る。第5のコード85の並列実行可能なDOループのオブジ
ェクトコードの処理は、¥PRCSライブラリから呼び出さ
れ、生成された並列プロセスで並列実行される。なお、
¥PRCSライブラリの処理は、プログラム先頭で生成され
たユーザ指定数のサブタスクのもとでの並列プロセスの
処理である。
また、第2のコード82の¥DISPライブラリの処理にお
いて、生成し登録する並列プロセスの生成プロセス数が
1と判断(ステップ72;第5図)された場合には、直ぐ
に¥DISPライブラリの処理を終了して、第6図のコード
86の逐次実行のDOループのオブジェクトコードの処理が
実行される。この場合には、逐次オブジェクトの処理を
行うことにより、並列プロセス処理のオーバーヘッドを
生ずることなく、能率よく、当該DOループの処理を行う
ことができる。
以上、本発明を実施例にもとづき具体的に説明した
が、本発明は、前記実施例に限定されるものではなく、
その要旨を逸脱しない範囲において種々変更可能である
ことは言うまでもない。
〔発明の効果〕
以上、説明したように、本発明によれば、並列実行可
能なDOループの処理を並列プロセス処理により実行する
場合に、当該DOループの演算量にかかる実行コスト値を
基に並列プロセスの生成個数を決定するで、並列実行に
伴う並列プロセス処理のオーバーヘッドによる性能低下
の影響を考慮に入れた並列プロセスの生成個数とするこ
とができ、並列実行可能なDOループの処理実行に対し
て、効率的な並列実行を実現できる。特に、DOループの
回数が確定しない状態であっても、正確な実行コスト値
を求めることができ、その結果として、ソースプログラ
ムに最適な並列プロセス数を決定することが可能にな
る。
【図面の簡単な説明】
第1図は、本発明の一実施例にかかるプロセス並列実行
方法による並列処理の要素の全体構成を説明するブロッ
ク図、 第2図は、本発明の一実施例にかかるオブジェクトモジ
ュールの詳細構成を示す図、 第3図は、本発明の一実施例にかかるプロセス並列実行
方式による処理の流れを説明するフローチャート、 第4図は、¥DISPライブリの処理を示すフローチャー
ト、 第5図は、並列プロセスの生成個数を算出する処理フロ
ーを示すフローチャート、 第6図は、並列プロセスのプロセス情報テーブルの構成
の一例を示す図、 第7図は、処理例の説明のためのFORTRANプログラムの
一例を示す図、 第8図は、並列制御に関する部分の動作がわかる程度に
第7図のFORTRANプログラムのDOループ部分をFORTRANラ
イクに記述した並列オブジェクトモジュールの構成を示
す図である。 図中、1……オペレーテングシステム、2……ユーザメ
モリ空間、3……実行時ライブラリ、4……並列プロセ
ス保持キュー、5……オブジェクトモジュール、6……
逐次オブジェクト命令例、7……並列プロセスオブジェ
クト命令例、8……データ領域、9……並列実行可能DO
ループ実行情報、10……ユーザ空間、11……タスク、1
2,13……サブタスク、40……キューヘッダ、41,42……
プロセス情報テーブル。
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 平2−132526(JP,A) 特開 平2−183833(JP,A) 特開 平2−132547(JP,A) 特開 平1−108638(JP,A) (58)調査した分野(Int.Cl.6,DB名) G06F 9/45 G06F 9/46 360 G06F 15/16 370 - 430

Claims (8)

    (57)【特許請求の範囲】
  1. 【請求項1】複数の命令プロセッサを有するマルチプロ
    セッサシステムにおいて、高級言語で記述されたソース
    プログラムをオブジェクトモジュールに変換し、並列実
    行可能な並列化対象部分の処理に対して並列プロセスを
    生成し、複数の命令プロセッサ上で並列プロセスを実行
    することにより並列処理を行うプロセス並列実行方法で
    あって、 前記ソースプログラムをオブジェクトモジュールに変換
    する時、並列実行可能な並列化対象部分の実行時間がソ
    ースプログラム中で指定されている場合には、その実行
    時間の値、ソースプログラム中で指定されていない場合
    には並列プロセスオブジェクト命令列の中間語の語数お
    よびプログラムの繰り返し計算を行う各々のループの繰
    り返し回数から計算して求めた並列プロセス部分の演算
    量の値を、並列実行可能な並列化対象部分の逐次実行時
    間の目安を与える実行コスト値としてオブジェクトモジ
    ュール中に設定し、並列プロセスの実行直前に、前記実
    行コスト値に応じて並列プロセスの生成個数を決定し、
    決定した生成個数の並列プロセスを生成し、その並列プ
    ロセスの実行により並列処理を行うことを特徴とするプ
    ロセス並列実行方法。
  2. 【請求項2】並列プロセスの実行直前に行う並列プロセ
    スの生成個数の決定は、実行コスト値をもとにして、並
    列プロセスの最大生成個数を定め、プログラムの繰り返
    し計算を行う各々のループの繰り返し回数から、並列プ
    ロセスの生成個数を決定することを特徴とする請求項1
    に記載のプロセス並列実行方法。
  3. 【請求項3】オブジェクトモジュール中に設定する実行
    コスト値は、並列プロセスオブジェクト命令列を実行す
    るための実行情報領域中に設けた実行コストフィールド
    に設定することを特徴とする請求項1に記載のプロセス
    並列実行方法。
  4. 【請求項4】高級言語で記述されたソースプログラムを
    オブジェクトモジュールに変換する時に、ソースプログ
    ラムの繰り返し計算を行う各々のループの繰り返し回数
    が確定しない場合、並列プロセスオブジェクト命令列の
    中間語の語数およびソースプログラムの繰り返し計算を
    行う各々のループの繰り返し回数から並列プロセスの演
    算量を計算し、その計算結果を実行コストフィールドに
    格納する処理を指示する中間コードを、オブジェクトモ
    ジュール中に生成することを特徴とする請求項3に記載
    のプロセス並列実行方法。
  5. 【請求項5】並列プロセスの実行直前に行う並列プロセ
    スの生成個数の決定により、生成する並列プロセスの個
    定が1と決定された場合には、逐次オブジェクトの処理
    を継続し、逐次オブジェクト処理により並列プロセスオ
    ブジェクト命令列の処理を行うことを特徴とする請求項
    4に記載のプロセス並列実行方法。
  6. 【請求項6】請求項1に記載のプロセス並列実行方法を
    用いて、高級言語で記述されたプログラムをマルチプロ
    セッサシステムで実行する場合の実行制御は、オブジェ
    クトモジュールのオブジェクト命令列の実行中に並列実
    行部分の処理単位の並列プロセスが実行可能となった時
    点で、ソースプログラムをオブジェクトモジュールに変
    換する時にソースプログラム中で指定されている実行時
    間の値、または並列プロセスオブジェクト命令列の中間
    語の語数およびプログラムの繰り返し計算を行う各々の
    ループの繰り返し回数から計算して求めた並列プロセス
    部分の演算量の値が設定されているオブジェクトモジュ
    ール中の実行情報領域の実行コストフィールドの実行コ
    スト値に応じて並列プロセスの生成個数を決定し、決定
    した生成個数の並列プロセスを生成し、並列実行時の実
    行制御を行う複数の制御部分を含む並行実行時ライブラ
    リを呼び、並列プロセスのキュー登録を行い、複数のプ
    ロセスのスケジュールタスクがキューから並列プロセス
    を取り出し、並列処理を実行することを特徴とするプロ
    セス並列実行方法。
  7. 【請求項7】並列実行時ライブラリに、生成する並列プ
    ロセスのオブジェクトアドレスと、実行コストフィール
    ドを含む並列プロセス実行情報の実行情報アドレスと、
    生成する並列プロセスの繰り返し初期値と、生成する並
    列プロセスの繰り返し終値とを設定するプロセス情報テ
    ーブルを備え、当該プロセス情報テーブルをキューに登
    録し、並列プロセスのスケジュールを行い、キューから
    プロセス情報テーブルを取り出して、並列プロセスの実
    行を行うことを特徴とする請求項6に記載のプロセス並
    列実行方法。
  8. 【請求項8】高級言語で書かれたプログラムをコンパイ
    ルし、オブジェクトモジュールに変換し、複数の処理装
    置で並行実行する際、オブジェクトモジュールの実行中
    に並列実行単位である並列プロセスが実行可能となった
    時点で、該並列プロセスのキュー登録をする並列実行ラ
    イブラリを呼び、複数のプロセススケジュールタスクが
    キューからプロセスを取り出して、並列処理を実行する
    プロセス並列実行装置であって、 オブジェクトモジュールと並列実行時ライブラリとのイ
    ンタフェース情報として、オブジェクトモジュールの実
    行情報領域に並列プロセスの逐次実行時間の目安を与え
    る実行コストフィールドを設け、 高級言語を機械語コードに翻訳するコンパイラにより、
    並列プロセスの実行時間がプログラムの中で指定してあ
    る場合は、その指定値を、並列プロセスの実行時間がプ
    ログラムの中で指定していない場合は、当該並列プロセ
    ス部分の演算量をコンパイラ内部の対応中間語の語数お
    よびプログラムのループ計算のループ繰り返し回数に着
    目して計算して求めた演算量の値を前記実行コストフィ
    ールドに設定させ、コンパイル時に並列プロセス部分の
    演算量が確定しない場合には、当該並列プロセス部分の
    演算量を計算し、その演算量の計算結果を当該実行コス
    トフィールドへ格納するコードを生成し、コンパイル時
    に並列プロセス部分の演算量が確定する場合は、計算し
    た演算量を対応の実行コストフィールドに設定させ、 プロセス実行時に、前記実行コストフィールドの実行コ
    ストをもとにして、並列プロセス最大生成数を決定し、
    プログラムのループ計算のループ繰り返し回数から、ル
    ープの繰り返しに関して分割する並列プロセス生成個数
    を決定する手段を備えることを特徴とするプロセス並列
    実行装置。
JP2212264A 1990-08-09 1990-08-09 プロセス並列実行方法および装置 Expired - Lifetime JP2818016B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2212264A JP2818016B2 (ja) 1990-08-09 1990-08-09 プロセス並列実行方法および装置
US07/743,031 US5524242A (en) 1990-08-09 1991-08-09 System and method for determining the number of parallel processes to be created according to run cost value and parallelization overhead

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2212264A JP2818016B2 (ja) 1990-08-09 1990-08-09 プロセス並列実行方法および装置

Publications (2)

Publication Number Publication Date
JPH0498323A JPH0498323A (ja) 1992-03-31
JP2818016B2 true JP2818016B2 (ja) 1998-10-30

Family

ID=16619704

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2212264A Expired - Lifetime JP2818016B2 (ja) 1990-08-09 1990-08-09 プロセス並列実行方法および装置

Country Status (2)

Country Link
US (1) US5524242A (ja)
JP (1) JP2818016B2 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6889243B1 (en) * 1995-04-13 2005-05-03 Hitachi, Ltd. Job scheduling analysis method and system using historical job execution data
JP3755165B2 (ja) * 1995-06-22 2006-03-15 富士通株式会社 並列処理手続き選定装置及び方法
US6886167B1 (en) 1995-12-27 2005-04-26 International Business Machines Corporation Method and system for migrating an object between a split status and a merged status
IL123512A0 (en) * 1998-03-02 1999-03-12 Security 7 Software Ltd Method and agent for the protection against hostile resource use access
US6334159B1 (en) * 1998-12-22 2001-12-25 Unisys Corporation Method and apparatus for scheduling requests within a data processing system
US6973650B1 (en) 1999-11-09 2005-12-06 Microsoft Corporation Method of pipelined processing of program data
US7137116B2 (en) * 1999-11-09 2006-11-14 Microsoft Corporation Method and system for performing a task on a computer
EP1347375A1 (en) * 2002-02-07 2003-09-24 Sap Ag Method and apparatus for parallel distributed compilation
US7146360B2 (en) 2002-12-18 2006-12-05 International Business Machines Corporation Method and system for improving response time for database query execution
US7725643B1 (en) * 2004-05-04 2010-05-25 Oracle America, Inc. Methods and systems for detecting and avoiding an address dependency between tasks
JP3901180B2 (ja) * 2004-06-30 2007-04-04 日本電気株式会社 プログラム並列化装置及びその方法並びにプログラム
JP4405365B2 (ja) * 2004-10-27 2010-01-27 パナソニック株式会社 プログラム変換装置及び方法
US8046565B2 (en) * 2006-12-06 2011-10-25 Kabushiki Kaisha Toshiba Accelerator load balancing with dynamic frequency and voltage reduction
JP4908363B2 (ja) * 2007-09-25 2012-04-04 株式会社東芝 情報処理装置、並列処理最適化方法およびプログラム
US20090172353A1 (en) * 2007-12-28 2009-07-02 Optillel Solutions System and method for architecture-adaptable automatic parallelization of computing code
US8468509B2 (en) * 2008-03-27 2013-06-18 Intel Corporation Advance trip count computation in a concurrent processing environment
US9128747B2 (en) * 2012-03-20 2015-09-08 Infosys Limited Methods and systems for optimizing the performance of software applications at runtime
CN103150178A (zh) * 2013-02-05 2013-06-12 联发科技(新加坡)私人有限公司 一种开机显示控制方法及处理器芯片
US9830134B2 (en) * 2015-06-15 2017-11-28 Qualcomm Incorporated Generating object code from intermediate code that includes hierarchical sub-routine information

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3623007A (en) * 1967-06-14 1971-11-23 Bell Telephone Labor Inc Feedback control monitor for stored program data processing system
US4414624A (en) * 1980-11-19 1983-11-08 The United States Of America As Represented By The Secretary Of The Navy Multiple-microcomputer processing
US4517641A (en) * 1982-04-30 1985-05-14 International Business Machines Corporation Lookahead I/O device control subsystem
US5021947A (en) * 1986-03-31 1991-06-04 Hughes Aircraft Company Data-flow multiprocessor architecture with three dimensional multistage interconnection network for efficient signal and data processing
JP3053092B2 (ja) * 1987-06-05 2000-06-19 株式会社日立製作所 並列化コンパイル方法
JPH01108638A (ja) * 1987-10-21 1989-04-25 Hitachi Ltd 並列化コンパイル方式
JP2738692B2 (ja) * 1988-01-29 1998-04-08 株式会社日立製作所 並列化コンパイル方法
US5050070A (en) * 1988-02-29 1991-09-17 Convex Computer Corporation Multi-processor computer system having self-allocating processors
US4920487A (en) * 1988-12-12 1990-04-24 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Method of up-front load balancing for local memory parallel processors
US5077661A (en) * 1989-05-03 1991-12-31 Hewlett-Packard Company Assignment-dependent resource allocation method
US5471622A (en) * 1989-10-04 1995-11-28 Paralogic, Inc. Run-time system having nodes for identifying parallel tasks in a logic program and searching for available nodes to execute the parallel tasks
US5404521A (en) * 1990-07-31 1995-04-04 Top Level Inc. Opportunistic task threading in a shared-memory, multi-processor computer system

Also Published As

Publication number Publication date
US5524242A (en) 1996-06-04
JPH0498323A (ja) 1992-03-31

Similar Documents

Publication Publication Date Title
JP2818016B2 (ja) プロセス並列実行方法および装置
US5093916A (en) System for inserting constructs into compiled code, defining scoping of common blocks and dynamically binding common blocks to tasks
Puschner et al. Calculating the maximum execution time of real-time programs
EP0191159B1 (en) Method for controlling execution of application programs written in high level program language
JP3311462B2 (ja) コンパイル処理装置
US5202975A (en) Method for optimizing instruction scheduling for a processor having multiple functional resources
JP2921190B2 (ja) 並列実行方式
US20020013937A1 (en) Register economy heuristic for a cycle driven multiple issue instruction scheduler
JP2015084251A (ja) ソフトウェア・アプリケーションの性能向上
JPH01108638A (ja) 並列化コンパイル方式
CA2290649A1 (en) Method for compiling high level programming languages
JPH03230225A (ja) プロセス分散方法
Michell et al. Tasklettes–a fine grained parallelism for Ada on multicores
Kazi et al. Coarse-grained speculative execution in shared-memory multiprocessors
Beck et al. Static scheduling for dynamic dataflow machines
Kazi et al. Coarse-grained thread pipelining: A speculative parallel execution model for shared-memory multiprocessors
Bajrovic et al. Automatic performance tuning of pipeline patterns for heterogeneous parallel architectures
EP0481615A2 (en) Global instruction scheduler for a computer
Planas et al. AMA: Asynchronous management of accelerators for task-based programming models
Herzeel et al. Dynamic parallelization of recursive code: part 1: managing control flow interactions with the continuator
RAS GRAPHITE-OpenCL: Generate OpenCL code from parallel loops
George et al. An empirical evaluation of design abstraction and performance of thrust framework
Ghose et al. PySchedCL: Leveraging Concurrency in Heterogeneous Data-Parallel Systems
US20100077384A1 (en) Parallel processing of an expression
Nair An Analytical study of Performance towards Task-level Parallelism on Many-core systems using Java API

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20070821

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20080821

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20080821

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20090821

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20100821

Year of fee payment: 12

EXPY Cancellation because of completion of term