(57)【要約】【課題】オフロード処理を行う際には、全体としてのアプリケーションの実行時間の短縮に寄与しないオフロード処理をしてしまうおそれがあり、オフロード先のリソースを効率的に利用することが難しい、という課題を解決すること。【解決手段】プロセスの処理の一部を外部プロセッサに実行させることが可能であるとともに、複数の前記プロセスを並列で処理することが可能なプロセッサを有する情報処理装置であって、プロセスは、所定の処理の後、同時に実行される他のプロセスとの同期待ちを行うよう構成され、情報処理装置は、プロセッサで同時に実行されるプロセスそれぞれの同期待ちの開始時刻に基づいて、プロセスの処理の一部を外部プロセッサに実行させるか否かプロセスごとに判断する判断手段を有する。【選択図】図８
2018128811.tif 000002
【特許請求の範囲】
【請求項１】
プロセスの処理の一部を外部プロセッサに実行させることが可能であるとともに、複数の前記プロセスを並列で処理することが可能なプロセッサを有する情報処理装置であって、
前記プロセスは、所定の処理の後、同時に実行される他のプロセスとの同期待ちを行うよう構成され、
前記情報処理装置は、前記プロセッサで同時に実行される前記プロセスそれぞれの同期待ちの開始時刻に基づいて、前記プロセスの処理の一部を前記外部プロセッサに実行させるか否か前記プロセスごとに判断する判断手段を有する
情報処理装置。
【請求項２】
請求項１に記載の情報処理装置であって、
前記判断手段は、前記プロセスを前記プロセッサで実行した場合の同期待ちの開始時刻と、他のプロセスにおいて処理の一部を前記外部プロセッサに実行させた場合の当該他のプロセスの同期待ちの開始時刻と、に基づいて、前記プロセスの処理の一部を前記外部プロセッサに実行させるか否か判断する
情報処理装置。
【請求項３】
請求項１又は２に記載の情報処理装置であって、
前記判断手段は、前記プロセスを前記プロセッサで実行した場合の同期待ちの開始時刻が、前記他のプロセスにおいて処理の一部を前記外部プロセッサに実行させた場合の同期待ちの開始時刻よりも遅くなる場合に、当該プロセスの一部を前記外部プロセッサに実行させる
情報処理装置。
【請求項４】
請求項１乃至３のいずれかに記載の情報処理装置であって、
前記判断手段は、並列で処理する複数の前記プロセスそれぞれの同期待ち開始時刻の関係性に基づいて、前記プロセスの一部を前記外部プロセッサに実行させる処理の比率であるオフロード比率を前記プロセスごとに決定する
情報処理装置。
【請求項５】
請求項４に記載の情報処理装置であって、
前記判断手段は、並列で処理する複数の前記プロセスそれぞれの同期待ち開始時刻が等しくなるように、前記プロセスの一部を前記外部プロセッサに実行させる処理の比率であるオフロード比率を前記プロセスごとに決定する
情報処理装置。
【請求項６】
請求項１乃至５のいずれかに記載の情報処理装置であって、
並列で処理する複数の前記プロセスの全てを前記プロセッサが実行した際に、予め定められた性能情報を採取する処理情報採取手段と、
前記処理情報採取手段が採取した前記性能情報に基づいて、予め定められたオフロード比率ごとの複数の前記プロセスそれぞれの同期待ち開始時刻を分析する処理情報分析手段と、
を有し、
前記判断手段は、前記処理情報分析手段による分析結果に基づいて、前記プロセスの処理の一部を前記外部プロセッサに実行させるか否か判断する
情報処理装置。
【請求項７】
請求項６に記載の情報処理装置であって、
前記処理情報分析手段は、前記処理情報採取手段が採取した前記性能情報に基づいて、前記プロセスの処理のうちの前記外部プロセッサに実行させる部分を判定する
情報処理装置。
【請求項８】
請求項１乃至７のいずれかに記載の情報処理装置であって、
前記判断手段は、前記プロセスの処理の一部を前記外部プロセッサに実行させることで、当該プロセスを前記プロセッサが実行するよりも実行時間が短くなる場合に、前記プロセスの処理の一部を前記外部プロセッサに実行させるか否か判断する
情報処理装置。
【請求項９】
プロセスの処理の一部を外部プロセッサに実行させることが可能であるとともに、複数の前記プロセスを並列で処理することが可能なプロセッサを有し、前記プロセスは、所定の処理の後、同時に実行される他のプロセスとの同期待ちを行うよう構成されている情報処理装置に、
前記プロセッサで同時に実行される前記プロセスそれぞれの同期待ちの開始時刻に基づいて、前記プロセスの処理の一部を前記外部プロセッサに実行させるか否か前記プロセスごとに判断する判断手段を実現させるためのプログラム。
【請求項１０】
プロセスの処理の一部を外部プロセッサに実行させることが可能であるとともに、複数の前記プロセスを並列で処理することが可能なプロセッサを有し、前記プロセスは、所定の処理の後、同時に実行される他のプロセスとの同期待ちを行うよう構成されている情報処理装置により行われる情報処理方法であって、
前記プロセッサで同時に実行される前記プロセスそれぞれの同期待ちの開始時刻を取得し、取得した同期待ちの開始時刻に基づいて、前記プロセスの処理の一部を前記外部プロセッサに実行させるか否か前記プロセスごとに判断する
情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、プログラムに関し、特に、メインプロセッサにおいて実行する並列分散プログラムの一部をサブプロセッサで実行するオフロード処理を行う情報処理装置、情報処理方法、プログラムに関する。
【背景技術】
【０００２】
メインプロセッサとサブプロセッサとを備えるサーバシステムなどの情報処理装置が知られている。このような情報処理装置では、プログラムのレイテンシを短くするなどの目的のため、メインプロセッサで動作するプログラムの実行処理の一部をサブプロセッサに実行させるオフロード処理を行うことがある。
【０００３】
このようなオフロード処理を行う際に用いられる技術の一つとして、例えば、特許文献１がある。特許文献１には、第１プロセッサと、第２プロセッサと、第１プロセッサと第２プロセッサとをつなぐ通信バスと、通信バス遅延モニタリング部と、オフロード判定・指示部と、を有する演算処理システムが記載されている。特許文献１によると、通信遅延モニタリング部は、通信バスにおける遅延時間を観測して、バス利用率を求める。また、オフロード判定・指示部は、バス利用率に基づいて、入力処理のオフロード判定および指示を行う。このようにバス利用率に基づくオフロード判定、指示を行うことで、サブプロセッサである第２プロセッサによる処理に対する応答時間の制約を満たしつつ、メインプロセッサである第１プロセッサの処理量を減らして消費電力を低減することが出来る。
【０００４】
また、関連する技術として、例えば、特許文献２がある。特許文献２には、分散並列処理の各オフロード対象処理のオフロード比率を変更する技術が記載されている。具体的には、特許文献２には、特定処理判定手段と、処理変換手段と、を備えるプログラム変換装置が記載されている。特許文献２によると、特定処理判定手段は、第１のプロセッサが備える第１のリソースの第１の使用量と第２のプロセッサが備える第２のリソースの第２の使用量との使用比率を第１の比率として併用して動作する第１の実行方式指定プログラムを含む対象プログラム中の部分プログラムの範囲を判定する。また、処理変換手段は、部分プログラムを、使用比率を第１の比率とは異なる第２の比率として併用して動作する第２の実行方式指定プログラムに変換し、変換後プログラムを生成する。このような構成により、システムが備えるプロセッサのリソースを最大限に使用し、処理能力を向上させることが出来る。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１６−１３９２７１号公報
【特許文献２】国際公開第２０１４／００２４１２号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
並行して動作するプロセス間でメッセージを送受信するメッセージパッシング型の分散処理プログラムなどにおいては、プロセス間で通信処理や同期処理を行いながらアプリケーションの実行を進めていくことが一般的である。そのため、上記のような分散処理プログラムでは、プロセスごとに通信や同期の待ち時間が発生することになる。
【０００７】
しかしながら、特許文献１に記載されている技術では、バス利用率のみが考慮されており、上記プロセス間の待ち時間は考慮されていない。そのため、オフロードによって部分的に処理が高速化できたとしても、待ち時間が増加するのみであり、全体としてのアプリケーションの実行時間の短縮には寄与しないことがあった。その結果、オフロード先のリソースを効率的に利用できていないおそれがある、という問題が生じていた。
【０００８】
また、特許文献２に記載されている技術でも、プロセス間の待ち時間は考慮されていない。そのため、特許文献２に記載されている技術は、特許文献１の場合と同様に、全体としてのアプリケーションの実行時間の短縮に寄与せず、オフロード先のリソースを効率的に利用できないおそれがあった。
【０００９】
このように、オフロード処理を行う際に、オフロード先のリソースを効率的に利用することが難しい、という問題が生じていた。
【００１０】
そこで、本発明の目的は、オフロード処理を行う際に、オフロード先のリソースを効率的に利用することが難しい、という問題を解決する情報処理装置、情報処理方法、プログラムを提供することにある。
【課題を解決するための手段】
【００１１】
かかる目的を達成するため本発明の一形態である情報処理装置は、
プロセスの処理の一部を外部プロセッサに実行させることが可能であるとともに、複数の前記プロセスを並列で処理することが可能なプロセッサを有する情報処理装置であって、
前記プロセスは、所定の処理の後、同時に実行される他のプロセスとの同期待ちを行うよう構成され、
前記情報処理装置は、前記プロセッサで同時に実行される前記プロセスそれぞれの同期待ちの開始時刻に基づいて、前記プロセスの処理の一部を前記外部プロセッサに実行させるか否か前記プロセスごとに判断する判断手段を有する
という構成を採る。
【００１２】
また、本発明の他の形態であるプログラムは、
プロセスの処理の一部を外部プロセッサに実行させることが可能であるとともに、複数の前記プロセスを並列で処理することが可能なプロセッサを有し、前記プロセスは、所定の処理の後、同時に実行される他のプロセスとの同期待ちを行うよう構成されている情報処理装置に、
前記プロセッサで同時に実行される前記プロセスそれぞれの同期待ちの開始時刻に基づいて、前記プロセスの処理の一部を前記外部プロセッサに実行させるか否か前記プロセスごとに判断する判断手段を実現させるためのプログラムである。
【００１３】
また、本発明の他の形態である情報処理方法は、
プロセスの処理の一部を外部プロセッサに実行させることが可能であるとともに、複数の前記プロセスを並列で処理することが可能なプロセッサを有し、前記プロセスは、所定の処理の後、同時に実行される他のプロセスとの同期待ちを行うよう構成されている情報処理装置により行われる情報処理方法であって、
前記プロセッサで同時に実行される前記プロセスそれぞれの同期待ちの開始時刻を取得し、取得した同期待ちの開始時刻に基づいて、前記プロセスの処理の一部を前記外部プロセッサに実行させるか否か前記プロセスごとに判断する
という構成を採る。
【発明の効果】
【００１４】
本発明は、以上のように構成されることにより、オフロード処理を行う際に、オフロード先のリソースを効率的に利用することが難しい、という問題を解決する情報処理装置、情報処理方法、プログラムを提供することが可能となる。
【図面の簡単な説明】
【００１５】
【図１】本発明の第１の実施形態に係る計算機システムの全体の構成の一例を示すブロック図である。
【図２】図１で示す計算機システムで実行されるメッセージパッシング型のアプリケーションプログラムの一例を示す図である。
【図３】図１で示す計算機が果たす役割の一例を示す図である。
【図４】図１で示す計算機システムで実行される処理の一例を説明するための図である。
【図５】変換手段により行われる処理の一例を示すフローチャートである。
【図６】オフロード実行手段がオフロード比率を決定する際の処理の一例を示すフローチャートである。
【図７】オフロード処理を行う際の処理の一例を示すフローチャートである。
【図８】本発明の第１の実施形態に係る計算機システムにより行われるオフロード処理の一例を示す図である。
【図９】本発明の第２の実施形態に係る情報処理装置の構成の一例を示す概略ブロック図である。
【発明を実施するための形態】
【００１６】
［第１の実施形態］
本発明の第１の実施形態を図１乃至図８を参照して説明する。図１は、計算機システム１００の全体の構成の一例を示すブロック図である。図２は、計算機システム１００で実行されるメッセージパッシング型のアプリケーションプログラム２００の一例を示す図である。図３は、計算機１０１が果たす役割の一例を示す図である。図４は、計算機システム１００で実行される処理の一例を説明するための図である。図５は、変換手段３１０により行われる処理の一例を示すフローチャートである。図６は、オフロード実行手段３２０がオフロード比率を決定する際の処理の一例を示すフローチャートである。図７は、オフロード処理を行う際の処理の一例を示すフローチャートである。図８は、計算機システム１００により行われるオフロード処理の一例を示す図である。
【００１７】
第１の実施形態では、メインプロセッサ３００用のメッセージパッシング型の分散並列プログラムであるアプリケーションプログラム２００に基づく実行の一部をサブプロセッサ４００へオフロードする処理を行うことが可能な計算機システム１００について説明する。本実施形態における計算機システム１００で実行される分散並列プログラムは、並列して処理されるプロセス（プログラムの実行単位）間で通信処理や同期処理を行いながらアプリケーション実行を進めていく。後述するように、計算機システム１００は、当該計算機システム１００において並列で処理する各プロセスの通信待ち、同期待ちの待ち時間（あるいは、同期待ちの開始時刻）を考慮して、プロセスおよびオフロード対象処理ごとに、オフロードするか否か、オフロードする際の比率、などを判断する。つまり、計算機システム１００は、同期待ちの開始時刻などに基づいて、メインプロセッサ３００が実行する処理の一部をサブプロセッサ４００に実行させる。このように同期待ちの待ち時間（同期待ちの開始時刻）を考慮したオフロード実行可否の判断を行うことで、アプリケーション全体の実行時間の短縮に寄与しない不要なオフロードを抑制することが可能となり、サブプロセッサ４００のリソースを過剰に利用することを抑制することが可能となる。
【００１８】
図１は、本発明の第１の実施形態に係る計算機システム１００（情報処理装置）の全体の構成の一例を示している。図１を参照すると、計算機システム１００は、複数の（例えば、２以上の任意の数の）計算機１０１を有している。また、複数の計算機１０１のそれぞれは、バスやネットワークなどの接続網１０５を介して互いに通信可能なよう接続されている。
【００１９】
図１で示すように、計算機１０１は、例えば、演算処理装置１０２と、記憶装置１０３と、通信装置１０４と、を有している。演算処理装置１０２は、例えば記憶装置１０３や外部の記憶装置に格納されたプログラムなどに基づいて演算処理を行う。記憶装置１０３は、メモリなどであり、プログラムや処理に必要な情報などが格納される。通信装置１０４は、接続網１０５を介した他の計算機１０１との通信の際などに用いる。
【００２０】
本実施形態においては、上記のような計算機１０１のうち、１つ以上の計算機１０１がメインプロセッサ３００（プロセッサ）の役割を果たし、それ以外の計算機１０１がサブプロセッサ４００（外部プロセッサ）の役割を果たす。また、本実施形態においては、メインプロセッサ３００はベクトル処理を高速実行可能なベクトルプロセッサであるとし、サブプロセッサ４００は、スカラ処理を高速実行可能なスカラプロセッサであるものとする。換言すると、計算機システム１００は、１つ又は複数個の計算機１０１から構成されるベクトル型のメインプロセッサ３００（ＧＰＧＰＵ（General-purpose computing on graphics processing units）などでも良い）と、１つ又は複数個の計算機１０１から構成されるスカラ型のサブプロセッサ４００と、から構成されている。
【００２１】
ここで、図２を参照して、計算機システム１００で実行されるメッセージパッシング型のアプリケーションプログラム２００の一例について説明する。
【００２２】
図２を参照すると、アプリケーションプログラム２００は、オフロード開始指示行２０１とスカラ処理部２０２とオフロード終了指示行２０３とをそれぞれ１つ以上含んでいる。オフロード開始指示行２０１は、オフロード対象とするコード部分の開始を指定する。スカラ処理部２０２は、オフロード開始指示行２０１とオフロード終了指示行との間に挟まれた部分であり、本実施形態におけるオフロード対象処理である。換言すると、計算機システム１００は、スカラ処理部２０２の部分をオフロードするか否か判断するとともに、オフロードする際の比率を判断することになる。オフロード終了指示行２０３は、オフロード対象とするコード部分の終了を指定する。
【００２３】
また、アプリケーションプログラム２００は、ベクトル処理部２０４を０個以上含んでおり、プロセス間同期処理部２０５を１つ以上含んでいる。ベクトル処理部２０４は、メインプロセッサ３００において処理することになる部分である。プロセス間同期処理部２０５は、同時に実行される他のプロセスとの間での同期処理、通信処理などを行うことになる部分である。
【００２４】
なお、アプリケーションプログラム２００上での各処理部の出現順序は、図２で示す場合に限定されない。例えば、オフロード開始指示行２０１より前にベクトル処理部２０４が存在していても構わない。また、オフロード開始指示行２０１、オフロード終了指示行２０３については、図２で示す順での並びを１セットとして、１セット以上をアプリケーションプログラム２００が備えるものとする。つまり、アプリケーションプログラム２００は、オフロード開始指示行２０１、オフロード終了指示行２０３の順番で構成されるセットを１つ以上含んでいる。
【００２５】
以上が、アプリケーションプログラム２００の一例である。続いて、図３及び図４を参照して、メインプロセッサ３００とサブプロセッサ４００についてより詳細に説明する。
【００２６】
メインプロセッサ３００は、上述したように、例えばベクトル型のプロセッサである。メインプロセッサ３００は、後述する変換手段３１０により変換されたベクトルプロセッサ向けの実行コードを実行する。また、メインプロセッサ３００は、オフロード対象処理の一部又は全部の実行をサブプロセッサ４００にオフロードする。
【００２７】
図３を参照すると、メインプロセッサ３００は、変換手段３１０とオフロード実行手段３２０とを有している。上記各手段は、例えば、メインプロセッサ３００として動作する計算機１０１が有する記憶装置１０３に格納されたプログラムを、当該計算機１０１が有する演算処理装置１０２が実行することで、実現される。
【００２８】
変換手段３１０は、アプリケーションプログラム２００に基づいて、変換後アプリケーションプログラム５００を生成する。図４で示すように、変換手段３１０には、アプリケーションプログラム２００が入力される。すると、変換手段３１０は、アプリケーションプログラム２００を入力として、実行形式ファイルである変換後アプリケーションプログラム５００を生成する。
【００２９】
図３、図４を参照すると、変換手段３１０は、ベクトルプロセッサ向けコード生成手段３１１とオフロード処理コード生成手段３１２とを有している。
【００３０】
ベクトルプロセッサ向けコード生成手段３１１は、実行形式ファイルの生成において、メインプロセッサ３００であるベクトルプロセッサ上で動作する実行コードを生成する。換言すると、ベクトルプロセッサ向けコード生成手段３１１は、アプリケーションプログラム２００を入力として、ソースコード全体に対して、ベクトルプロセッサ向けの実行コードを生成する。
【００３１】
オフロード処理コード生成手段３１２は、実行形式ファイルの生成において、オフロード開始指示行２０１およびオフロード終了指示行２０３で挟まれたソースコード部分に対して、サブプロセッサ４００であるスカラプロセッサ向けの実行コードを生成する。換言すると、オフロード処理コード生成手段３１２は、スカラ処理部２０２に対して、ベクトルプロセッサ向けコード生成手段３１１により生成済みのベクトルプロセッサ向けコードの分岐処理として、スカラプロセッサ向けの実行コードを生成する。後述するオフロード実行手段３２０は、オフロード処理コード生成手段３１２により生成された実行コードに基づいて、オフロード処理を実施することになる。
【００３２】
以上のように、変換手段３１０は、アプリケーションプログラム２００を入力として、実行形式ファイルである変換後アプリケーションプログラム５００を生成する（図４参照）。変換手段３１０により生成される変換後アプリケーションプログラム５００には、ベクトルプロセッサ向けの実行コードと、スカラプロセッサ向けの実行コードと、が含まれていることになる。
【００３３】
オフロード実行手段３２０は、計算機システム１００上で変換後アプリケーションプログラム５００と連携して動作する。
【００３４】
例えば、オフロード実行手段３２０は、変換後アプリケーションプログラム５００を初めて実行する際には、オフロード処理は実施しない。つまり、全ての処理をメインプロセッサ３００であるベクトルプロセッサ上でのみ実行する。この際に、オフロード実行手段３２０は、各処理の性能情報を採取する。そして、オフロード実行手段３２０は、採取した性能情報に基づく分析を行い、オフロード処理を実行するか否かなどを判断する。また、同一の変換後アプリケーションプログラム５００を２回目以降に実行する際には、オフロード実行手段３２０は、メインプロセッサ３００であるベクトルプロセッサだけではなくサブプロセッサ４００であるスカラプロセッサも利用して、オフロード処理を伴う実行を行う。この際、オフロード実行手段３２０は、変換後アプリケーションプログラム５００を初めて実行した際の分析結果に基づいて、オフロード処理を実行する。
【００３５】
図３、図４を参照すると、オフロード実行手段３２０は、処理情報採取手段３２１と、処理情報分析手段３２２と、オフロード比率決定手段３２３と、オフロード処理実行手段３２４と、を有している。
【００３６】
処理情報採取手段３２１は、変換後アプリケーションプログラム５００を初めて実行する際に、スカラ処理やベクトル処理、通信・同期処理などの各処理について性能情報を採取する。処理情報採取手段３２１は、採取した性能情報を、例えば記憶装置１０３に格納する。
【００３７】
性能情報は、オフロード比率を決定するために利用する情報である。性能情報は、例えば、処理情報分析手段３２２により利用される。性能情報としては、例えば、ＣＰＵ（Central Processing Unit）やメモリ、キャッシュ等の利用状況等の計算機システム１００のリソース情報、命令の種別や引数、呼び出し回数および実行時間等の命令情報、関数の実行時間、引数、呼び出し回数、呼び出し関係などの関数情報、プロセス間の通信・同期処理の通信サイズ、通信・同期の開始・終了時刻、待ち合わせ時間、通信相手の情報等の通信・同期処理情報などが考えられる。性能情報は、上記例示した一部であっても構わないし、上記例示した以外の情報を含んでいても構わない。
【００３８】
処理情報分析手段３２２は、変換後アプリケーションプログラム５００の初めての実行が終了した後、処理情報採取手段３２１が採取した性能情報に基づいて、プロセスごと、オフロード対象処理ごとに、オフロード処理した場合の同期待ちの開始時間の変化などについて分析する。
【００３９】
例えば、処理情報分析手段３２２は、変換後アプリケーションプログラム５００の初めての実行が終了した後、記憶装置１０３から性能情報を取得する。そして、処理情報分析手段３２２は、取得した性能情報に基づいて、オフロードに伴う転送時間も考慮して、予め定められたオフロード比率ごとに、オフロード処理した場合のオフロード対象処理の実行時間の変化、その場合の各通信・同期処理の開始・終了時刻、処理時間および待ち合わせ時間の変化、オフロード処理により消費されるスカラプロセッサのリソース使用量などを分析する。つまり、処理情報分析手段３２２は、全ての処理をメインプロセッサ３００で実行した場合に採取した情報に基づいて、処理の一部をオフロードした場合の通信・同期処理の開始時刻などを推定・分析する。その後、処理情報分析手段３２２は、分析結果をオフロード比率決定手段３２３に送信する。
【００４０】
なお、処理情報分析手段３２２が分析を行うオフロード比率は、任意に設定して構わない（例えば、処理情報分析手段３２２は、オフロード比率が１０％ずつ変化した場合のそれぞれの分析を行うなど）。
【００４１】
オフロード比率決定手段３２３は、処理情報分析手段３２２が分析した分析結果に基づいて、プロセス間の同期・通信待ち時間（あるいは、同期待ち開始時刻）を考慮して、アプリケーション全体の実行時間が最小となり、かつ、サブプロセッサ４００であるスカラプロセッサのリソース利用量が最小となるように、プロセスごと、オフロード対象処理ごとにオフロード比率を算出する。
【００４２】
例えば、オフロード比率決定手段３２３は、以下の計算によってオフロード比率を決定する。つまり、オフロード比率決定手段３２３は、あるプロセスのあるオフロード対象処理とその後に続く同期・通信処理に関して、以下の条件を満たす場合に、オフロード対象処理をオフロード実行することを決定する。
１．“オフロード対象処理のメインプロセッサ３００での実行時間” > “オフロード対象処理のサブプロセッサ４００での実行時間＋オフロード転送時間(往復)”
２．“当該プロセスについて、オフロード対象処理をメインプロセッサ３００で実行した場合の同期待ちの開始時刻” > “当該プロセスの同期・通信相手（つまり、並列で実行される他のプロセス）について、オフロード対象処理をオフロード実行（オフロード処理によるオフロード対象処理の実行時間短縮が最も大きい場合のオフロード比率でのオフロード実行）した場合の同期待ちの開始時刻の中で、最も遅い開始時刻”
【００４３】
このように、オフロード比率決定手段３２３は、オフロードを実行することで、プロセスの全てをメインプロセッサ３００が実行するよりも実行時間が短くなることを第１の条件としてオフロードを実行するか否か判断する。
【００４４】
また、オフロード比率決定手段３２３は、オフロードを実行することで、アプリケーション全体の実行時間が短くなることを第２の条件として、オフロードを実行するか否か判断する。つまり、オフロード比率決定手段３２３は、メインプロセッサ３００で同時に実行されるプロセスそれぞれの同期待ちの開始時刻に基づいて、プロセスの処理の一部をサブプロセッサ４００に実行させるか否か判断する。より具体的には、オフロード比率決定手段３２３は、プロセスをメインプロセッサ３００で実行した場合の同期待ちの開始時刻が、並列で実行される他のプロセスにおいてオフロード実行した場合（処理の一部をサブプロセッサ４００に実行させた場合）の同期待ちの開始時刻よりも遅くなる場合に、当該プロセスの一部をサブプロセッサ４００に実行させる。
【００４５】
また、オフロード比率決定手段３２３は、オフロード実行すると決定した場合、並列で動作する各プロセスの同期待ちの開始時刻の関係性に基づいて、オフロード対象処理のオフロード比率を決定する。例えば、オフロード比率決定手段３２３は、上記の条件２において、あるプロセスの同期待ちの開始時刻と当該あるプロセスと並列で動作する他のプロセスの同期待ちの開始時刻とが等しくなるように、オフロード比率を決定する。なお、オフロード比率の変更は、例えば、国際公開第２０１４／００２４１２号に開示されている方法などを用いて行うことが出来る（例示した以外の方法でオフロード比率を変更しても構わない）。
【００４６】
上記のように、オフロード比率決定手段３２３は、処理情報分析手段３２２が分析した分析結果に基づいて、プロセスごと、オフロード対象処理ごとに、オフロードするか否か判断するとともに、オフロードする際のオフロード比率を決定する。その後、オフロード比率決定手段３２３は、判断した結果や決定したオフロード比率を記憶装置１０３や外部の図示しない記憶装置に格納する。
【００４７】
なお、本実施形態においては、オフロード比率決定手段３２３は、第１の条件、及び、第２の条件を同時に確認し、第１の条件、及び、第２の条件を満たす場合に、オフロードする旨を決定するとした。しかしながら、オフロード比率決定手段３２３は、例えば、第１の条件を満たす場合にのみ、第２の条件を確認し、第２の条件を満たす場合にオフロードする旨を決定するよう構成しても構わない。
【００４８】
オフロード処理実行手段３２４は、変換後アプリケーションプログラム５００を２回目以降に実行する場合において、オフロード比率決定手段３２３が決定した情報に基づいて、オフロード処理を実行する。つまり、同一の変換後アプリケーションプログラム５００を２回目移行に実行する場合、オフロード処理実行手段３２４は、オフロード比率決定手段３２３による判断結果や決定結果を示す情報を取得する。そして、オフロード処理実行手段３２４は、取得した情報に基づいて、プロセスごと、オフロード対象処理ごとに、サブプロセッサ４００へのオフロード対象処理の転送と実行、オフロード処理結果の取得を実行する。
【００４９】
なお、オフロード比率決定手段３２３によりオフロード実行しないと判断されている部分については、オフロード処理は行わずにメインプロセッサ３００でそのまま実行されることになる。
【００５０】
以上が、本実施形態における計算機システム１００の構成の一例についての説明である。続いて、図５乃至図７を参照して、計算機システム１００の動作の一例について説明する。まず、図５を参照して、変換手段３１０の動作の一例について説明する。
【００５１】
図５を参照すると、変換手段３１０にアプリケーションプログラム２００が入力される。すると、変換手段３１０のベクトルプロセッサ向けコード生成手段３１１は、ソースコード全体に対して、ベクトルプロセッサ向けの実行コードを生成する（ステップＳ１０１）。
【００５２】
また、変換手段３１０のオフロード処理コード生成手段３１２は、オフロード開始指示行２０１からオフロード終了指示行２０３に囲まれたソースコード（つまり、スカラ処理部２０２）に対して、スカラプロセッサ向けの実行コードを生成する（ステップＳ１０２）。つまり、オフロード処理コード生成手段３１２は、上記ステップＳ１０１の処理により生成済みのベクトルプロセッサ向けの実行コードの分岐処理として、オフロード処理実行手段３２４がオフロード処理を実施するスカラプロセッサ向けの実行コードを生成する（ステップＳ１０２）。
【００５３】
例えば、上記のような処理により、変換手段３１０は、入力されたアプリケーションプログラム２００に基づいて、ベクトルプロセッサ向けの実行コードとスカラプロセッサ向けの実行コードとを含む変換後アプリケーションプログラム５００を生成する。
【００５４】
続いて、図６を参照して、変換後アプリケーションプログラム５００を初めて実行する際の処理の流れについて説明する。換言すると、図６を参照して、オフロード実行手段３２０がオフロード比率を決定する際の処理の一例について説明する。
【００５５】
図６を参照すると、変換後アプリケーションプログラム５００を初めて実行する場合、メインプロセッサ３００は、例えばオフロードを行わずに全ての処理を自身で実行する。この際、処理情報採取手段３２１は、本実行に際して、スカラ処理やベクトル処理、通信・同期処理等の各処理について性能情報を採取する（ステップＳ２０１）。処理情報採取手段３２１が採取可能な性能情報としては、例えば、ＣＰＵやメモリ、キャッシュ等の利用状況等の計算機システムリソース情報、命令の種別や引数、呼び出し回数および実行時間等の命令情報、関数の実行時間、引数、呼び出し回数、呼び出し関係などの関数情報、プロセス間の通信・同期処理の通信サイズ、通信・同期の開始・終了時間、待ち合わせ時間、通信相手の情報等の通信・同期処理情報が含まれ得る。
【００５６】
続いて、処理情報分析手段３２２は、処理情報採取手段３２１が採取した性能情報に基づいて、オフロードに伴う転送時間も考慮して、オフロード比率ごとに、オフロードを実行した場合の同期待ちの開始時間の変化などを分析する。例えば、処理情報分析手段３２２は、性能情報に基づいて、オフロード処理した場合のオフロード対象処理の実行時間の変化、その場合の各通信・同期処理の開始・終了時刻、処理時間および待ち合わせ時間の変化、オフロード処理により消費されるスカラプロセッサのリソース使用量などを分析する（ステップＳ２０２）。その後、処理情報分析手段３２２は、分析結果をオフロード比率決定手段３２３に送信する。
【００５７】
オフロード比率決定手段３２３は、処理情報分析手段３２２による分析結果に基づいて、プロセスごと・オフロード対象処理ごとに、サブプロセッサ４００へのオフロード比率を決定する。
【００５８】
例えば、オフロード比率決定手段３２３は、以下の条件を満たす場合に、オフロード対象処理をオフロード実行することを決定する。
１．“オフロード対象処理のメインプロセッサ３００での実行時間” > “オフロード対象処理のサブプロセッサ４００での実行時間＋オフロード転送時間(往復)”
２．“当該プロセスについて、オフロード対象処理をメインプロセッサ３００で実行した場合の同期待ちの開始時刻” > “当該プロセスの同期・通信相手（つまり、並列で実行される他のプロセス）について、オフロード対象処理をオフロード実行（オフロード処理によるオフロード対象処理の実行時間短縮が最も大きい場合のオフロード比率でのオフロード実行）した場合の同期待ちの開始時刻の中で、最も遅い開始時刻”
【００５９】
また、オフロード比率決定手段３２３は、オフロード実行すると決定した場合、上記の条件２において、あるプロセスの同期待ちの開始時刻と当該あるプロセスと並列で動作する他のプロセスの同期待ちの開始時刻とが等しくなるように、オフロード比率を決定する（ステップＳ２０３）。
【００６０】
このように、オフロード比率決定手段３２３は、処理情報分析手段３２２が分析した分析結果に基づいて、プロセスごと、オフロード対象処理ごとに、オフロードするか否か判断するとともに、オフロードする際のオフロード比率を決定する。その後、オフロード比率決定手段３２３は、判断した結果や決定したオフロード比率を記憶装置１０３や外部の図示しない記憶装置に格納する。
【００６１】
続いて、図７を参照して、変換後アプリケーションプログラム５００を２回目以降に実行する際の処理の流れについて説明する。換言すると、図７を参照して、オフロード処理を行う際の処理の一例について説明する。
【００６２】
図７を参照すると、オフロード処理実行手段３２４は、実行しようとする処理がオフロード対象であるか否か判断する（ステップＳ３０１）。
【００６３】
ベクトル処理部２０４に基づいて生成されたベクトルプロセッサ向けのコードなどオフロード対象でない場合（ステップＳ３０１、Ｎｏ）、オフロード処理実行手段３２４は、当該処理をベクトルプロセッサであるメインプロセッサ３００上で実行させる（ステップＳ３０４）。一方、スカラ処理部２０２に基づいて生成されたスカラプロセッサ向けのコードなどオフロード対象である場合（ステップＳ３０１、Ｙｅｓ）、オフロード処理実行手段３２４は、オフロード比率決定手段３２３によりオフロードを行うと判断されているか否か確認する（ステップＳ３０２）。
【００６４】
オフロード比率決定手段３２３によりオフロードを行わないと判断されている場合（ステップＳ３０２、Ｎｏ）、オフロード処理実行手段３２４は、オフロード対象処理をそのままベクトルプロセッサ上で動作させる(ステップＳ３０４)。一方で、オフロード比率決定手段３２３によりオフロードを行うと判断されている場合（ステップＳ３０２、Ｙｅｓ）、オフロード処理実行手段３２４は、オフロード比率決定手段３２３により決定されたオフロード比率に基づいて、オフロード対象処理をサブプロセッサ４００上へオフロードする。その後、オフロード処理実行手段３２４は、サブプロセッサ４００からオフロードの処理結果を受け取る（ステップＳ３０３）。
【００６５】
変換後アプリケーションプログラム５００が実行終了でない場合（ステップＳ３０５、Ｎｏ）は、ステップＳ３０１へ戻り継続実行する。一方で、変換後アプリケーションプログラム５００の実行が終了した場合（ステップＳ３０５、Ｙｅｓ）は、オフロード処理実行手段３２４は、処理を終了する。
【００６６】
このように、計算機システム１００は、オフロード比率決定手段３２３とオフロード処理実行手段３２４とを有するオフロード実行手段３２０を有している。このような構成により、オフロード処理実行手段３２４は、オフロード比率決定手段３２３による判断結果、決定結果に基づいて、オフロード対象処理をオフロードするか否か判断することが出来る。例えば、オフロード処理実行手段３２４は、オフロードを実行することで、プロセスの全てをメインプロセッサ３００が実行するよりも実行時間が短くなり、かつ、オフロードを実行することで、アプリケーション全体の実行時間が短くなる場合に、オフロード対象処理をオフロードすることが可能となる。その結果、オフロードしてもアプリケーション全体の実行時間の短縮に寄与しない不要なオフロードを抑制することが可能となり、サブプロセッサ４００のリソースを過剰に利用することを抑制することが可能となる。これにより、例えば、サブプロセッサ４００のリソースの利用量を節約できるため、消費電力量の低減や、他アプリケーションからのリソース利用が可能となるなど、システムリソースの有効・効率利用が実現できる。
【００６７】
ここで、本発明の効果の詳細について、図８を参照して説明する。
【００６８】
図８中のオリジナル実行（左の図）は、メッセージパッシング型の分散並列プログラムであるアプリケーションを、メインプロセッサ３００上で３プロセス並列実行した場合の処理内容と実行時間を示している。
【００６９】
図８で示す例では、ベクトル処理、スカラ処理、同期処理を順に行う構成となっており、プロセス間で処理インバランスを有している。つまり、メインプロセッサ３００上では、プロセスＰ＃０、Ｐ＃１、Ｐ＃２が並列で実行されており、それぞれのベクトル処理、スカラ処理の実行時間が異なっている。例えば、図８の例では、プロセスＰ＃０は、他の２プロセス（Ｐ＃１、Ｐ＃２）と比較して、同期待ちの開始時刻が早く同期待ちの時間が長くなっている。
【００７０】
図８中の本発明（右の図）は、図８のオリジナル実行と同じアプリケーションのうちのスカラ処理をサブプロセッサ４００へオフロードする一例を示している。このとき、本発明のオフロード比率決定手段３２３は、プロセスＰ＃１およびプロセスＰ＃２についてはスカラ処理をオフロードする（オフロード比率１００％）旨を決定する。一方で、プロセスＰ＃０については、オフロードしない（オフロード比率０％）旨を決定する。
【００７１】
その理由は、プロセスＰ＃０のスカラ処理をオフロードしたとしても、その後の同期待ち処理があるため、オフロードしない場合と比較してアプリケーション全体の実行時間短縮の効果に違いがないためである。このプロセスＰ＃０のスカラ処理をオフロードしないこと（すなわち、プロセスＰ＃０の同期待ち時間を最小とすること）によって、サブプロセッサ４００のリソースが１つ空くことになる。その結果、使用電力の低減や他アプリからのリソース利用が可能となるなど、システムリソースを有効かつ効率的に利用することが可能となる。
【００７２】
なお、本実施形態においては、計算機システム１００がメッセージパッシング型の分散並列プログラムを実行する例について説明した。しかしながら、本発明は、並列して動作するとともに、所定の処理の後、並列して動作する他のプロセスと同期待ちや通信待ちが発生するプログラムであるならば、上記例示した以外のプログラムであっても適用可能である。
【００７３】
また、本実施形態においては、ベクトル型のメインプロセッサ３００とスカラ型のサブプロセッサ４００とを有する場合について説明した。しかしながら、メインプロセッサ３００は必ずしもベクトル型でなくても構わないし、サブプロセッサ４００は必ずしもスカラ型でなくても構わない。
【００７４】
また、本実施形態においては、メインプロセッサ３００が変換手段３１０とオフロード実行手段３２０とを有するとした。しかしながら、変換手段３１０やオフロード実行手段３２０としての機能は、メインプロセッサ３００の外部に位置する外部装置が有していても構わない。
【００７５】
また、本実施形態においては、オフロード対象処理について、ユーザがオフロード開始指示行２０１やオフロード終了指示行２０３で指定する例について挙げた。しかしながら、オフロード対象処理は、例えば、処理情報採取手段３２１が採取する性能情報から処理情報分析手段３２２が自動的に判定しても構わない。例えば、処理情報分析手段３２２は、性能情報に基づいて、オフロードすることで実行時間の短縮に繋がると判断される部分をオフロード対象処理として判定する。このような構成により、ユーザがソースコードに指示行を追加する作業を省くことが可能となる。また、ユーザが意識していなかったオフロード対象処理を発見することが可能となる。
【００７６】
また、本実施形態においては、変換後アプリケーションプログラム５００を１回実行して性能情報を採取し、分析した結果からオフロード比率決定手段３２３がオフロード比率を決定するとした。しかしながら、必ずしも採取した性能情報の分析結果に基づいてオフロード比率を決定するよう構成しなくても構わない。例えば、アプリケーションプログラム２００のソースコードの内容を静的に解析して、当該解析結果に基づいてオフロードするか否か、オフロード比率、を決定するよう構成しても構わない。このように構成することで、性能情報採取向けに変換後アプリケーションプログラム５００を１回実行する時間やそれに伴う費用等を節約することが可能となる。
【００７７】
また、オフロード比率については、必ずしも、２回目以降の実行前に性能情報の解析結果からオフロード比率決定手段３２３が静的に決定する場合に限られない。例えば、他の変換後アプリケーションプログラム５００とサブプロセッサ４００のリソース利用状況情報を共有し、当該リソース利用状況も加味して実行時に動的にオフロード比率を決定することも考えられる。このように構成することで、より汎用的かつ詳細に、サブプロセッサ４００のリソースを効率的に利用することが可能となる。ただし、このように構成した場合、メインプロセッサ３００を使用して動的にオフロード比率を判定する処理が発生するため、それに伴うオーバヘッドが発生することになる。
【００７８】
また、本実施形態においては、オフロード実行について、１回目と２回目以降の実行を同じ実行形式ファイルで実行させるため、オフロード処理実行手段３２４が動的に１回目と２回目以降の実行でオフロード処理を切り替えて実行する実施例を示した。この代わりに、２回目以降で使用する変換後アプリケーションプログラム５００を変更して、オフロード比率１００％であるオフロード処理については切り替え処理をなくし、オフロード処理のみ実行するようにするよう構成しても構わない。このように構成することで、切り替え処理分の実行時間を削除できるため、微細ではあるがよりアプリケーション全体の実行時間を短縮することが可能となる。
【００７９】
［第２の実施形態］
次に、図９を参照して、本発明の第２の実施形態について説明する。第２の実施形態では、情報処理装置６の構成の概要について説明する。
【００８０】
図９を参照すると、情報処理装置６は、プロセッサ６１と、判断手段６２と、を有している。判断手段６２は、例えば、情報処理装置６が有する図示しない記憶装置に格納されたプログラムを、プロセッサ６１や図示しない演算装置が実行することで実現される。
【００８１】
プロセッサ６１は、プロセスの処理の一部を外部プロセッサ７に実行させることが可能であるとともに、複数のプロセスを並列で処理することが可能である。プロセッサ６１で実行されるプロセスは、例えば、所定の処理の後、同時に実行される他のプロセスとの同期待ちを行うよう構成されている。
【００８２】
判断手段６２は、プロセッサ６１で同時に実行されるプロセスそれぞれの同期待ちの開始時刻に基づいて、プロセスの処理の一部を外部プロセッサ７に実行させるか否かプロセスごとに判断する。
【００８３】
このように、情報処理装置６は、判断手段６２を有している。このような構成により、情報処理装置６は、プロセッサ６１で同時に実行されるプロセスそれぞれの同期待ちの開始時刻に基づいて、プロセスの処理の一部を外部プロセッサ７に実行させるか否かプロセスごとに判断することが出来る。その結果、外部プロセッサ７に全体の実行時間の短縮に寄与しない不要な処理を実行させることを抑制することが可能となる。これにより、オフロード先の外部プロセッサ７のリソースを効率的に利用することが可能となる。
【００８４】
また、上述した情報処理装置６は、当該情報処理装置６に所定のプログラムが組み込まれることで実現できる。具体的に、本発明の他の形態であるプログラムは、プロセスの処理の一部を外部プロセッサ７に実行させることが可能であるとともに、複数のプロセスを並列で処理することが可能なプロセッサ６１を有し、プロセスは、所定の処理の後、同時に実行される他のプロセスとの同期待ちを行うよう構成されている情報処理装置６に、プロセッサ６１で同時に実行されるプロセスそれぞれの同期待ちの開始時刻に基づいて、プロセスの処理の一部を外部プロセッサ７に実行させるか否かプロセスごとに判断する判断手段６２を実現させるためのプログラムである。
【００８５】
また、上述した情報処理装置６により実行される情報処理方法は、プロセスの処理の一部を外部プロセッサ７に実行させることが可能であるとともに、複数のプロセスを並列で処理することが可能なプロセッサ６１を有し、プロセスは、所定の処理の後、同時に実行される他のプロセスとの同期待ちを行うよう構成されている情報処理装置６により行われる情報処理方法であって、プロセッサ６１で同時に実行されるプロセスそれぞれの同期待ちの開始時刻を取得し、取得した同期待ちの開始時刻に基づいて、プロセスの処理の一部を外部プロセッサ７に実行させるか否かプロセスごとに判断する、という方法である。
【００８６】
上述した構成を有する、プログラム、又は、情報処理方法、の発明であっても、上記情報処理装置６と同様の作用を有するために、上述した本発明の目的を達成することが出来る。
【００８７】
なお、図９では、情報処理装置６の外部に外部プロセッサ７が存在する場合について例示している。しかしながら、外部プロセッサ７は情報処理装置６が有していても構わない。
【００８８】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明における情報処理装置などの概略を説明する。但し、本発明は、以下の構成に限定されない。
【００８９】
（付記１）
プロセスの処理の一部を外部プロセッサに実行させることが可能であるとともに、複数の前記プロセスを並列で処理することが可能なプロセッサを有する情報処理装置であって、
前記プロセスは、所定の処理の後、同時に実行される他のプロセスとの同期待ちを行うよう構成され、
前記情報処理装置は、前記プロセッサで同時に実行される前記プロセスそれぞれの同期待ちの開始時刻に基づいて、前記プロセスの処理の一部を前記外部プロセッサに実行させるか否か前記プロセスごとに判断する判断手段を有する
情報処理装置。
（付記２）
付記１に記載の情報処理装置であって、
前記判断手段は、前記プロセスを前記プロセッサで実行した場合の同期待ちの開始時刻と、他のプロセスにおいて処理の一部を前記外部プロセッサに実行させた場合の当該他のプロセスの同期待ちの開始時刻と、に基づいて、前記プロセスの処理の一部を前記外部プロセッサに実行させるか否か判断する
情報処理装置。
（付記３）
付記１又は２に記載の情報処理装置であって、
前記判断手段は、前記プロセスを前記プロセッサで実行した場合の同期待ちの開始時刻が、前記他のプロセスにおいて処理の一部を前記外部プロセッサに実行させた場合の同期待ちの開始時刻よりも遅くなる場合に、当該プロセスの一部を前記外部プロセッサに実行させる
情報処理装置。
（付記４）
付記１乃至３のいずれかに記載の情報処理装置であって、
前記判断手段は、並列で処理する複数の前記プロセスそれぞれの同期待ち開始時刻の関係性に基づいて、前記プロセスの一部を前記外部プロセッサに実行させる処理の比率であるオフロード比率を前記プロセスごとに決定する
情報処理装置。
（付記５）
付記４に記載の情報処理装置であって、
前記判断手段は、並列で処理する複数の前記プロセスそれぞれの同期待ち開始時刻が等しくなるように、前記プロセスの一部を前記外部プロセッサに実行させる処理の比率であるオフロード比率を前記プロセスごとに決定する
情報処理装置。
（付記６）
付記１乃至５のいずれかに記載の情報処理装置であって、
並列で処理する複数の前記プロセスの全てを前記プロセッサが実行した際に、予め定められた性能情報を採取する処理情報採取手段と、
前記処理情報採取手段が採取した前記性能情報に基づいて、予め定められたオフロード比率ごとの複数の前記プロセスそれぞれの同期待ち開始時刻を分析する処理情報分析手段と、
を有し、
前記判断手段は、前記処理情報分析手段による分析結果に基づいて、前記プロセスの処理の一部を前記外部プロセッサに実行させるか否か判断する
情報処理装置。
（付記７）
付記６に記載の情報処理装置であって、
前記処理情報分析手段は、前記処理情報採取手段が採取した前記性能情報に基づいて、前記プロセスの処理のうちの前記外部プロセッサに実行させる部分を判定する
情報処理装置。
（付記８）
付記１乃至７のいずれかに記載の情報処理装置であって、
前記判断手段は、前記プロセスの処理の一部を前記外部プロセッサに実行させることで、当該プロセスを前記プロセッサが実行するよりも実行時間が短くなる場合に、前記プロセスの処理の一部を前記外部プロセッサに実行させるか否か判断する
情報処理装置。
（付記９）
プロセスの処理の一部を外部プロセッサに実行させることが可能であるとともに、複数の前記プロセスを並列で処理することが可能なプロセッサを有し、前記プロセスは、所定の処理の後、同時に実行される他のプロセスとの同期待ちを行うよう構成されている情報処理装置に、
前記プロセッサで同時に実行される前記プロセスそれぞれの同期待ちの開始時刻に基づいて、前記プロセスの処理の一部を前記外部プロセッサに実行させるか否か前記プロセスごとに判断する判断手段を実現させるためのプログラム。
（付記１０）
プロセスの処理の一部を外部プロセッサに実行させることが可能であるとともに、複数の前記プロセスを並列で処理することが可能なプロセッサを有し、前記プロセスは、所定の処理の後、同時に実行される他のプロセスとの同期待ちを行うよう構成されている情報処理装置により行われる情報処理方法であって、
前記プロセッサで同時に実行される前記プロセスそれぞれの同期待ちの開始時刻を取得し、取得した同期待ちの開始時刻に基づいて、前記プロセスの処理の一部を前記外部プロセッサに実行させるか否か前記プロセスごとに判断する
情報処理方法。
【００９０】
なお、上記各実施形態及び付記において記載したプログラムは、記憶装置に記憶されていたり、コンピュータが読み取り可能な記録媒体に記録されていたりする。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【００９１】
以上、上記各実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることが出来る。
【符号の説明】
【００９２】
１００  計算機システム
１０１  計算機
１０２  演算処理装置
１０３  記憶装置
１０４  通信装置
１０５  接続網
２００  アプリケーションプログラム
２０１  オフロード開始指示行
２０２  スカラ処理部
２０３  オフロード終了指示行
２０４  ベクトル処理部
２０５  プロセス間同期処理部
３００  メインプロセッサ
３１０  変換手段
３１１  ベクトルプロセッサ向けコード生成手段
３１２  オフロード処理コード生成手段
３２０  オフロード実行手段
３２１  処理情報採取手段
３２２  処理情報分析手段
３２３  オフロード比率決定手段
３２４  オフロード処理実行手段
４００  サブプロセッサ
５００  変換後アプリケーションプログラム
６  情報処理装置
６１  プロセッサ
６２  判断手段
７  外部プロセッサ
【図１】
2018128811.tif 000003
【図２】
2018128811.tif 000004
【図３】
2018128811.tif 000005
【図４】
2018128811.tif 000006
【図５】
2018128811.tif 000007
【図６】
2018128811.tif 000008
【図７】
2018128811.tif 000009
【図８】
2018128811.tif 000010
【図９】
2018128811.tif 000011