[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP5463699B2 - 並列処理支援プログラム、並列処理支援装置および並列処理支援方法 - Google Patents

並列処理支援プログラム、並列処理支援装置および並列処理支援方法 Download PDF

Info

Publication number
JP5463699B2
JP5463699B2 JP2009059747A JP2009059747A JP5463699B2 JP 5463699 B2 JP5463699 B2 JP 5463699B2 JP 2009059747 A JP2009059747 A JP 2009059747A JP 2009059747 A JP2009059747 A JP 2009059747A JP 5463699 B2 JP5463699 B2 JP 5463699B2
Authority
JP
Japan
Prior art keywords
parallel processing
program
function
code
specific code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009059747A
Other languages
English (en)
Other versions
JP2010211731A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2009059747A priority Critical patent/JP5463699B2/ja
Publication of JP2010211731A publication Critical patent/JP2010211731A/ja
Application granted granted Critical
Publication of JP5463699B2 publication Critical patent/JP5463699B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)

Description

この発明は、同一のプログラム内の命令を複数のプロセッサに分散して並列処理させるための並列処理支援プログラム、並列処理支援装置および並列処理支援方法に関する。
従来より、組み込みシステムによるプログラムの処理速度を上げるには、より動作周波数の高いプロセッサを搭載しなければならなかった。動作周波数の高いプロセッサを搭載した場合には、消費電力が増大してしまい、また、プロセッサの動作周波数にも物理的な限界がある。そこで、近年では、プロセッサの動作周波数を上げずに、同一のプログラム内の命令を複数のプロセッサ・コアに分散させて並列処理をすることで処理速度を上げる手法が採用される傾向にある(たとえば、下記特許文献1参照。)。
個々のプログラムの命令の構成を検証すると、命令レベルの並列性は2〜4程度であることが多いため(たとえば、下記非特許文献1参照。)、開発者によって、さらに投機的な実行などを導入することにより並列性を向上させるような手法も利用されている。さらに、上述のように命令レベルでの並列化にも限界があり、これを解消するために、プログラム内の手続き呼び出しなど、命令レベルよりも大きな粒度でプログラムを並列化し、複数のプロセッサにて実行することにより、処理性能を向上させる手法も注目されている。
特開平5―290003号公報
David W.Wall"Limits of instruction level parallelism"Technical Report 93/6,Digital WRL,November 1993.
しかしながら、上述したように同一のプログラム内の手続き呼び出しを複数のプロセッサによって分散させ、並列処理を実行するには、依存関係のない手続きを同時に呼び出し、かつ、プロセッサの待ち時間が少なくなるように適切な場所・順番で手続きの待ち合わせを実行させる必要がある。そのためには、可能な限り、同一システム内の他プロセッサで実行した結果が必要となるタイミングで待ち合わせをおこなうことが望ましい。
ところが、条件分岐やループ制御を含むプログラムでは、制御構造を考慮して待ち合わせを設定しなければならない。このとき、誤った待ち合わせを設定すると、起動していない手続きの待ち合わせをしたり、起動した手続きが終了する前にプログラムを終了して、再度手続きを呼び出したりしてしまい、プログラムを正常に動作させることができないという問題が起きてしまう。
したがって、開発者は、システムに実行させたいプログラムを入手すると、このプログラムのデータの流れと制御構造を解析し、適切な待ち合わせ箇所を個別に設定する必要があった。この作業には開発者の熟練度が求められる上に、作業時間もかかり、ミスも発生しやすいため、開発者にとって大きな負担となっていた。
本開示技術は、上述した従来技術による問題点を解消するため、プログラム内の処理の実行先プロセッサを分散して効率的な並列処理を実行させる並列処理用のプログラムを自動的に作成する並列処理支援プログラム、並列処理支援装置および並列処理支援方法を提供することを目的とする。
上述した課題を解決し、目的を達成するため、本開示技術は、コンピュータにおいて、複数のプロセッサによる並列処理の対象となる関数に特定のコードが付与されたプログラムを取得する処理と、取得されたプログラムの構文木が表す前記プログラム内の関数、文の間のデータ依存関係および制御の流れに基づいて、前記特定のコードが付与された関数の待ち合わせ箇所を特定する処理と、前記特定のコードが付与された関数の記述箇所を前記並列処理の開始を指示するコードに置換するとともに、特定された待ち合わせ箇所の前に、前記並列処理の終了を指示するコードを挿入する処理と、前記並列処理の開始と終了とを指示するコードが挿入されたプログラムを出力する処理とを、含むことを特徴とする。
本開示技術によれば、指示子が付与された関数の記述についての、呼び出しと待ち合わせ箇所を特定することによって、並列処理を実行するためのコードに書き換えられるため、自動的に並列処理用の記述に修正されたプログラムが出力される。
本並列処理支援プログラム、並列処理支援装置および並列処理支援方法によれば、プログラム内の処理の実行先プロセッサを分散して効率的な並列処理を実行させる並列処理用のプログラムを自動的に作成することができるという効果を奏する。
本実施の形態にかかる並列処理支援の概要を示す説明図である。 非同期遠隔手続き呼び出しによる並列処理を示す説明図である。 本実施の形態にかかる並列処理支援装置のハードウェア構成を示す説明図である。 本実施の形態にかかる並列処理支援装置の機能的構成を示すブロック図である。 並列処理支援の手順を示すフローチャートである。 並列処理用のARPCプラグマの書式を示す説明図である。 Cプログラムの一例を示すデータ列である。 図7のCプログラムの構文木を示す説明図である。 構文木によって表される関数の構成を示す説明図である。 並列処理用のCプログラムの作成手順を示すフローチャートである。 並列処理の待ち合わせ箇所の特定手順を示すフローチャートである。 待ち合わせ判定手順を示すフローチャートである。 制御構文内の待ち合わせ判定手順を示すフローチャートである。
以下に添付図面を参照して、この発明にかかる並列処理支援プログラム、並列処理支援装置および並列処理支援方法の好適な実施の形態を詳細に説明する。本実施の形態では、同一のプロセッサによって実行させることを念頭に作成されたプログラム、すなわち並列処理用の設定がなされていないプログラムの中から、設計者が指定した特定の処理に着目して、この処理を複数のプロセッサによって分散して実行させる並列処理用のプログラムを作成することによってマルチコアプロセッサによる並列処理の実行を支援する。
(並列処理支援の概要)
まず、本実施の形態にかかる並列処理支援について説明する。図1は、本実施の形態にかかる並列処理支援の概要を示す説明図である。図1のように、並列処理支援装置100は、任意のプログラム101が入力されると、このプログラム101を並列処理用プログラム102に自動変換して出力する。出力された並列処理用プログラム102は、マルチコアプロセッサ110によって実行される。
本実施の形態では、プログラム101内の処理のうち、手続き呼び出しに着目し、この手続きをマルチコアプロセッサ110内の遠隔プロセッサにて実行させる。遠隔プロセッサとは、マルチコアプロセッサ110内の複数のプロセッサのうち、プログラム101(実際に処理されるのは並列処理用プログラム102)を処理するメインのプロセッサ以外のプロセッサを意味する。また、メインのプロセッサと遠隔プロセッサとでは、それぞれ分散された処理が独立して処理される。したがって、以下、遠隔プロセッサに分散される処理を、「非同期遠隔手続き呼び出し」と呼ぶ。
ここで、図2は、非同期遠隔手続き呼び出しによる並列処理を示す説明図である。図2のように、並列処理用プログラム102を用いた場合、マルチコアプロセッサ110では、コア#0をメインのプロセッサ、コア1#〜コア#3を遠隔プロセッサとして非同期遠隔手続き呼び出しがおこなわれる。
たとえば、コア#0で呼び出された関数A(func_A)は、コア#1によって処理201として実行され、コア#0で呼び出された関数B(func_B)は、コア#2によって処理202として実行され、コア#0で呼び出された関数C(func_C)は、コア#3によって処理203として実行される。そして、メインのプロセッサであるコア#0では、処理204が実行され関数D(func_D)を他の関数A〜Cと並列して実行させることができる。
図2に例示した並列処理のように、遠隔プロセッサであるコア#1〜#3によって実行された処理結果は、それぞれ、メインのプロセッサであるコア#0に戻される。戻された処理結果は、コア#0によるつぎの処理に利用される。したがって、処理結果を戻すタイミングを適切に設定しなければ、課題にて説明したように並列処理用プログラム102を正しく実行させることができなかったり、必要以上の待機時間が生じ、処理をおこなっているにもかかわらず並列処理用プログラム102の処理速度が低下してしまうといった問題が起こる恐れがある。
そこで、図1に示すように、並列処理支援装置100では、入力されたプログラム101に記述された処理のうち、あらかじめプログラム101に特定のコードが付与された箇所を並列処理として他のプロセッサに分散可能な処理の記述に変換する。具体的には、並列処理を実行させたい呼び出し処理の関数にあらかじめプラグマとしてARPC(Asynchronous Remote Procedure Call:非同期型遠隔手続き呼び出し)指示子を付与しておく。
そして、プログラム101の記述のうち、ARPC指示子の記述箇所をARPCの呼び出しに置換し(S1)、遠隔手続き呼び出しの開始箇所を設定する。具体的には、「func_A_start、func_B_start、func_C_start」が置換されている。そして、この遠隔手続きの終了箇所を設定するためには、手続き呼び出し処理によるデータの流れから、手続き結果が必要な箇所や、制御の流れから手続き呼び出しに応答した手続き待ち合わせの対応箇所を特定する。したがって、本実施の形態では、下記のS2〜S4によってARPCの待ち合わせ処理が挿入される。
S2:出力結果が必要となる文の直前でARPCの待ち合わせを挿入(具体的には、「func_A_wait」を挿入)
S3:出力結果が必要となる文を含むIf文の直前でARPCの待ち合わせを挿入(具体的には、「func_B_wait」を挿入)
S4:遠隔手続き呼び出しを開始した文が含まれるLoop文の末尾でARPCの待ち合わせ挿入(具体的には、「func_C_wait」を挿入)
このように、S1によって置換したARPCによる手続き呼び出しに応答した手続き待ち合わせをS2〜S4のいずれかが該当する箇所に挿入することによって、適切な待ち合わせが設定された並列処理用プログラム102が自動的に作成される。したがって設計者に負担なく、マルチコアプロセッサ110による効率的な処理が可能なプログラムを提供することができる。以下に、上述した並列処理支援を実現するための具体的な構成ならびに処理内容について説明する。
(並列処理支援装置のハードウェア構成)
まず、本実施の形態にかかる並列処理支援装置100のハードウェア構成について説明する。図3は、本実施の形態にかかる並列処理支援装置100のハードウェア構成を示すブロック図である。図3において、並列処理支援装置100は、CPU(Central Processing Unit)301と、ROM(Read‐Only Memory)302と、RAM(Random Access Memory)303と、磁気ディスクドライブ304と、磁気ディスク305と、通信I/F(Interface)306と、入力デバイス307と、出力デバイス308と、を備えている。また、各構成部はバス310によってそれぞれ接続されている。
ここで、CPU301は、並列処理支援装置100の全体の制御を司る。ROM302は、ブートプログラムや、本実施の形態にかかる並列処理支援を実現するための並列処理支援プログラムなどの各種プログラムを記憶している。RAM303は、CPU301のワークエリアとして使用される。磁気ディスクドライブ304は、CPU301の制御にしたがって磁気ディスク305に対するデータの更新/参照を制御する。磁気ディスク305は、磁気ディスクドライブ304の制御で書き込まれたデータを記憶する。なお、図3のハードウェア構成では、記録媒体として、磁気ディスク305を用いているが、光ディスクや、フラッシュメモリなど他の記録媒体を利用してもよい。
通信I/F306は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク(NET)309に接続され、このネットワーク309を介して他の情報処理装置やその他の外部装置に接続される。そして、通信I/F306は、ネットワーク309と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。通信I/F306の構成例としては、たとえばモデムやLANアダプタなどを採用することができる。
入力デバイス307は、並列処理支援装置100に対しての外部からの入力を受け付ける。入力デバイス307としては、具体的には、キーボード、マウスなどが挙げられる。キーボードの場合、たとえば、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウスの場合、たとえば、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。また、ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
出力デバイス308は、並列処理支援装置100に入力されたプログラム101の記述内容や、並列処理用プログラム102の記述内容などを出力する。出力デバイス308としては、具体的には、ディスプレイ、プリンタなどが挙げられる。ディスプレイの場合、たとえば、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイとしてさらに、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。また、プリンタの場合、たとえば、画像データや文書データを印刷する。さらに、レーザプリンタやインクジェットプリンタを採用することができる。
(並列処理支援装置の機能的構成)
つぎに、並列処理支援装置100の機能的構成について説明する。図4は、本実施の形態にかかる並列処理支援装置の機能的構成を示すブロック図である。図4のように、並列処理支援装置100は、取得部401と、特定部402と、挿入部403と、出力部404と、受付部405と、付与部406と、を含む構成である。この制御部となる機能(取得部401〜付与部406)は、具体的には、たとえば、図3に示したROM302、RAM303、磁気ディスク305などの記憶領域に記憶された並列処理支援プログラムをCPU301に実行させることにより、または、通信I/F306により、その機能を実現する。
取得部401は、複数のプロセッサによる並列処理の対象となる関数に特定のコードが付与されたプログラム101を取得し、取得したプログラム101の構文木を作成する機能を有する。プログラム101には、図1にて説明したように、特定のコードとしてARPC指示子が付与されている。なお、プログラム101は、あらかじめ開発者によってARPC指示子が付与されているものを取得してもよいし、並列処理支援装置100によって付与してもよいが、この場合は、後述する付与部406を利用する。したがって、まずは、あらかじめARPC指示子が付与されたプログラム101を取得したものとして説明を続ける。なお、取得されたプログラム101は、RAM303、磁気ディスク305などの記憶領域に一旦記憶される。また、並列処理支援装置100は、プログラム101の構文木についても、外部からプログラム101の構文木を取得してもよい。
特定部402は、取得部401によって取得されたプログラムの構文木が表す前記プログラム内の関数、文の間のデータ依存関係および制御の流れに基づいて、ARPC指示子が付与された関数によって作成されたデータを用いた処理の記述箇所を特定する機能を有する。すなわち、特定部402では、図1のS2〜S4に該当する箇所を特定する。なお、特定された箇所の情報は、RAM303、磁気ディスク305などの記憶領域に一旦記憶される。
挿入部403は、所定の箇所に並列処理、すなわち、本実施の形態では手続き呼び出しならびに手続き待ち合わせを指示するコードを挿入する機能を有する。具体的には、ARPC指示子が付与された関数の記述箇所の前に、手続き呼び出しを指示するコードを挿入する(たとえば、関数のstart命令)。このとき、挿入したコードによってARPC指示子を置換する。また、特定部402によって特定された記述箇所の前に、手続き待ち合わせを指示するコードを挿入する(たとえば、関数のwait命令)。
なお、手続き待ち合わせの挿入箇所としては、特定部402によって3種類のパターンの箇所が特定される。具体的には、特定部402は、構文木によって表されたARPC指示子が付与された関数による演算結果が利用される記述箇所あるいは制御が移行する文の記述箇所あるいは待ち合わせを指示するコードの記述箇所と、ARPC指示子が付与された関数による演算結果が利用される記述箇所あるいは制御が移行する文の記述箇所あるいは待ち合わせを指示するコードの記述箇所を内部に含む条件分岐処理あるいはループ処理の記述箇所と、ARPC指示子が付与された関数が存在する条件分件処理あるいはループ制御の末尾が特定される。
したがって、挿入部403では、ARPC指示子が付与された手続き呼び出し箇所の関数と対応させて、各特定箇所の前に手続き待ち合わせを指示するコードを挿入する。なお、各コードが挿入されたプログラム101は、RAM303、磁気ディスク305などの記憶領域に一旦記憶される。
出力部404は、挿入部403によって手続き呼び出しならびに手続き待ち合わせを指示するコードが挿入されたプログラム101を並列処理用プログラム102として出力する機能を有する。出力部404による出力とは、並列処理用プログラム102として加工されたデータ群が作成されたことを意味し、出力された並列処理用プログラム102は、RAM303、磁気ディスク305などの記憶領域に一旦記憶された後、出力デバイス308のディスプレイに表示されてもよいし、通信I/F306を介して直接マルチコアプロセッサ110に提供されてもよいし、一旦外部の記録媒体に保持されてもよい。
つぎに、取得部401によって、ARPC指示子が付与されていないプログラム101を取得した場合について説明する。ARPC指示子が付与されていないプログラム101を取得した場合、取得部401は、プログラム101を受付部405に出力する。
受付部405は、取得部401によってARPC指示子が付与されていないプログラム101が取得された場合に、プログラム101内の並列処理の対象となる関数の選択を受け付ける機能を有する。関数の選択は、入力デバイス307のキーボードなどによっておこなわれる。なお、受付部405によって受け付けられた関数の選択情報は、RAM303、磁気ディスク305などの記憶領域に一旦記憶される。
そして付与部406は、受付部405によって受け付けられた選択が表す関数に、ARPC指示子を付与する機能を有する。そして、ARPC指示子が付与されたプログラム101は、RAM303、磁気ディスク305などの記憶領域に一旦記憶される。
このように、受付部405と、付与部406とによってARPC指示子が付与されたプログラム101が作成されると、特定部402では、このプログラム101を用いて、手続き待ち合わせ箇所の特定をおこなうため、以下の挿入部403、出力部404では、ARPC指示子が付与されたプログラム101と同様の処理をおこない、並列処理用プログラム102を作成することができる。
上述したように、並列処理支援装置100では、取得部401〜付与部406の機能部によって構成されているが、開発者の利用環境や、並列処理装置100のハードウェア資源や処理能力に応じて構成を適宜変更することもできる。たとえば、単純に並列処理用プログラム102の作成機能に能力を特化させたい場合には、受付部405〜付与部406の機能部を外部に用意してもよい。
(並列処理支援の手順)
つぎに、上述した構成の並列処理支援装置100における並列処理支援の手順について説明する。図5は、並列処理支援の手順を示すフローチャートである。図5のように、マルチコアプロセッサ110によって並列処理を実行させたいプログラム101の入力をトリガに処理を開始する。なお、以下の説明では、プログラム101の一例としてCプログラム501を利用して、並列処理用プログラム102として呼び出し側Cプログラム502を作成する場合について説明する。
なお、Cプログラム501には変換指示用のプラグマとしてARPC指示子が付与されている。図6は、並列処理用のARPCプラグマの書式を示す説明図である。図6のように、手続き呼び出し処理をおこなう関数には、ARPC指示子として、特定のコードとともに処理対象となる変数リストを指定する情報が含まれている。
図5の説明に戻り、並列処理支援装置100において、Cプログラム501が入力されると、Cプログラム501の構文解析をおこない、Cプログラム501の構文木を作成し、データの流れと制御の流れを特定する(ステップS510)。なお、ステップS510の際に、指示子にて指定された情報を保存しておくとともに、ARPC_WAIT指示文はダミーの関数に変換しておく。また、ここで利用する構文木(抽象構文木)とは、プログラムの制御構造を木構造で表した情報である。
ここで、図7は、Cプログラムの一例を示すデータ列である。そして、図8は、図7のCプログラムの構文木を示す説明図である。図7のような任意のプログラムがデータ列700のような記述によって構成された場合、1列目の関数「foo」をルートとして2列目以下の記述をノードとして図8のような構文木800が作成される。なお、構文木の作成技術は公知であるため、ここでは説明を省略する(たとえば、「コンパイラの構成と最適化(中田育男著、朝倉書店、1999年)」参照。)。
そして、図9は、構文木によって表される関数の構成を示す説明図である。図9では、構文木を用いてデータ依存箇所の特定(ステップS520)を行うことで表される関数の構成を示している。ここで、Cプログラム501としてARPC指示子にて変数の入出力が指定されている場合はその情報を加味してデータの参照・代入情報を求める。
このとき、in,inoutで指定された変数は、当該手続き呼び出しで参照される変数とし、out,inoutで指定された変数は当該手続き呼び出しで代入される変数とする。Cプログラム501の場合、構文木を作成しデータ依存箇所を特定することによってブロック構造図900によって表される。
具体的には、for文(ステップS901)によって、所定の条件を満たすまでループ処理が繰り返される(ステップS901:Roop)。ループ処理では、まず、変数a,b,cがそれぞれ関数A〜C(func_A〜C)によって演算される(ステップS902)。この演算結果は、後述する変数参照をおこなうステップS903,905,907によって利用される。
まず、ステップS903によって関数Aの演算結果によって変数aが参照され、つぎに、if文によって条件分岐判断がおこなわれる(ステップS904)。ステップS904によってYes判断がなされた場合(ステップS904:Yes)、関数Bの演算結果によって変数bが参照され(ステップS905)、ステップS906の処理に移行する。一方、ステップ904によってNo判断がなされた場合(ステップS905:No)、そのままステップS906の処理に移行する。
ステップS906では、変数bの参照処理もしくはif文によってNo判断された場合のつぎの文sに移行し、文sの処理をおこなう(ステップS906)。その後、ステップS901に戻り、for文によって、所定の条件を満たすと(ステップS901:End)ループを脱出し、変数cを参照し(ステップS907)、一連の処理を終了する。このように、この構文木の接続状態とデータ依存箇所の特定結果を参照することによって、Cプログラム501内のデータの流れと制御の流れを即座に把握することができる。データの流れの解析技術は公知でるため、ここでは説明を省略する(たとえば、「コンパイラの構成と最適化(中田育男著、朝倉書店、1999年)」参照。)。
図5の説明に戻り、ステップS510によって構文木が作成されると、つぎに構文木の構成を参照してCプログラム501のデータ依存箇所を特定する(ステップS520)。そして、指示子が付与された命令を、非同期遠隔手続き呼び出しをおこなうためにAPI(Application Program Interface)に置換するとともに、ステップS520によって特定された箇所に手続き終了待ち合わせをおこなうためのAPIを挿入する(ステップS530)。APIとは、プラットフォーム向けのソフトウェアを開発する際に使用できる命令や関数のデータセットである。したがって、ここでは、並列処理用の命令や関数のデータセットとして設定されたAPIが置換もしくは挿入される。
最後に、ステップS530によってAPIが置換、挿入されたCプログラム501を出力する(ステップS540)。なお、ステップS540の際に、ARPC_WAITのダミー関数を除外してCプログラム501を出力することによって、Cプログラム501が、並列処理用の呼び出し側Cプログラム502となり、マルチコアプロセッサ110によって処理可能なプログラムとして提供される。
(Cプログラムの作成手順)
つぎに、図5にて説明したCプログラム501から呼び出し側Cプログラム502を作成する際のより具体的な手順について説明する。図10は、並列処理用のCプログラムの作成手順を示すフローチャートである。図10のフローチャートにおいて、まず、Cプログラム501の構文木とデータ依存箇所の特定結果を取得する(ステップS1001)。
つぎに、ステップS1001によって取得した構文木を構成するステートメントを深さ優先で検索する(ステップS1002)。このステップS1002によって未処理のステートメントが検索されたか否かを判断し(ステップS1003)、未処理のステートメントが検索された場合(ステップS1003:Yes)、続いて、検索されたステートメントに指示子が付与されているか否かを判断する(ステップS1004)。指示子とは上述したように、並列処理対象として選択された関数に付与されたARPCプラグマである。
ステップS1004において、ステートメントに指示子が付与されていない場合には(ステップS1004:No)、ステップS1002に戻り、つぎの未処理ステートメントを検索する。そして、検索されたステートメントに指示子が付与されていると判断された場合(ステップS1004:Yes)、このステートメントを並列処理用の命令に変換するための処理に移行する。
まず、ステートメントを並列処理呼び出しAPIに置換する(ステップS1005)。この変換処理によって、並列処理の開始箇所に並列処理の開始を指示するAPIが挿入される。そして、Cプログラム501内の並列処理の待ち合わせ箇所を判定するとともに、待ち合わせ箇所がある階層の最後となることもあるため、待ち合わせAPI挿入箇所の前の文を特定する(ステップS1006)。並列処理の待ち合わせ箇所とは、並列処理として実行された関数によって作成されたデータを利用する箇所であり、並列処理の終了箇所である。なお、このステップS1006の処理については、後ほど詳しく説明する。
そして、ステップS1006による特定箇所の後に並列処理の待ち合わせAPIを挿入することによって(ステップS1007)、並列処理の終了箇所にも適切にAPIが挿入され、ステップS1002に戻り、つぎのステートメントへの処理へ移行する。そして、ステップS1003において、未処理のステートメントがないと判断されると(ステップS1003:No)、一連の処理を終了する。このように、指示子が付与されたすべてのステートメントに対して、ステップS1007までの処理が施されたCプログラム501が、すなわち、並列処理用の呼び出し側Cプログラム502となる。
(待ち合わせ箇所の特定)
つぎに、ステップS1006における並列処理の待ち合わせ箇所の特定についての具体的な処理手順について説明する。図11は、並列処理の待ち合わせ箇所の特定手順を示すフローチャートである。図11のフローチャートにおいて、まず、図10のステップS1002において、処理対象として検索されたステートメントを構成する文snを文s0に設定する(ステップS1101)。
続いて、文s0が構文木において文snと親を同一にする同一階層の最後の文か否かを判断する(ステップS1102)。構文木の階層とは、図8にて説明したようなルートとなる「関数 foo」から同じ何段階分岐したノードであるかを意味する。たとえば、構文木800の場合、ノード3,4,15,16が親をfooとする階層1の同一階層であり、ノード6,7,8,9,10,13が親をfor文とする同一階層となる。
ステップS1102において、文s0が構文木の同一階層の最後の文であると判断された場合(ステップS1102:Yes)、文s0を待ち合わせ箇所に特定して(ステップS1109)、一連の処理を終了する。一方、文s0が構文木の同一階層の最後の文ではないと判断された場合(ステップS1102:No)、処理対象を文s0のつぎの文である文s1に移行する(ステップS1103)。
その後、文s1についての待ち合わせ判定をおこなう(ステップS1104)。ステップS1104の待ち合わせ判定とは、文s1において所定のデータまたは制御の流れが発生しているか否かを「True」or「False」で判断する処理である。所定のデータ流れが発生していれば、並列処理の待ち合わせ箇所と判断される。
したがって、ここで、ステップS1104の待ち合わせ判定について詳しく説明する。図12は、待ち合わせ判定手順を示すフローチャートである。図12のフローチャートにおいて、まず、処理中の文s(ここでは、ステップS1103によって文s1が処理中の文に設定されている)はARPC_WAITのダミー関数か否かを判断する(ステップS1201)。ステップS1201において、文sはARPC_WAITのダミー関数であると判断された場合(ステップS1201:Yes)、処理中の文sは待ち合わせ箇所であるため、「True」を出力して(ステップS1204)、一連の処理を終了する。
一方、ステップS1201において、文sはARPC_WAITのダミー関数でないと判断された場合(ステップS1201:No)、つぎに、文sはVarlistで表された出力変数のいずれかを利用するか否かを判断する(ステップS1202)。出力変数のいずれかを利用するとは出力変数を参照または代入する処理を意味する。したがって、文sが出力変数のいずれかを利用すると判断された場合(ステップS1202:Yes)、処理中の文sは待ち合わせ箇所であるため、「True」を出力して(ステップS1204)、一連の処理を終了する。
一方、ステップS1202において、文sが出力変数のいずれかを利用しないと判断された場合(ステップS1202:No)、さらに、文sは特定の命令であるか否かを判断する(ステップS1203)。特定の命令とは、「return」、「goto」、「break」などの処理中の文sを超えて他の文に処理が移行する命令を指す。そして、文sが特定の命令であると判断された場合(ステップS1203:Yes)、処理中の文sは待ち合わせ箇所であるため、「True」を出力して(ステップS1204)、一連の処理を終了する。
一方、ステップS1203において、文sが特定の命令ではないと判断された場合(ステップS1203:No)、処理対象となる文sでは、所定のデータの流れは発生していないとして、「False」を出力して(ステップS1205)、一連の処理を終了する。以上説明したように、ステップS1104では、文s1が待ち合わせ箇所となるか否かの判断がおこなわれる。そして、判断結果として、「True」or「False」のいずれかが出力される。
図11の説明に戻り、ステップS1104の待ち合わせ判定が終了すると、この待ち合わせ判定が「True」か否かを判断する(ステップS1105)。このステップS1105において、待ち合わせ判定が「True」であった場合(ステップS1105:Yes)、特定した文s1の前にAPIを挿入するため文s0を待ち合わせ箇所に特定して(ステップS1109)、一連の処理を終了する。
一方、ステップS1105において、待ち合わせ判定が「False」であった場合(ステップS1105:No)、つぎに、文s1が特定の制御構文であるか否かを判断する(ステップS1106)。特定の制御構文とは、具体的には、「if」、「while」、「for」、「do」、「switch」などのデータの制御処理をおこなう構文を指す。
ステップS1106において、文s1が特定の制御構文であると判断された場合(ステップS1106:Yes)、この制御構文内の待ち合わせ判定をおこなう(ステップS1107)。ステップS1107の制御構文内の待ち合わせ判定とは、文s1の構文木上の子孫に対して所定のデータまたは制御の流れが発生しているか否かを「True」or「False」で判断する処理である。所定のデータまたは制御の流れが発生していれば、並列処理の待ち合わせ箇所と判断される。また、ステップS1106において、文s1が特定の制御構文でないと判断された場合(ステップS1106:No)、ステップS1110に移行する。
したがって、つぎに、ステップS1107における制御構文内の待ち合わせ判定について詳しく説明する。図13は、制御構文内の待ち合わせ判定手順を示すフローチャートである。図13のフローチャートにおいて、まず、制御構文の先頭文を文sに設定する(ステップS1301)。そして、ここであらたに設定した文sについて図12にて説明したような特定のデータまたは制御の流れが発生しているかを判断するための待ち合わせ判定をおこなう(ステップS1302)。
そして、ステップS1302における待ち合わせ判定として「True」が出力されたか否かを判断する(ステップS1303)。ここで、「True」が出力された場合(ステップS1303:Yes)、制御構文内でも特定のデータまたは制御の流れが発生しており、待ち合わせ箇所となるため、「True」を出力して(ステップS1304)、一連の処理を終了する。
一方、ステップS1303において、待ち合わせ判定として「False」が出力された場合(ステップS1303:No)、文sは特定の制御構文であるか否かが判断される(ステップS1305)。ここで判断基準となる特定の制御構文とは上述した「if」、「while」、「for」、「do」、「switch」などのデータの制御処理をおこなう構文である。
そして、文sが特定の制御構文であると判断された場合(ステップS1305:Yes)、制御構文内の待ち合わせ判定をおこなう(ステップS1306)。このステップS1306では、文sについて、再度、図13のフローチャートの処理が実行されることになる。すなわち、制御構文内にさらに特定の制御構文が配置されている場合には、より深い階層に処理を移行することを意味する。
また、制御構文内にさらに制御構文があるか否かの判断は、ステップS1305において、処理中の文sが特定の制御構文ではないと判断されるまで繰り返し実行される。特定の制御構文ではない文sに行き着き、待ち合わせ判定がおこなわれると、ステップS1306における待ち合わせ判定として「True」が出力されたか否かを判断する(ステップS1307)。ここで、「True」が出力された場合(ステップS1307:Yes)、制御構文内でも特定のデータまたは制御の流れが発生しており、待ち合わせ箇所となるため、「True」を出力して(ステップS1304)、一連の処理を終了する。
そして、ステップS1305において、文sが特定の制御構文でないと判断された場合(ステップS1305:No)、もしくは、ステップS1307において、待ち合わせ判定が「False」と出力された場合(ステップS1307:No)、つぎに、文sが制御構文の最後の文か否かを判断する(ステップS1308)。
ステップS1308において、文sが制御構文の最後の文であると判断された場合(ステップS1308:Yes)、並列処理の待ち合わせ箇所とはならないため、「False」を出力して(ステップS1310)、一連の処理を終了する。一方、文sが制御構文の最後の文でないと判断された場合(ステップS1308:No)、処理対象を文sのつぎの文に移行して(ステップS1309)、ステップS1302の処理に戻り、「True」or「False」のいずれかが出力されるまで、処理を繰り返す。このように、特定の制御が発生している制御構文内については、さらに、制御構文内に特定のデータまたは制御の流れが発生している箇所を待ち合わせ箇所として特定する。
図11の説明に戻り、ステップS1107の制御構文内の待ち合わせ判定が終了すると、この待ち合わせ判定が「True」か否かを判断する(ステップS1108)。このステップS1108において、待ち合わせ判定が「True」であった場合(ステップS1108:Yes)、特定した文s1の前にAPIを挿入するため文s0を待ち合わせ箇所に特定して(ステップS1109)、一連の処理を終了する。
一方、ステップS1108において、待ち合わせ判定が「False」であった場合(ステップS1108:No)、文s0に移行して(ステップS1110)、ステップS1102の処理に移行する。すなわち、文s0が同一階層の最後の文になるまで特定処理を繰り返すことによって、一連の処理を終了する。
以上説明したように、本実施の形態にかかる並列処理支援プログラム、並列処理支援装置および並列処理支援方法によれば、1つのプロセッサによって処理を実行することを念頭に開発されたプログラムであっても、指示子が付与された関数の記述についての、呼び出しと待ち合わせ箇所を特定することによって、自動的に並列処理を実行するためのAPIに書き換えることができる。したがって、設計者がプログラムを修正する負荷をかけることなく、マルチコアプロセッサ110による効率的な並列処理を実現することができる。
また、本実施の形態では、並列処理支援装置100からARPC指示子の自動付与機能や、構文木の作成機能を独立させ、これらの処理を外部に分散することもできる。したがって、開発環境に応じた機能を備えた並列処理支援装置100を構成することができる。
なお、本実施の形態で説明した並列処理支援方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。本並列処理支援プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVDなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本並列処理支援プログラムは、インターネットなどのネットワークを介して配布してもよい。
また、本実施の形態で説明した並列処理支援装置100は、スタンダードセルやストラクチャードASIC(Application Specific Integrated Circuit)などの特定用途向けIC(以下、単に「ASIC」と称す。)やFPGAなどのPLD(Programmable Logic Device)によっても実現することができる。具体的には、たとえば、上述した並列処理支援装置100の機能(取得部401〜付与部406)をHDL記述によって機能定義し、そのHDL記述を論理合成してASICやPLDに与えることにより、並列処理支援装置100を製造することができる。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)コンピュータを、
複数のプロセッサによる並列処理の対象となる関数に特定のコードが付与されたプログラムを取得する取得手段、
前記取得手段によって取得されたプログラムの構文木が表す前記プログラム内の関数、文の間のデータ依存関係および制御の流れに基づいて、前記特定のコードが付与された関数の待ち合わせ箇所を特定する特定手段、
前記特定のコードが付与された関数の記述箇所を前記並列処理の開始を指示するコードに置換するとともに、前記特定手段によって特定された待ち合わせ箇所の前に、前記並列処理の終了を指示するコードを挿入する挿入手段、
前記挿入手段によって前記並列処理の開始と終了とを指示するコードが挿入されたプログラムを出力する出力手段、
として機能させることを特徴とする並列処理支援プログラム。
(付記2)前記特定手段は、前記構文木によって表された、前記特定のコードが付与された関数による演算結果が利用される記述箇所を特定し、
前記挿入手段は、前記特定手段によって特定された記述箇所の前に、前記並列処理の終了を指示するコードを挿入することを特徴とする付記1に記載の並列処理支援プログラム。
(付記3)前記特定手段は、前記構文木によって表された、前記特定のコードが付与された関数の後に位置する待ち合わせを指示するコードの記述箇所を特定し、
前記挿入手段は、前記特定手段によって特定された記述箇所の前に、前記並列処理の終了を指示するコードを挿入することを特徴とする付記1に記載の並列処理支援プログラム。
(付記4)前記特定手段は、前記構文木によって表された、前記特定のコードが付与された関数の後に位置する制御の流れを表す記述箇所を特定し、
前記挿入手段は、前記特定手段によって特定された記述箇所の前に、前記並列処理の終了を指示するコードを挿入することを特徴とする付記1に記載の並列処理支援プログラム。
(付記5)前記特定手段は、前記特定のコードが付与された関数による演算結果が利用される記述箇所、前記特定のコードが付与された関数の後に位置する待ち合わせを指示するコードの記述箇所および前記特定のコードが付与された関数の後に位置する制御の流れを表す記述箇所の中から、前記特定のコードが付与された関数に最も近い記述箇所を特定し、
前記挿入手段は、前記特定手段によって特定された記述箇所の前に、前記並列処理の終了を指示するコードを挿入することを特徴とする付記1に記載の並列処理支援プログラム。
(付記6)前記特定手段は、前記構文木によって表された、前記特定のコードが付与された関数による演算結果が利用される記述箇所、あるいは、他の文に制御が移行する文がある箇所、あるいは、待ち合わせ指定箇所が内部に存在する前記特定のコードが付与された関数と親を同一にする同一階層の条件分岐処理やループ処理を特定し、
前記挿入手段は、前記特定手段によって特定された処理の前に、前記並列処理の終了を指示するコードを挿入することを特徴とする付記1〜5のいずれか一つに記載の並列処理支援プログラム。
(付記7)前記特定手段は、前記構文木によって表された、前記特定のコードが付与された関数と構文木において親を同一にする同一階層の末尾の文の記述箇所を特定し、
前記挿入手段は、前記特定手段によって特定された記述箇所の後に前記並列処理の終了を指示するコードを挿入することを特徴とする付記1〜6のいずれか一つに記載の並列処理支援プログラム。
(付記8)前記コンピュータを、さらに、
前記取得手段によって前記特定のコードが付与されていないプログラムが取得された場合、当該プログラム内の並列処理の対象となる関数の選択を受け付ける受付手段、
前記受付手段によって受け付けた選択が表す関数に、前記特定のコードを付与する付与手段、として機能させ、
前記特定手段は、前記付与手段によって並列処理の対象となる関数に特定のコード付与されたプログラムの構文木が表す前記プログラム内の関数同士のデータ依存関係に基づいて、前記特定のコードが付与された関数によって作成されたデータを用いた処理の記述箇所を特定することを特徴とする付記1〜7のいずれか一つに記載の並列処理支援プログラム。
(付記9)前記コンピュータを、さらに、
前記取得手段によって取得された前記プログラムの構文木を作成する作成手段として機能させ、
前記特定手段は、前記作成手段によって作成された構文木が表す前記プログラム内の関数同士のデータ依存関係に基づいて、前記特定のコードが付与された関数によって作成されたデータを用いた処理の記述箇所を特定することを特徴とする付記1〜8のいずれか一つに記載の並列処理支援プログラム。
(付記10)複数のプロセッサによる並列処理の対象となる関数に特定のコードが付与されたプログラムを取得する取得手段と、
前記取得手段によって取得されたプログラムの構文木が表す前記プログラム内の関数、文の間のデータ依存関係および制御の流れに基づいて、前記特定のコードが付与された関数の待ち合わせ箇所を特定する特定手段と、
前記特定のコードが付与された関数の記述箇所を前記並列処理の開始を指示するコードに置換するとともに、前記特定手段によって特定された待ち合わせ箇所の前に、前記並列処理の終了を指示するコードを挿入する挿入手段と、
前記挿入手段によって前記並列処理の開始と終了とを指示するコードが挿入されたプログラムを出力する出力手段と、
を備えることを特徴とする並列処理支援装置。
(付記11)コンピュータが、
複数のプロセッサによる並列処理の対象となる関数に特定のコードが付与されたプログラムを取得する取得工程と、
前記取得工程によって取得されたプログラムの構文木が表す前記プログラム内の関数、文の間のデータ依存関係および制御の流れに基づいて、前記特定のコードが付与された関数の待ち合わせ箇所を特定する特定工程と、
前記特定のコードが付与された関数の記述箇所を前記並列処理の開始を指示するコードに置換するとともに、前記特定工程によって特定された待ち合わせ箇所の前に、前記並列処理の終了を指示するコードを挿入する挿入工程と、
前記挿入工程によって前記並列処理の開始と終了とを指示するコードが挿入されたプログラムを出力する出力工程と、
を実行することを特徴とする並列処理支援方法。
100 並列処理支援装置
101 プログラム
102 並列処理用プログラム
110 マルチコアプロセッサ
401 取得部
402 特定部
403 挿入部
404 出力部
405 受付部
406 付与部
501 Cプログラム
502 呼び出し側Cプログラム

Claims (5)

  1. コンピュータを、
    複数のプロセッサによる並列処理の対象となる関数に特定のコードが付与されたプログ
    ラムを取得する取得手段、
    前記取得手段によって取得されたプログラムの構文木が表す前記プログラム内の関数、
    文の間のデータ依存関係および制御の流れに基づいて、前記特定のコードが付与された関数による演算結果が利用される記述箇所、あるいは、他の文に制御が移行する文がある箇所、あるいは、待ち合わせ指定箇所が内部に存在する前記特定のコードが付与された関数と親を同一にする同一階層の条件分岐処理やループ処理を特定する特定手段、
    前記特定のコードが付与された関数の記述箇所を前記並列処理の開始を指示するコード
    に置換するとともに、前記特定手段によって特定された処理の前に、前記並列処理の終了を指示するコードを挿入する挿入手段、
    前記挿入手段によって前記並列処理の開始と終了とを指示するコードが挿入されたプロ
    グラムを出力する出力手段、
    として機能させることを特徴とする並列処理支援プログラム。
  2. 前記コンピュータを、さらに、
    前記取得手段によって前記特定のコードが付与されていないプログラムが取得された場
    合、他の関数と並列して実行させる関数の選択を受け付ける受付手段、
    前記受付手段によって受け付けた選択が表す関数に、前記特定のコードを付与する付与
    手段、として機能させ、
    前記特定手段は、前記付与手段によって前記特定のコードが付与されたプログラムの構文木が表す前記プログラム内の関数、文の間のデータ依存関係および制御の流れに基づいて、前記特定のコードが付与された関数による演算結果が利用される記述箇所、あるいは、他の文に制御が移行する文の記述箇所、あるいは、待ち合わせを指示するコードの記述箇所が内部に存在する前記特定のコードが付与された関数と親を同一にする同一階層の条件分岐処理またはループ処理の記述箇所を特定することを特徴とする請求項1に記載の並列処理支援プログラム。
  3. 前記特定手段は、前記取得手段によって取得されたプログラムの構文木が表す前記プログラム内の関数、文の間のデータ依存関係および制御の流れに基づいて、前記特定のコードが付与された関数と構文木において親を同一にする同一階層の末尾の文の記述箇所を特定し、
    前記挿入手段は、前記特定のコードが付与された関数の記述箇所を前記並列処理の開始を指示するコードに置換するとともに、前記特定手段によって特定された記述箇所の後に前記並列処理の終了を指示するコードを挿入することを特徴とする請求項1または2に記載の並列処理支援プログラム。
  4. 複数のプロセッサによる並列処理の対象となる関数に特定のコードが付与されたプログ
    ラムを取得する取得手段と、
    前記取得手段によって取得されたプログラムの構文木が表す前記プログラム内の関数、
    文の間のデータ依存関係および制御の流れに基づいて、前記特定のコードが付与された関数による演算結果が利用される記述箇所、あるいは、他の文に制御が移行する文がある箇所、あるいは、待ち合わせ指定箇所が内部に存在する前記特定のコードが付与された関数と親を同一にする同一階層の条件分岐処理やループ処理を特定する特定手段と、
    前記特定のコードが付与された関数の記述箇所を前記並列処理の開始を指示するコード
    に置換するとともに、前記特定手段によって特定された処理の前に、前記並列処理の終了を指示するコードを挿入する挿入手段と、
    前記挿入手段によって前記並列処理の開始と終了とを指示するコードが挿入されたプロ
    グラムを出力する出力手段と、
    を備えることを特徴とする並列処理支援装置。
  5. コンピュータが、
    複数のプロセッサによる並列処理の対象となる関数に特定のコードが付与されたプログ
    ラムを取得する取得工程と、
    前記取得工程によって取得されたプログラムの構文木が表す前記プログラム内の関数、
    文の間のデータ依存関係および制御の流れに基づいて、前記特定のコードが付与された関数による演算結果が利用される記述箇所、あるいは、他の文に制御が移行する文がある箇所、あるいは、待ち合わせ指定箇所が内部に存在する前記特定のコードが付与された関数と親を同一にする同一階層の条件分岐処理やループ処理を特定する特定工程と、
    前記特定のコードが付与された関数の記述箇所を前記並列処理の開始を指示するコード
    に置換するとともに、前記特定工程によって特定された処理の前に、前記並列処理の終了を指示するコードを挿入する挿入工程と、
    前記挿入工程によって前記並列処理の開始と終了とを指示するコードが挿入されたプロ
    グラムを出力する出力工程と、
    を実行することを特徴とする並列処理支援方法。
JP2009059747A 2009-03-12 2009-03-12 並列処理支援プログラム、並列処理支援装置および並列処理支援方法 Expired - Fee Related JP5463699B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009059747A JP5463699B2 (ja) 2009-03-12 2009-03-12 並列処理支援プログラム、並列処理支援装置および並列処理支援方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009059747A JP5463699B2 (ja) 2009-03-12 2009-03-12 並列処理支援プログラム、並列処理支援装置および並列処理支援方法

Publications (2)

Publication Number Publication Date
JP2010211731A JP2010211731A (ja) 2010-09-24
JP5463699B2 true JP5463699B2 (ja) 2014-04-09

Family

ID=42971781

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009059747A Expired - Fee Related JP5463699B2 (ja) 2009-03-12 2009-03-12 並列処理支援プログラム、並列処理支援装置および並列処理支援方法

Country Status (1)

Country Link
JP (1) JP5463699B2 (ja)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5485574A (en) * 1993-11-04 1996-01-16 Microsoft Corporation Operating system based performance monitoring of programs
JP3640081B2 (ja) * 1999-12-27 2005-04-20 日本電気株式会社 Mpiプログラムのコンパイルにおける最適化方法
WO2007105309A1 (ja) * 2006-03-14 2007-09-20 Fujitsu Limited 並列化プログラム生成プログラム、並列化プログラム生成装置、及び並列化プログラム生成方法
JP4946323B2 (ja) * 2006-09-29 2012-06-06 富士通株式会社 並列化プログラム生成方法、並列化プログラム生成装置、及び並列化プログラム生成プログラム
JP4962564B2 (ja) * 2007-03-29 2012-06-27 富士通株式会社 並列化プログラム生成方法、並列化プログラム生成装置、及び並列化プログラム生成プログラム

Also Published As

Publication number Publication date
JP2010211731A (ja) 2010-09-24

Similar Documents

Publication Publication Date Title
JP7324831B2 (ja) ディープラーニングフレームワークにおける演算子の展開方法、展開装置及び電子機器
US8701084B1 (en) Preview of auto-fix changes to software code
KR20160054629A (ko) 사용자 인터페이스들 및 입력 컨트롤들을 적응시키는 방법
EP1999557A1 (en) Printing controller,gui display method, printer driver, and recording medium
CN111124379A (zh) 页面生成方法、装置、电子设备及存储介质
CN110825428A (zh) 一种状态机配置方法、装置、设备及可读存储介质
JP5444724B2 (ja) 検証支援プログラム、情報処理装置および検証支援方法
JP5233355B2 (ja) プロパティ生成システムおよびプロパティ検証システム
JP5463699B2 (ja) 並列処理支援プログラム、並列処理支援装置および並列処理支援方法
Palanque et al. Software architecture modelling: bridging two worlds using ergonomics and software properties
JP5245727B2 (ja) 設計支援プログラム、設計支援装置、および設計支援方法
JP2006301989A (ja) 計算機言語によるプログラムをブロック図から自動生成する方法と装置とプログラム
JP5374965B2 (ja) シミュレーション制御プログラム、シミュレーション制御装置、およびシミュレーション制御方法
JP2008197883A (ja) Lsi解析プログラム、該プログラムを記録した記録媒体、lsi解析装置、およびlsi解析方法
JP2004362343A (ja) ソースコード変換装置、ソースコード変換方法、およびプログラム
CN103890721A (zh) 计算机程序接口
US10768911B2 (en) Managing software components for software application development
JP5262774B2 (ja) シミュレーション制御プログラム、シミュレーション装置、およびシミュレーション制御方法
WO2014136210A1 (ja) 実行フロー作成支援プログラム
Thomas et al. Framework for development and distribution of hardware acceleration
JP5233354B2 (ja) プロパティ検証システム、プロパティ検証方法、及びプログラム
JP2010026695A (ja) ビジネスプロセス実行方法、ビジネスプロセス実行装置及びビジネスプロセス実行プログラム
JP2007310585A (ja) 情報処理装置、データ処理方法およびデータ処理プログラム
Sumimoto et al. MPI-Adapter2: An Automatic ABI Translation Library Builder for MPI Application Binary Portability
WO2022236031A1 (en) Computer implemented program specialization

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20111107

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130321

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130430

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130701

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140106

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees