JP2011118589A - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
JP2011118589A
JP2011118589A JP2009274462A JP2009274462A JP2011118589A JP 2011118589 A JP2011118589 A JP 2011118589A JP 2009274462 A JP2009274462 A JP 2009274462A JP 2009274462 A JP2009274462 A JP 2009274462A JP 2011118589 A JP2011118589 A JP 2011118589A
Authority
JP
Japan
Prior art keywords
execution time
functional block
data structure
processing apparatus
information processing
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
Application number
JP2009274462A
Other languages
English (en)
Inventor
Satoshi Misaka
智 三坂
Keisuke Toyama
圭介 十山
Nobukazu Kondo
伸和 近藤
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 JP2009274462A priority Critical patent/JP2011118589A/ja
Publication of JP2011118589A publication Critical patent/JP2011118589A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

【課題】プログラム開発者の作業負担を軽減してパイプライン並列化プログラミングを容易にする。
【解決手段】プログラム生成装置において実行可能なプロセッサ数とデータフローモデルと各機能ブロック124の実行時間の入力に従って計算した1プロセッサ当たりの実行時間毎に機能ブロックの集合体のプログラムにプロセッサを割り当てて駆動させ、各機能ブロックの実行時間にバラつきがある場合には、機能ブロックを分割したプログラムにプロセッサを割り当てて駆動させることにより、実行可能なプロセッサ数に見合ったステージ構成のパイプライン並列化プログラムの自動生成を可能とする。
【選択図】図1

Description

本発明は、並列プロセッサを搭載する情報処理装置上で動作させるソフトウェアを生成する情報処理技術に関するものである。
並列プロセッサ構成搭載情報処置装置はスーパーコンピュータ分野を中心に研究開発が実施されてきたが、昨今の技術進歩によってパーソナルコンピュータや組込みシステムにもマルチコアやメニイコア等、複数のプロセッサが搭載されつつある。またリーク電力の抑制に伴い、プロセッサの動作周波数を高くする事が出来難くなっており、動作クロックの高周波数化以外でプロセッサの性能を上げる為にはプロセッサをスケーラブルに増やす事が必要となってきた。そのため並列プロセッサを使いこなすソフトウェア技術である並列化プログラミング技術の需要が高まってきている。
並列プロセッサに対するプログラミングは従来のシングルプロセッサに対するプログラミングに加え、並列プロセッサ間の同期、非同期の関係も考慮してプログラミングを実施する必要がある。更に性能向上の為にプロセッサの実装数が増えるに従い、様々な事象及び状態を考慮しなければならず、人間の思考のみのプログラミングでは手に負えない事態が近付きつつある。
従ってデータや制御の流れを表したモデルを図示する事で出来るだけ必要最低限の仕様や設計については人間が実施し、詳細な実装コードの生成についてはコンピュータが実施するという技術の必要性が叫ばれている。その代表的な技術概念がモデル駆動並列化開発技術である。
モデル駆動並列化開発技術に関連し、例えば特許文献1は、データフローモデルに対してプログラム開発者に並列化したい箇所を指示してもらい、並列化プログラム生成手順により、並列化プログラムを自動生成し、その並列化プログラムを実行する並列化プログラム生成装置を開示している。なお、特許文献1に関する以下の説明においては、本明細書と特許文献1との用語の整合性を合わせる為、特許文献1に記載の解析モデルを前記データフローモデル、解析作業者をプログラム開発者、並列化連成解析プログラムを並列化プログラム、同じく並列化汎用連成解析装置を情報処理装置と置き換える事とする。
図2は、特許文献1の図1に記載の情報処理装置の全体構成図である。入力装置101、102、出力装置103、入出力処理装置104、主記憶装置105、処理装置群106及び記録装置107からなる装置である。矢印は情報の流れを示す。
この特許文献1に記載の発明は、ソースプログラムよりも上位の概念であるデータフローで計算量を考慮し、プログラム開発者が入力装置101、102及び出力装置103を用いてデータフローモデルの機能ブロックに対して並列化を指示し、入出力処理装置104、主記憶装置105、処理装置群106及び記録装置107を駆使する事により、並列化プログラムを自動生成することを特徴としている。
特開2001−154998号公報
ここで、パイプライン並列化を図3の処理例で検討する。データフローモデル120には入力源121から出力源122までデータフロー線123で直列接続された複数の機能ブロック124a〜124e(以下、124とする)が存在する。通常、一つのプロセッサで複数の機能ブロック124に対応するプログラムを直列に繋がれたデータの流れ123の手順に従って処理を実行していく。しかし、もし機能ブロック124毎にプロセッサを割り当て並列実行が可能ならば全体処理の高速化を図る事が期待される。図3のように直列に繋がれた機能ブロック数がM個で、実行可能なプロセッサ数がN個の場合、パイプライン処理は時間軸119に沿ってデータの入力タイミング125毎に実行可能なプロセッサを駆動させる処理に相当する。従ってプロセッサの並列動作により、データの流れの効率化が図れ、全体処理の高速化が図れる。この時のパイプライン処理においては、図3のようにあくまでも前のステージ(段)の機能ブロック124から出力されたデータ到着後に実行可能なプロセッサが処理を実施するのである。
特許文献1には、このパイプライン並列化を施したい各機能ブロック124を選択する事が記載されている。しかしながら、選択した機能ブロック124に対するデータの入力タイミング125を設定する必要がある事から、開発工数の増加を伴うという問題がある。
この原因はパイプライン並列化を施したいM個の機能ブロック全てに対するデータの入力タイミング125を設定する作業にある。一般的には時間を用いてデータの入力タイミング125を設定する。しかし機能ブロック毎に処理の実行時間126を見積もる、または計測する事が必要となり、大変な工数がかかる作業となる。また性能の向上化の為、スケーラブルにパイプライン並列化を施す機能ブロック124の数Mが多くなるに従い、プログラム開発者の作業負担は増加してヒューマンエラーに繋がり易くなり、不具合が生じる確率が上がる。その結果、更に検証、テストに要する工数も増える事になる。
本発明の目的は、プログラム開発者の作業負担を軽減してパイプライン並列化プログラミングを容易にするため、データの入力タイミングの時間設定をプログラム開発者が実施する必要のないプログラムを自動生成する情報処理装置を提供することにある。
上記の目的を達成するため、本発明においては、処理部と記憶部と入出力部とを備え、複数の並列プロセッサを搭載した実行環境で実行させる並列化実行形式ファイルを自動的に生成する情報処理装置を、処理部が、実行環境で実行可能なプロセッサ数と、データフローモデルを構成する機能ブロックのモデル要素の集合を記述したモデルファイルに基づき、並列化指示文指示句が記述された並列化プログラムファイルを出力する並列化トランスレータと、並列化プログラムファイルに基づき、単数ないし複数の機械語プログラムを実行出来るように繋ぎ合わせた前記並列化実行形式ファイルを出力するコンパイラを順次処理する構成とする。
また、上記の目的を達成するため、本発明においては、処理部と記憶部とを備え、複数のプロセッサを搭載した実行環境で実行させる並列化実行形式ファイルを生成する情報処理装置を、処理部が、機能ブロックとデータフロー線の直列接続で構成したデータフローモデルから、機能ブロックのモデル要素の集合を記述したモデルファイルを生成する開発環境と、実行環境で実行可能なプロセッサ数とモデルファイルに基づき、並列化指示文指示句が記述された並列化プログラムファイルを出力する並列化トランスレータと、並列化プログラムファイルに基づき、単数ないし複数の機械語プログラムを実行出来るように繋ぎ合わせた並列化実行形式ファイルを出力するコンパイラを処理し、並列化トランスレータは、モデルファイルに記述された機能ブロック各々に対応し、その実行時間を格納する単数ないし複数の機能ブロックデータ構造と1つのデータ構造ポインタで構成した並列化ステージリンクリストを生成して記憶部に記憶し、この並列化ステージリンクリストを探索することにより、実行時間の合計を実行可能なプロセッサ数で割った値である1プロセッサ当たりの実行見積時間に収まる機能ブロックの集合体に相当するプログラムを1プロセッサ毎に割り当てる構成とする。
上述の課題を解決するために、本願によって開示される発明のうち、代表的なものの概要を簡単に説明すれば、以下の通りである。
すなわち実行可能なプロセッサ数とデータフローモデルの入力から、機能ブロック毎の実行時間を計算し、その計算結果から更に全機能ブロックの総実行時間を計算した結果から1プロセッサ当たりの実行見積時間を計算し、この実行見積時間にほぼ収まるように直列接続順で纏めた機能上位ブロックに対するプログラムを機能上位ブロック内の合計の総実行見積時間毎に実行するパイプライン並列化プログラムを自動生成する。
また、生成されたパイプライン並列化プログラムを処理装置で実行しながら各機能ブロックで要した処理に要した実行時間を計測し、計測後の全機能ブロックの総実行時間から1プロセッサ当たりの実行見積時間を再度計算し、実行見積時間にほぼ収まるように直列接続順で纏めた機能上位ブロックに対するプログラムを機能上位ブロック内の合計の総実行時間毎に実行する並列化プログラムを再自動生成する。
さらに、1回目の計算後及び計測後の全機能ブロックの実行時間にバラつきがある場合、実行時間の長い機能ブロックのモデルに対し、仕様で更に機能ブロックに分割する事が許されておれば、仕様に従い更に機能ブロックを分割し、機能ブロック毎の実行時間を再度計算及び計測し、それらの結果から再度、1プロセッサ当たりの実行見積時間を計算し、前記実行見積時間にほぼ収まるように直列接続順で纏めた機能上位ブロックに対するプログラムを機能上位ブロック内の合計の総実行時間毎に実行するパイプライン並列化プログラムを自動生成する。
本発明によれば、実行可能なプロセッサ数に見合ったステージ構成のパイプライン並列化プログラムの自動生成が可能となる。
第1の実施例に係るパイプライン並列処理化の一例を示す図である。 従来の並列化プログラム生成装置の全体構成図である。 パイプライン並列化の処理を説明するための図である。 第1の実施例に係る、情報処理装置の処理機能を示す図である。 第1の実施例に係る、情報処理装置の一構成例を表す図である。 第1の実施例に係る、並列化トランスレータのフローチャートを示す図である。 第1の実施例に係る、並列化ステージリンクリストを説明する図である。 図6の分解処理手順の詳細フローチャートを示す図である。 第1の実施例に係る、並列化ステージリンクリストの1例目を示す図である。 図8中の主要な手続きの操作の様子を説明するための図である。 第1の実施例に係る、並列化ステージリンクリストの2例目を示す図である。 図6中の指示文指示句フラグ挿入処理手順の詳細のフローチャートを示す図である。 第1の実施例に係る、パイプライン並列処理化の他の例を示す図である。 図6の分解処理手順を実施することなく処理した場合の例を示す図である。
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の機能を有する部材には同一の符号を付し、その繰り返しの説明は省略する場合がある。また、本願明細書で用いる用語の意味は下記の通りである。
「モデル」とは、所定のデータを入力して所定のデータに処理する複数の機能ブロックの集合体である。ここで機能ブロックは、モデルが実現したい機能のそれぞれを示している。
「モデルファイル」とは、上記モデルの構成を表すファイルであり、機能ブロック間の関係を示すファイルである。例えば、モデルファイルは、特定の機能ブロックと他の機能ブロックとの間のつながり方等を示す。
「指示文」とは、既存のプログラム内で並列化を行う部分に挿入する事で並列化の方法を指定する1文である。例えばOpenMPの指示文は必ず、”#pragma omp …”という形を取り、「プログラムのここからここまでを並列化しなさい」と「指示」する事にしよう、という一種の並列プログラミングモデルまたはスタイルと呼ぶべきものである。
「指示句」とは、上記のような指示文の直後に続く、詳細な並列化の方法を指定する1文である。例えばOpenMPの“private”という指示句では”#pragma omp … private(i,j)”等という形を取り、「iとjをthreadに対するprivate変数とする」と「指示」する事にしよう、という一種の並列プログラミングモデルまたはスタイルと呼ぶべきものである。
図4は第1の実施例に係る情報処理装置の全体処理を示す機能ブロック図である。情報処理装置130は、モデル駆動開発環境131、並列化トランスレータ132、並列化コンパイラ133、実行環境134で構成する。
図5は情報処理装置130の全体ハードウェア構成の一例を表すブロック図である。情報処理装置130は、コンピュータ150、実行環境134、ケーブル151a、151bで構成する。コンピュータ150は、通常の計算機の構成を備え、バス160に接続された処理部となる中央処理部(Central Processing unit:以下CPU)161、記憶部であるメモリユニット162と格納装置163、及び各種データの入出力部となる入出力装置164で構成される。なお、本願明細書にあって、実行環境134とケーブル151を除いたコンピュータ150のみを情報処理装置と呼ぶ場合がある点、留意されたい。
コンピュータ150の格納装置163にはモデル駆動開発環境131、並列化トランスレータ132、並列化コンパイラ133のプログラムを格納する。CPU161は逐次格納装置163から、モデル駆動開発環境131、並列化トランスレータ132、並列化コンパイラ133のプログラムを呼び出し、データをメモリユニット162に読み書きし、並列化実行形式ファイル138をメモリユニット162から入出力装置164aに出力し、計測データファイル139を入出力装置163bからメモリユニット162に入力する。後で詳述するように、実行環境134は、複数のタイマー600内臓のプロセッサ601とメモリユニット162と入出力装置164とそれらを内部接続する図示を省略したバスで構成する。
図4の機能ブロック図に示すように、モデル駆動開発環境131は、プログラム開発者がグラフィカルユーザーインタフェース(Graphical User Interface:以下GUI)等を用いてデータフローモデルを設定し、データフローモデルを再現可能なモデルファイル135を出力する。その際、プログラム開発者はモデル駆動開発環境131の一機能であるコンピュータシミュレーションにより、設定したデータフローモデルの仕様及び設計の十分性を確かめ、十分性が満たされていれば、モデルファイル135を出力する旨をモデル駆動開発環境131に設定する。
並列化トランスレータ132は、モデルファイル135と実行可能なプロセッサ数136と計測データファイル139を入力し、それらの入力情報を元に並列化プログラムファイル137を作成し出力する。並列化プログラムファイル137は例えばC言語で記述されたプログラムにOpenMP(登録商標)の並列化指示文指示句を挿入したプログラムに相当する。また並列化トランスレータ132には各機能ブロック124の処理に相当するプログラムまたはライブラリが図5に示した格納装置163上に格納している。
図6は第1の実施例に係る、並列化トランスレータ132の処理フローチャートである。並列化トランスレータ132は、図4に示したように機能ブロックマージ器140、指示文指示句生成器142、コード生成器143で構成する。機能ブロックマージ器140は図6のトランスレータ処理手順200〜208に従って動作する。
トランスレータ処理手順200は、並列化トランスレータ132に実行可能なプロセッサ数136を入力する。
トランスレータ処理手順201は、並列化トランスレータ132にモデルファイル135を入力する。
トランスレータ処理手順202は、並列化トランスレータ132内でモデルファイル135のデータから、後で図7を用いて説明する並列化ステージリンクリスト300を生成する。
モデルファイル135は、データフローモデル120、つまり各機能ブロック124や各データフロー線123や任意の詳細仕様に関する情報を格納する。各機能ブロック124に関する情報としては、各機能ブロック124の処理に相当するプログラムまたはライブラリのファイルが格納している格納装置126の格納場所(例えば先頭番地及び終了番地等)を格納している。また各機能ブロックに対する接続先を表すデータも格納している。
図7は並列化トランスレータ132で生成された並列化ステージリンクリスト300を説明する図である。トランスレータ処理手順202では、モデルファイル135のデータから機能ブロック124分の数の機能ブロックデータ構造301と一つのデータ構造ポインタ302で構成された並列化ステージリンクリスト300を記憶部であるメモリユニット162内に生成・記憶する。
機能ブロックデータ構造301は、接続先の機能ブロックに対する機能ブロックデータ構造の先頭番地欄、実行時間欄303、指示文指示句フラグ欄304及び付加仕様欄305という要素で構成し、機能ブロック毎に生成する。また並列化ステージリンクリスト300の機能ブロックデータ構造301を辿る際はデータ構造ポインタ302から探索を開始する。付加仕様欄305には、後で説明するように、機能ブロックの分割許可数の数値が格納される。
本実施例では説明を具体化する為、図3の機能ブロック124と図7の機能ブロックデータ構造301を対応付ける。つまり、機能ブロック124aは機能ブロックデータ構造301a、機能ブロック124bは機能ブロックデータ構造301bとし、機能ブロック124eは機能ブロックデータ構造301eまで同様に対応付ける。
図6に戻り、トランスレータ処理手順203は、並列化トランスレータ132内でモデルファイル135から全ての機能ブロック124の処理に相当するプログラムまたはライブラリが格納場所の先頭番地及び終了番地データを読み込み、先頭番地から終了番地までプログラムまたはライブラリのファイルの行数を数え、数えた行数から実行時間126を累算する。特にライブラリのファイルの場合は機械語のプログラムとなっている。従って機械語間の処理時間が分かるので、機械語の命令コードを数える事で実行時間126の累算が可能である。
トランスレータ処理手順204は、トランスレータ処理手順203で累算した全ての機能ブロック124に対する実行時間126、または実行環境134で計測した計測データファイル139に格納の全ての機能ブロック124に対する実行時間126を、並列化ステージリンクリスト300内の各機能ブロック124に対応する機能ブロックデータ構造301の実行時間欄303に書き込む。
1回目のトランスレータ処理手順204ではトランスレータ処理手順203で累算した全ての機能ブロック124に対する実行時間126を用いる。計測データファイル139は図4から実行環境134に並列化実行形式ファイル138を入力して実際に実行し計測して初めて生成される。従って計測によって得られる機能ブロック124に対する実行時間126は2回目以降のトランスレータ処理手順204で用いる事になる。
トランスレータ処理手順205は、並列化ステージリンクリスト300内の全ての機能ブロックデータ構造301の実行時間欄303に格納された値の合計を計算し、その合計値をトランスレータ処理手順200で入力した実行可能なプロセッサ数136で割り、1プロセッサ当たりの実行見積時間を計算し、メモリユニット162内のメモリ306に格納する。その際、実行可能なプロセッサ数136の値をメモリユニット162内のメモリ307に格納する。以下、実行可能なプロセッサ数136の値を仮に3(個)と設定して説明する。
トランスレータ処理手順206は、各機能ブロックの実行時間欄303に格納された値を、1プロセッサ当たりの実行見積時間に向けて出来るだけ小さく分解する。このトランスレータ処理手順206を図面で説明する。
図8はトランスレータ処理手順206の詳細のフローチャートである。図9は並列化ステージリンクリスト300の1例を示し、図8のフローチャートを説明する図として用いる。図10は図8の手続き401から手続き407までの操作の様子を模式的に示す図である。
図8の手続き400は、並列化ステージリンクリスト300のデータ構造ポインタ302が先頭の機能ブロックデータ構造301を指す。図9ではデータ構造ポインタ302が機能ブロックデータ構造301aを指す事により、データフローモデル120の直列接続された先頭の機能ブロック124aについて指す事になり、データフローモデル120の接続順に各機能ブロック124に対する各機能ブロックデータ構造301の探索を開始する。
手続き401は、探索過程で機能ブロックデータ構造301の実行時間欄303と、メモリ306に格納されている1プロセッサ当たりの実行見積時間の値を比較する。実行時間欄303がメモリ306の値より大きい場合は手続き402へ、実行時間欄303がメモリ306の値以下の場合は手続き408へ遷移する。
手続き402は、現時点でデータ構造ポインタ302が指す機能ブロックデータ構造301の付加仕様欄305の機能ブロックの分割許可数の数値が2以上であるかを判別する。分割許可数の数値が2以上である場合は手続き403へ、1以下(0または1)である場合は手続き408へ遷移する。
手続き403は、付加仕様欄305の分割許可数の数値分の機能ブロックデータ構造301を新たに生成する。
手続き404は、手続き402によって分割が許可された機能ブロックに対する分割可能なプログラムまたはライブラリの格納場所であるメモリの先頭番地及び終了番地データをモデルファイル135から読み込み、先頭番地から終了番地までプログラムまたはライブラリのファイルの行数を数え、数えた行数から分割する機能ブロック毎に実行時間126を累算し、新たに生成しリンクした機能ブロックデータ構造の実行時間欄303毎に格納する。
手続き405は、現時点の機能ブロックデータ構造301を並列化ステージリンクリスト300からリンクを外す。
手続き406は、手続き405で並列化ステージリンクリスト300から機能ブロックデータ構造301を外した箇所に、新たに生成し実行時間欄303を格納した機能ブロックデータ構造をリンクする。
手続き407は、手続き405で並列化ステージリンクリスト300から外した機能ブロックデータ構造301を消去する。
手続き408は、データ構造ポインタ302が、現在指している機能ブロックデータ構造301の次に直列接続された機能ブロック124の機能ブロックデータ構造301を指すようにする。
手続き409は、データ構造ポインタが、直列接続された最後の機能ブロック124であるかどうか、どこにも後続の機能ブロック124を指していないかを判別する。もし最後の機能ブロック124であればトランスレータ手続き206は終了し、なければ手続き401に戻る。
手続き400から手続き409を繰り返す事により、並列化ステージリンクリスト300の機能ブロックデータ構造301の実行時間欄303の数値の全てにおいて、探索しながら出来るだけ1プロセッサ当たりの実行見積時間以下にするように操作をする事になる。但し、機能ブロックデータ構造301の付加仕様欄305の機能ブロック124の分割許可数の数値が2より小さく、機能ブロック124の分割が許可されない場合は例外となる。
図9の並列化ステージリンクリストの例では、実行時間欄303dの数値が26と、1プロセッサ当たりの実行見積時間であるメモリ306に格納の値10よりも大きいので、並列化ステージリンクリスト300の機能ブロックデータ構造301dに対してのみ、手続き401から手続き407までの操作がなされる。
図10は図8の手続き401から手続き407までの操作の様子を示す図である。図9の機能ブロックデータ構造301d中の付加仕様欄305dの数値が“2”であるので、2つの機能ブロックデータ構造301d1、301d2が新たに生成され、機能ブロックデータ構造301d1、301d2の実行時間欄303d1、302d2にモデルファイル135の情報を用いて累算された機能ブロック毎の実行時間126がそれぞれに格納され、機能ブロックデータ構造301dに代わり、新たに機能ブロックデータ構造301d1、301d2が並列化ステージリンクリスト300にリンクで挿入される。
図11は、図8の手続き402から手続き407までの操作が必要のない並列化ステージリンクリスト300の一例を示す。本並列化ステージングリストの例においては、全ての機能ブロックデータ構造301の実行時間欄303の数値が、1プロセッサ当たりの実行見積時間であるメモリ306に格納の値10以下なので、手続き402から手続き407までの操作の必要が無い。
図6に戻り、トランスレータ処理手順207は、トランスレータ処理手順205で算出した1プロセッサ当たりの実行見積時間内に収まっている機能ブロック124の集合に対し、指示文指示句フラグ欄304にフラグを立てる。
図13にパイプライン並列処理化の他の例を示した。図1と図13を用いて図12のトランスレータ処理手順207の詳細フローチャートを説明する。
図12の手続き500は、並列化ステージリンクリスト300のデータ構造ポインタ302が先頭の機能ブロックデータ構造301を指す。データ構造ポインタ302が機能ブロックデータ構造301aを指す事により、データフローモデル120の直列接続された先頭の機能ブロック124aを指す事になり、データフローモデル120の接続順に、各機能ブロックに対する機能ブロックデータ構造301の探索を開始する。
手続き501は、メモリユニット162内のメモリ308を0に初期化する。
手続き502は、メモリユニット162内のメモリ309に実行可能なプロセッサ数136を格納する。この時点ではメモリ307に格納の値と同じである。
手続き503は、現時点でデータ構造ポインタ302が指している機能ブロックデータ構造301の実行時間欄303の値をメモリ308の値と加算し、メモリ308に格納する。
手続き504は、メモリ308に格納されている実行時間126の値とメモリ306に格納されている実行見積時間の値を比較する。もしメモリ308の値がメモリ306の値以下である場合は手続き505へ、メモリ308の値がメモリ306の値よりも大きい場合は手続き506へ遷移する。
手続き505は、現時点でデータ構造ポインタ302が指している機能ブロックデータ構造301の指示文指示句フラグ欄304の値をTRUEにする。
手続き506は、メモリ309の値が1になっているかどうかを判別する。もしメモリ309の値が1である場合は手続き511へ、メモリ309の値が1でない場合は手続き507へ遷移する。
手続き507は、現時点でデータ構造ポインタ302が指している機能ブロックデータ構造301の指示文指示句フラグ欄304の値をFALSEにする。
手続き508は、メモリ308を0にクリアする。
手続き509は、メモリ308に現時点でデータ構造ポインタ302が指している機能ブロックデータ構造301の実行時間欄303の値を格納する。
手続き510は、メモリ309の値から1を引いた値を再度メモリ309に格納する。
手続き511は、手続き507は、現時点でデータ構造ポインタ302が指している機能ブロックデータ構造301の指示文指示句フラグ欄304の値をTRUEにする。
手続き512は、データ構造ポインタ302が、現在指している機能ブロックデータ構造301の次に直列接続された機能ブロック124の機能ブロックデータ構造301を指すようにする。
手続き513は、データ構造ポインタ302が、直列接続された最後の機能ブロック124であるかどうか、どこにも後続の機能ブロック124を指していないかを判別する。もし最後の機能ブロック124であればトランスレータ手続き207は終了し、なければ手続き503に戻る。
図1の並列化ステージリンクリスト300の例は、図10の並列化ステージリンクリスト300に対し、手続き500から手続き513を実施した結果であるが、メモリ309に保存された実行可能プロセッサ数の値が1になる状態がないため、手続き511のパスは通過していない例である。
一方、図13の並列化ステージリンクリスト300は、図11の並列化ステージリンクリスト300に対し、手続き500から手続き513を実施した結果である。
トランスレータ処理手順207の終了時点で、並列化ステージリンクリスト300の機能ブロックデータ構造301の指示文指示句フラグ欄304の値で、FALSEとなっている機能ブロックデータ構造301に対応する機能ブロック124を境に、実行可能なプロセッサにプログラムが割り付ける事が可能となる。
すなわち、先頭の機能ブロックデータ構造301から指示文指示句フラグ欄304にFALSEが表れるまでの機能ブロック124の直列接続された集合を機能上位ブロック128に纏め、その後、同じく指示文指示句フラグ欄304にFALSEになるまでの機能ブロック124の直列接続された集合を、機能上位ブロック128に纏められていく事になる。
よって、図1の並列化ステージリンクリスト300の場合、機能ブロックデータ構造301d2の指示文指示句フラグ欄304d2でFALSEなっているので、機能ブロック124aから機能ブロック124d1までの4つの集合が機能上位ブロック128aとなって1つ目のプロセッサが割り当てられ、機能ブロックデータ構造301eの指示文指示句フラグ欄304eでFALSEとなっているので、機能ブロック124d2で2つ目のプロセッサが割り当てられ、機能ブロック124eで3つ目のプロセッサが割り当てられる。
一方、図13の並列化ステージリンクリスト300場合、機能ブロックデータ構造301bの指示文指示句フラグ欄304bでFALSEなっているので、機能ブロック124aで1つ目のプロセッサが割り当てられ、機能ブロックデータ構造301dの指示文指示句フラグ欄304dでFALSEとなっているので、機能ブロック124bから機能ブロック124cまでの2つの集合が機能上位ブロック128aとなって2つ目のプロセッサが割り当てられ、最後の機能ブロック124eはTRUEとなっているので、機能ブロック124dから機能ブロック124eまでの2つの集合が機能上位ブロック128bとなって3つ目のプロセッサが割り当てられる。
図6の最後のトランスレータ処理手順208は、並列化ステージリンクリスト300を指示文指示句生成器142に入力し、OpenMP(登録商標)に代表されるような並列化指示文指示句が挿入されたスクリプトファイルを出力し、その変換出力したスクリプトを更にコード生成器143に入力し、並列化プログラムファイル137に変換し出力する。並列化プログラムファイル137は、実行可能なプロセッサのそれぞれに割り当てられた機能ブロック124及び機能上位ブロック128が動作するプログラムが収められている事になる。
並列化コンパイラ133は、並列化プログラムファイル137を入力し、並列化プログラムファイル137に記述のOpenMP(登録商標)の並列化指示文指示句とプログラム言語を解析して、並列化実行形式ファイル138に変換して出力する。
実行環境134は、図4に示したように、複数のタイマー600内臓のプロセッサ601とメモリユニット162とバス160と入出力装置164で構成する。
実行環境134は、入出力装置164cから並列化実行形式ファイル138を入力し、実際に並列化実行形式ファイル138で機能ブロック124及び機能上位ブロック128が動作するプログラムを各プロセッサ601で実行し、並列に動作をしている機能ブロック124及び機能上位ブロック128に相当する実行時間126を各タイマー600で計測し、その計測結果である実行時間126を全てメモリユニット162xに格納し、更に実行時間126を計測データファイル139に纏めて、入出力装置164dから出力する。
また、本実施例の変形例として、実行環境134のプロセッサ601自身を、ソフトウェアでプロセッサ命令の実行を模擬した命令シミュレータというソフトウェアに置き換えて、図5のコンピュータ150の格納装置163の内部に実装し、コンピュータシミュレーションとしてコンピュータ150の内部で機能ブロック124及び機能上位ブロック128が動作するプログラムの実行時間126を計測して、計測データファイル139に格納して、並列化トランスレータ132に入力してもよい。
以上詳述した本実施例による効果のうち代表的なものを記載すると、実行可能なプロセッサ数に見合ったステージ構成のパイプライン並列化プログラムの自動生成が可能となる。また図6の分解手続きにより、パイプライン並列化の処理効率が向上する。
図14は、本実施例の効果を説明するため、図9の例に対して手続き206無しで実施した場合の例である。
図9の並列化ステージリンクリスト300に対して分割手続き206無しで実施すると、一部の機能ブロック124の実行時間126が1プロセッサ当たりの実行見積時間よりもかなり大きいので、図14のパイプライン処理のような、機能ブロック124ないし機能上記ブロック128の処理時間の間にバラつきが発生し、処理時間の短い機能ブロック124ないし機能上記ブロック128がロックされて待ち状態になり、図1のパイプライン処理と比較して処理効率が悪くなる事が容易にわかる。
また、図13のパイプライン処理のように、機能ブロック124ないし機能上記ブロック128の処理時間の間にバラつきが少ないほど、処理効率が改善される事は一般的に知られており、図6の手続き206は、1プロセッサ当たりの実行見積時間に実行時間を近づける意味で、パイプライン並列化の処理効率向上により一層の効果を発揮することができる。
本発明は、並列プロセッサを搭載する処理装置上で動作させるソフトウェアを生成するプログラム生成のたの情報処理装置として極めて有用である。
101…入力装置、
2…入力装置、
103…出力装置、
104…入出力処理装置、
105…主記憶装置、
106…処理装置群、
107…記録装置、
108、109、110、111、112…処理手順
113…データフローモデルデータ
114…解析用汎用ライブラリ
115…並列化プログラム
116…解析結果データ
119…時間軸
120…データフローモデル
121…入力源
122…出力源
123…データフロー線
124…機能ブロック
125…データの入力タイミング
126…実行時間
127…総実行時間
128…機能上位ブロック
130…情報処理装置
131…モデル駆動開発環境
132…並列化トランスレータ
133…並列化コンパイラ
134…実行環境
135…モデルファイル
136…実行可能なプロセッサ数
137…並列化プログラムファイル
138…並列化実行形式ファイル
139…計測データファイル
140…機能ブロックマージ器
142…指示文指示句生成器
143…コード生成器
150…コンピュータ
151…ケーブル
160…バス
161…CPU
162…メモリユニット
163…格納装置
164…入出力装置
200〜208…トランスレータ処理手順
300…並列化ステージリンクリスト
301…機能ブロックデータ構造
302…データ構造ポインタ
303…実行時間欄
304…指示句指示文フラグ欄
305…付加仕様欄
306〜309…メモリ
400〜407、500〜513…手続き
600…タイマー
601…プロセッサ。

Claims (15)

  1. 処理部と記憶部とを備え、複数の並列プロセッサを搭載した実行環境で実行させる並列化実行形式ファイルを生成する情報処理装置であって、
    前記処理部は、
    機能ブロックとデータフロー線の直列接続で構成したデータフローモデルから、前記機能ブロックのモデル要素の集合を記述したモデルファイルを生成する開発環境と、
    前記実行環境で実行可能なプロセッサ数と、前記モデルファイルに基づき、並列化指示文指示句が記述された並列化プログラムファイルを出力する並列化トランスレータと、
    前記並列化プログラムファイルに基づき、機械語プログラムを実行出来るように繋ぎ合わせた並列化実行形式ファイルを出力するコンパイラを処理し、
    前記並列化トランスレータは、前記モデルファイルに記述された前記機能ブロック各々に対応し、実行時間を格納する複数の機能ブロックデータ構造と1つのデータ構造ポインタで構成した並列化ステージリンクリストを生成して前記記憶部に記憶し、前記並列化ステージリンクリストを探索することにより、前記実行時間の合計を前記実行可能なプロセッサ数で割った値である1プロセッサ当たりの実行見積時間に収まるプログラムを1プロセッサ毎に割り当てる、
    ことを特徴とする情報処理装置。
  2. 請求項1に記載の情報処理装置であって、
    前記機能ブロックデータ構造は、前記機能ブロックの接続先を格納する機能ブロックデータ構造の先頭番地欄と、前記機能ブロックの前記実行時間を格納する実行時間欄と、機能上位ブロックの境目を表す指示文指示句フラグ欄で構成され、
    前記データ構造ポインタは、前記データフローモデルの直列接続の最初の機能ブロックに対応する前記機能ブロックデータ構造を指す、
    ことを特徴とする情報処理装置。
  3. 請求項2に記載の情報処理装置であって、
    前記並列トランスレータは、
    前記モデルファイルに記述の全ての前記機能ブロックに対し、前記機能ブロックの処理に相当するプログラムまたはライブラリが格納している先頭番地及び終了番地データを読み込み、前記先頭番地から前記終了番地まで前記プログラムまたはライブラリのファイルの行数を数え、数えた行数から前記機能ブロックにおける実行見積時間を累算し、前記機能ブロックデータ構造の前記実行時間欄に前記実行見積時間を格納する、
    ことを特徴とする情報処理装置。
  4. 請求項3に記載の情報処理装置であって、
    前記並列トランスレータは、
    前記実行環境が前記並列化実行形式ファイルを実行し、前記プロセッサの実行時間を計測した結果のデータである計測データファイルに基づき、前記機能ブロックデータ構造の前記実行時間欄の前記実行見積時間を変更する、
    ことを特徴とする情報処理装置。
  5. 請求項4に記載の情報処理装置であって、
    前記機能ブロックデータ構造は分割可能数を保存する付加仕様欄を更に有し、
    前記並列トランスレータは、
    前記並列化ステージリンクリストを生成し、前記実行見積時間の累算の過程で、前記実行時間欄が前記実行見積時間よりも大きくなった場合、大きくなった時点の前記実行時間欄を所持する前記機能ブロックデータ構造の前記付加仕様欄の分割可能数に従い前記機能ブロックデータ構造を新たに生成する、
    ことを特徴とする情報処理装置。
  6. 請求項5に記載の情報処理装置であって、
    前記並列トランスレータは、
    新たに生成した前記機能ブロックデータ構造の、対応する先頭番地欄と、実行時間欄と、指示句フラグ欄の値を保存し、
    前記実行時間欄が前記実行見積時間よりも大きくなった時の前記機能ブロックデータ構造を前記並列化ステージリンクリストから外し、外した前記機能ブロックデータ構造の代わりに新たに生成した前記機能ブロックデータ構造を前記並列化ステージリンクリストに挿入してリンクした後、前記並列化ステージリンクリストの前記機能ブロックデータ構造を探索する、
    ことを特徴とする情報処理装置。
  7. 処理部と記憶部と入出力部とを備え、複数のプロセッサを搭載した実行環境で実行させる並列化実行形式ファイルを生成する情報処理装置であって、
    前記処理部は、
    前記実行環境で実行可能なプロセッサ数と、データフローモデルを構成する機能ブロックのモデル要素の集合を記述したモデルファイルに基づき、並列化指示文指示句が記述された並列化プログラムファイルを出力する並列化トランスレータと、
    前記並列化プログラムファイルに基づき、単数ないし複数の機械語プログラムを実行出来るように繋ぎ合わせた前記並列化実行形式ファイルを出力するコンパイラを順次処理する、
    ことを特徴とする情報処理装置。
  8. 請求項7に記載の情報処理装置であって、
    前記処理部が処理する前記コンパイラは、
    前記並列化プログラムファイルに対して、スレッド分割を施した高級言語プログラムに変換し、前記高級言語プログラムをアセンブラ言語プログラムに変換し、前記アセンブラ言語プログラムを前記機械語プログラムに変換することにより、前記並列化実行形式ファイルを出力する、
    ことを特徴とする情報処理装置。
  9. 請求項7に記載の情報処理装置であって、
    前記処理部が処理する前記並列化トランスレータは、
    前記モデルファイルに記述された前記機能ブロック各々の数だけ存在し、それぞれの前記機能ブロックに対応する単数ないし複数の機能ブロックデータ構造を有する並列化ステージリンクリストを生成して前記記憶部に記憶し、
    前記データフローモデルの直列接続の最初の機能ブロックに対応する機能ブロックデータ構造から順次前記並列化ステージリンクリストを探索する、
    ことを特徴とする情報処理装置。
  10. 請求項9に記載の情報処理装置であって、
    前記機能ブロックデータ構造は、前記機能ブロックの接続先を格納する機能ブロックデータ構造の先頭番地欄と前記機能ブロックの実行時間を格納する実行時間欄と機能上位ブロックの境目を表す指示文指示句フラグ欄を有し、
    前記並列化トランスレータは、前記指示文指示句フラグ欄の値に応じて、前記機能ブロックの処理を、複数の前記プロセッサに割り当てる、
    ことを特徴とする情報処理装置。
  11. 請求項10に記載の情報処理装置であって、
    前記並列化トランスレータは、前記実行時間欄の値の合計を前記実行可能なプロセッサ数で割った値である1プロセッサ当たりの実行見積時間に収まる前記機能ブロックの集合体に相当するプログラムを前記プロセッサ各々に割り当てるよう前記指示文指示句フラグ欄の値を設定する、
    ことを特徴とする情報処理装置。
  12. 請求項11に記載の情報処理装置であって、
    前記並列化トランスレータは、前記モデルファイルに記述の全ての前記機能ブロックに対し、前記機能ブロックの処理に相当するプログラムまたはライブラリが格納している前記記憶部の先頭番地及び終了番地を読み込み、前記先頭番地から前記終了番地まで前記プログラムまたはライブラリのファイルの行数を数え、数えた行数から前記機能ブロックにおける前記実行見積時間を累算し、前記機能ブロックデータ構造の前記実行時間欄に前記実行見積時間を格納する、
    ことを特徴とする情報処理装置。
  13. 請求項12に記載の情報処理装置であって、
    前記並列化トランスレータは、
    前記実行環境が前記並列化実行形式ファイルを実行する際に、前記プロセッサの実行時間を計測した結果のデータである計測データファイルに基づき、前記機能ブロックデータ構造の前記実行時間欄の前記実行見積時間を変更する、
    ことを特徴とする情報処理装置。
  14. 請求項10に記載の情報処理装置であって、
    前記機能ブロックデータ構造は分割可能数を保存する付加仕様欄を更に備え、
    前記並列トランスレータは、前記並列化ステージリンクリストを生成し、前記実行見積時間の累算の過程で、前記実行時間欄が前記実行見積時間よりも大きくなった場合、大きくなった時点の前記実行時間欄を所持する前記機能ブロックデータ構造の前記付加仕様欄に分割可能数分の前記機能ブロックデータ構造を新たに生成し、新たに生成した前記機能ブロックデータ構造の先頭番地欄と、実行時間欄と、指示句フラグ欄に所定の値を保存し、
    ことを特徴とする情報処理装置。
  15. 請求項14に記載の情報処理装置であって、
    前記並列トランスレータは、前記実行時間欄が前記実行見積時間よりも大きくなった時の前記機能ブロックデータ構造を前記並列化ステージリンクリストから外し、外した前記機能ブロックデータ構造の代わりに新たに生成した前記機能ブロックデータ構造を前記並列化ステージリンクリストに挿入してリンクした後、前記並列化ステージリンクリストの前記機能ブロックデータ構造を探索する、
    ことを特徴とする情報処理装置。
JP2009274462A 2009-12-02 2009-12-02 情報処理装置 Pending JP2011118589A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009274462A JP2011118589A (ja) 2009-12-02 2009-12-02 情報処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009274462A JP2011118589A (ja) 2009-12-02 2009-12-02 情報処理装置

Publications (1)

Publication Number Publication Date
JP2011118589A true JP2011118589A (ja) 2011-06-16

Family

ID=44283847

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009274462A Pending JP2011118589A (ja) 2009-12-02 2009-12-02 情報処理装置

Country Status (1)

Country Link
JP (1) JP2011118589A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11782708B2 (en) 2021-07-07 2023-10-10 Fujitsu Limited Arithmetic processing device and arithmetic processing method

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11782708B2 (en) 2021-07-07 2023-10-10 Fujitsu Limited Arithmetic processing device and arithmetic processing method

Similar Documents

Publication Publication Date Title
US10691419B2 (en) Reconstructing a high level compilable program from an instruction trace
Ghica et al. Bounded linear types in a resource semiring
JP5209059B2 (ja) ソース・コード処理方法、システム、及びプログラム
US9152389B2 (en) Trace generating unit, system, and program of the same
JP6141365B2 (ja) 逐次コンピュータプログラムコードを並列処理する方法及びシステム
Vafeiadis et al. Verifying fence elimination optimisations
JP4988789B2 (ja) シミュレーション・システム、方法及びプログラム
US11244090B2 (en) Systems and methods for extracting adjustable attributes of model components
Chakravarty et al. Automated, retargetable back-annotation for host compiled performance and power modeling
US10466988B2 (en) Systems and methods for automatic computer code parallelization
US20110107162A1 (en) Parallelization method, system and program
Hu et al. Exploring AADL verification tool through model transformation
US8959498B2 (en) Parallelization method, system and program
JP2013164657A (ja) 並列化方法、システム、及びプログラム
JP4770657B2 (ja) パイプライン合成システム、方法及びプログラム
JP2011118589A (ja) 情報処理装置
Yuan et al. Automatic enhanced CDFG generation based on runtime instrumentation
JP4860564B2 (ja) プログラムプロファイリング装置、プログラムプロファイリング方法、及びプログラム
JP2004013190A (ja) ソフトウエア開発環境、シミュレータ及び記録媒体
Gong et al. Automatic model building and verification of embedded software with UPPAAL
Mohan et al. Temporal analysis for adapting concurrent applications to embedded systems
César et al. Modeling pipeline applications in poetries
JP6981087B2 (ja) 情報処理装置、方法、及びプログラム
Kothari Scalable program comprehension for analyzing complex defects
Desai et al. Iterative cycle detection via delaying explorers