Description
アルゴリズム選択プログラム、アルゴリズム選択装置及び方法
20140716 G06F9/44−9/45 patcit 1 : 特開2007−233805(JP,A)
patcit 2 : 特開平06−250877(JP,A)
patcit 3 : 特開2001−184218(JP,A)
patcit 4 : 特開平10−040112(JP,A)
nplcit 1 : 須崎有康、田沼均、平野聡,ベンチマークテストによるライブラリ内アルゴリズム選択,情報処理学会第45回(平成4年後期)全国大会講演論文集(4),日本,社団法人情報処理学会,1992年 9月28日,p.4-23〜4-24
nplcit 2 : 須崎有康、栗田多喜夫、田沼均、平野聡,多種計算機上での適応的アルゴリズム選択法(AASM),情報処理学会研究報告,日本,社団法人情報処理学会,1993年 3月18日,Vol.93 No.24 (93-AL-32),p.49〜56
JP2009062122 20090702 WO2011001527 20110106 20111130 久保 正典
Technical Field
[0001]
本発明は、アルゴリズム選択プログラム、アルゴリズム選択装置及び方法に関する。
Background Art
[0002]
コンピュータプログラムの作成においては、ライブラリの呼び出しインターフェイスであるライブラリインターフェイスがライブラリとコンピュータプログラムをリンクすることにより、ライブラリにより提供される機能がコンピュータプログラムに取り込まれる。また、ライブラリインターフェイスは、所定の規格における互換性や他のプラットフォームへの移植の容易さの実現を目的として、標準仕様として規約化される。標準仕様としては、例えばMPI(Message Passing Interface)が挙げられる。また、このように規約化されたライブラリインターフェイスは、互換性や可搬性を向上させるために、提供する機能が一般化、抽象化される。ここで機能の一般化、抽象化とは、ライブラリにおいてなされる複数の処理を1つの機能として、ライブラリを利用するプログラムに提供することを示す。その結果、提供する機能がより効率的に処理されるような実装を考慮した場合、ライブラリインターフェイスより得られる情報は、処理アルゴリズムの選択に必要十分ではない場合がある。例えば、ファイルI/Oにおけるアクセスパターンや、ネットワーク通信における通信アルゴリズムなどにおいて、ライブラリインターフェイスは、求められる選択に対して必要十分な情報を提供しない。つまり、ある1つの処理目的を達成するアルゴリズムが複数用意されていたとしても、ライブラリインターフェイスはその選択手段を提供しない。
[0003]
このような問題に対する従来の解決策として、ライブラリの呼び出し元としてのプログラムが環境変数と呼ばれる追加の情報をライブラリに対して提示する方法がある。この方法は、ライブラリの実装において規定される項目について、呼び出し元プログラムの作成者または実行者が追加の情報を提示する。この追加の情報は実行時に引数としてライブラリに与えられ、これにより、ライブラリの内部的な処理アルゴリズムを変更することが可能となる。
Citation List
Patent Literature
[0004]
patcit 1 : 特開2007−109044号公報
patcit 2 : 特開平11−212837号公報
patcit 3 : 特開平9−101899号公報
Summary of Invention
Technical Problem
[0005]
しかしながら、上述したような環境変数により追加の情報を提示する方法によれば、処理アルゴリズムの選択が画一的になるという問題がある。例えば、1つのプログラム内で複数の異なる通信処理が実行される場合、これらの通信処理に対して、追加の情報により指定された処理アルゴリズムのみが選択される。そのため、複数の通信処理それぞれに適した処理アルゴリズムをライブラリが有していたとしても、それぞれの通信処理に対して、適切な処理アルゴリズムの選択がなされない。
[0006]
本発明は上述した問題点を解決するためになされたものであり、プログラムによる機能の呼び出しに対して、アルゴリズム選択の粒度を高めることができるアルゴリズム選択プログラム、アルゴリズム選択装置、アルゴリズム選択方法を提供することを目的とする。
Technical Solution
[0007]
上述した課題を解決するため、アルゴリズム選択プログラムは、呼び出し元プログラムが、所定の機能を実行する拡張プログラムを呼び出す場合に、前記拡張プログラムが有する複数のアルゴリズムのうち一のアルゴリズムを選択するプログラムにであって、記憶装置を有する情報処理装置に、前記呼び出し元プログラムにおける前記拡張プログラムを呼び出す命令と、前記一のアルゴリズムとが対応付けられた選択情報を、前記記憶装置から取得するステップと、前記取得した選択情報に基づいて、前記所定の機能を実行するアルゴリズムを選択するステップとを実行させる。
Advantageous Effects
[0008]
プログラムによる機能の呼び出しに対して、アルゴリズム選択の粒度を高めることができる。
Brief Description of Drawings
[0009]
[fig. 1] 実施の形態1に係る処理装置のハードウェア構成を示す図である。
[fig. 2] 実施の形態1に係るライブラリインターフェイスの機能構成を示す。
[fig. 3] 実施の形態1に係る実行プロファイル情報を示す。
[fig. 4] 実施の形態1に係るアルゴリズム選択情報を示す。
[fig. 5] 呼び出し元プログラムによるライブラリ機能呼び出しに対する動作を示す。
[fig. 6] 実施の形態1に係る実行プロファイル情報生成処理の動作を示す。
[fig. 7] 処理時間の取得方法を示す。
[fig. 8] 実施の形態1に係るアルゴリズム選択情報生成処理の動作を示す。
[fig. 9] アルゴリズム選択処理の動作を示す。
[fig. 10] 上位の呼び出し元命令を示す。
[fig. 11] 呼び出し元関数を用いたアルゴリズム選択情報を示す。
[fig. 12] 呼び出し元命令アドレスシーケンスを用いたアルゴリズム選択情報を示す。
[fig. 13] 実施の形態2におけるアルゴリズム選択情報を示す。
[fig. 14] デバッグ情報を示す。
[fig. 15] 実施の形態1に係るアルゴリズム選択情報生成処理の動作を示す。
[fig. 16] 実施の形態3に係るライブラリインターフェイスの構成及びコンパイラを示す。
[fig. 17] 呼び出し元プログラムのソースコードにおけるアルゴリズムを指定する記述を示す。
[fig. 18] 本発明が適用されるコンピュータシステムの一例を示す図である。
Description of Embodiments
[0010]
(実施の形態1)
以下、本実施の形態について図面を用いて説明する。
[0011]
まず、本実施の形態に係る処理装置のハードウェア構成について説明する。図1は、本実施の形態に係る処理装置のハードウェア構成を示す図である。
[0012]
図1に示すように本実施の形態に係る処理装置901は、CPU(Central Processing Unit)901a、メモリ901b、記憶部901cを有する。なお、この処理装置901は、後述するライブラリ機能のアルゴリズムを選択するアルゴリズム選択装置として機能する。
[0013]
次に、本実施の形態に係るライブラリインターフェイスの機能構成について説明する。図2は、本実施の形態に係るライブラリインターフェイスの機能構成を示す。
[0014]
図2に示すように、本実施の形態に係るライブラリ205は、ライブラリインターフェイス2を介して、呼び出しを受ける。ライブラリインターフェイス2は、呼び出し受付部201、実行プロファイル情報生成部202、アルゴリズム選択情報生成部203、アルゴリズム選択部204を有する。呼び出し受付部201は、呼び出し元である呼び出し元プログラム1からのライブラリ205の呼び出しを受け付ける。ライブラリ205は、規格化された複数の機能(ライブラリ機能)を有する。また、ライブラリ205におけるライブラリ機能は、少なくとも1つ以上のアルゴリズムを有する。ここでアルゴリズムとは、例えば、ライブラリ機能における関数を示す。実行プロファイル情報生成部202は、後述する方法により取得されるライブラリ機能のアルゴリズムの処理時間に基づいて、後述する実行プロファイル情報206を生成する。アルゴリズム選択情報生成部203は、実行プロファイル情報206に基づいて、後述するアルゴリズム選択情報207を生成する。アルゴリズム選択部204は、アルゴリズム選択情報207に基づいて、呼び出し元プログラムのライブラリ呼び出しによるライブラリ機能の実行において、実行するアルゴリズムを選択する。なお、呼び出し受付部201、実行プロファイル情報生成部202、アルゴリズム選択情報生成部203、アルゴリズム選択部204、ライブラリ205のそれぞれの機能は、CPU901aがこれらを実行することにより実現される。また、実行プロファイル情報206及びアルゴリズム選択情報207は、記憶部901cに記憶される。なお、記憶部901cとしては、ハードディスク、フラッシュメモリなどが挙げられる。また、呼び出し受付部201、実行プロファイル情報生成部202、アルゴリズム選択情報生成部203、アルゴリズム選択部204は、全体としてライブラリ205に対するライブラリインターフェイスとして機能する。
[0015]
次に、本実施の形態に係る実行プロファイル情報について説明する。図3は、本実施の形態に係る実行プロファイル情報を示す。
[0016]
図3に示すように、実行プロファイル情報206は、呼び出し元命令アドレス、呼び出されたライブラリ機能、使用アルゴリズム1、処理時間1、使用アルゴリズム2、通信処理時間2がテーブルとして対応付けられた情報である。呼び出し元命令アドレスは、呼び出し元プログラムにおいて、ライブラリ機能を呼び出した命令のアドレスである。呼び出されたライブラリ機能は、呼び出し元命令アドレスにより呼び出されたライブラリ機能である。使用アルゴリズム1は、ライブラリ機能として実行されたアルゴリズムである。処理時間1は、使用アルゴリズム1による処理時間である。使用アルゴリズム2は、ライブラリ機能として実行されたアルゴリズムであり、使用アルゴリズム1とは異なるアルゴリズムである。処理時間2は、使用アルゴリズム2による処理時間である。ここで処理時間とは、例えば、使用アルゴリズムによる演算時間、通信時間、またはこれらの合計時間を示すものであり、後述する方法により取得される。実行プロファイル情報206によれば、呼び出し元命令アドレスとライブラリ機能として実行されたアルゴリズムとの組み合わせにおける処理時間が示される。なお、実行プロファイル情報206は、呼び出し元プログラム1に対して生成される。
[0017]
次に、本実施の形態に係るアルゴリズム選択情報について説明する。図4は、本実施の形態に係るアルゴリズム選択情報を示す。
[0018]
図4に示すように、アルゴリズム選択情報207は、ライブラリ機能、呼び出し元命令アドレス、処理アルゴリズムがテーブルとして対応付けられた情報である。処理アルゴリズムは、ライブラリ機能と呼び出し元命令アドレスの組み合わせに対して選択されるアルゴリズムである。なお、アルゴリズム選択情報207は、呼び出し元プログラム1に対して生成される。
[0019]
次に、呼び出し元プログラムによるライブラリ機能呼び出しに対する動作について説明する。図5は、呼び出し元プログラムによるライブラリ機能呼び出しに対する動作を示す。なお、図5において、呼び出し元プログラムは、所定のアドレスの命令によりライブラリにおける所定のライブラリ機能を呼び出すものとする。
[0020]
図5に示すように、まず、呼び出し受付部201は、呼び出し元プログラム1により呼び出されたライブラリ機能に対応するアルゴリズムが複数であるかどうかを判断する(S101)。
[0021]
アルゴリズムが複数である場合(S101,YES)、呼び出し受付部201は、呼び出し元命令アドレスについて、そのライブラリ機能の呼び出し回数がライブラリ機能の有するアルゴリズムの数以下であるかどうかを判断する(S102)。
[0022]
ライブラリ機能が有するアルゴリズムの数が、ライブラリ機能の呼び出し回数より小さい場合(S102,NO)、呼び出し元受付部201は、呼び出し元プログラム1に対応するアルゴリズム選択情報207があるかどうかを判断する(S103)。
[0023]
呼び出し元プログラム1に対応するアルゴリズム選択情報206がある場合(S103,YES)、呼び出し受付部201は、アルゴリズム選択情報207に呼び出し元命令アドレスがあるかどうかを判断する(S104)。
[0024]
アルゴリズム選択情報207に呼び出し元命令アドレスがある場合(S104,YES)、アルゴリズム選択部204は、後述するアルゴリズム選択処理を実行する(S105)。
[0025]
一方、アルゴリズム選択情報207に呼び出し元命令アドレスがない場合(S104,NO)、アルゴリズム選択情報生成部203は、後述するアルゴリズム選択情報生成処理を実行する(S106)。
[0026]
また、ステップS103において、呼び出し元プログラム1に対応するアルゴリズム選択情報207がない場合(S103,NO)、アルゴリズム選択情報生成部203は、後述するアルゴリズム選択情報生成処理を実行する(S106)。
[0027]
また、ステップS102において、ライブラリ機能が有するアルゴリズムの数が、ライブラリ機能の呼び出し回数以上である場合(S102,YES)、実行プロファイル情報生成部202は、後述する実行プロファイル情報生成処理を実行する(S107)。
[0028]
また、ステップS101において、呼び出し元プログラム1により呼び出されたライブラリ機能に対応するアルゴリズムが1つである場合(S101,NO)、アルゴリズム選択部204は、呼び出された機能に対応するアルゴリズムを選択する(S108)。
[0029]
次に、実行プロファイル情報生成処理の動作について説明する。図6は、実行プロファイル情報生成処理の動作を示す。また、図7は、処理時間の取得方法を示す。
[0030]
図6に示すように、まず、実行プロファイル情報生成部202は、呼び出し元プログラム1に対応する実行プロファイル情報206があるかどうかを判断する(S201)。
[0031]
呼び出し元プログラム1に対応する実行プロファイル情報206がない場合(S201,NO)、実行プロファイル情報生成部202は、呼び出し元プログラム1に対応する実行プロファイル情報を生成する(S202)。次に、実行プロファイル情報生成部202は、呼び出し元プログラム1により呼び出された機能において、未選択のアルゴリズムを一つ選択する(S203)。次に、実行プロファイル情報生成部202は、選択したアルゴリズムによる処理時間を取得する(S204)。次に、実行プロファイル情報生成部202は、取得したアルゴリズムの処理時間を、呼び出し元命令アドレス、呼び出し元プログラム1により呼び出された機能、選択し実行されたアルゴリズムと対応付けて、実行プロファイル情報206に記憶する(S205)。
[0032]
また、ステップS201において、呼び出し元プログラム1に対応する実行プロファイル情報206がある場合(S201,YES)、未選択のアルゴリズムを一つ選択する(S203)。
[0033]
なお、処理時間の取得方法としては、例えば、図7に示す方法が挙げられる。図7に示すように、ライブラリ205内におけるアルゴリズムの全てに、実行開始時刻、実行終了時刻の取得、実行開始時刻と実行終了時刻の差分による処理時間の算出とその記憶を実行させることによって、処理時間を取得することが可能となる。また、ここで同時に呼び出し元命令アドレスも取得され、使用アルゴリズムとともに記憶部901cに記憶される。ここで、呼び出し元命令アドレス、使用アルゴリズム、処理時間は、対応付けられて記億部901cに記憶されるものとする。また、これにより、上述したステップS102において、呼び出し元命令アドレスについての呼び出し回数とアルゴリズムの数を比較することが可能となる。また、ステップS203において、未選択のアルゴリズムとは、呼び出し元命令アドレスに対応するアルゴリズムのうち、実行プロファイル情報206に処理時間が記憶されていないアルゴリズムを示す。
[0034]
次に、アルゴリズム選択情報生成処理の動作について説明する。図8は、アルゴリズム選択情報生成処理の動作を示す。
[0035]
図8に示すように、まず、アルゴリズム選択情報生成部202は、呼び出し元プログラム1に対応するアルゴリズム選択情報207があるかどうかを判断する(S301)。
[0036]
呼び出し元プログラム1に対応するアルゴリズム選択情報207がない場合(S301,NO)、アルゴリズム選択情報生成部203は、呼び出し元プログラム1に対応するアルゴリズム選択情報207を生成する(S302)。次に、アルゴリズム選択情報生成部203は、呼び出し元プログラム1に対応する実行プロファイル情報206において、呼び出し元命令アドレスと対応付けられた使用アルゴリズムの処理時間を参照する(S303)。次に、アルゴリズム選択情報生成部203は、呼び出し元命令アドレスと対応付けられた使用アルゴリズムのうち、最も処理時間が短い使用アルゴリズムを、アルゴリズム選択情報207に記憶する(S304)。ここで、アルゴリズム選択情報生成部202は、呼び出し元プログラム1により呼び出された機能、呼び出し元命令アドレスと対応付けて、最も処理時間が短い使用アルゴリズムを処理アルゴリズムとして、アルゴリズム選択情報207に記憶する。
[0037]
一方、呼び出し元プログラム1に対応するアルゴリズム選択情報207がある場合(S301,YES)、アルゴリズム選択情報生成部203は、呼び出し元命令アドレスと対応付けられた使用アルゴリズムの処理時間を参照する(S303)。
[0038]
次に、アルゴリズム選択処理の動作について説明する。図9は、アルゴリズム選択処理の動作を示す。
[0039]
図9に示すように、まず、アルゴリズム選択部204は、呼び出し元プログラム1に対応するアルゴリズム選択情報207を参照する(S401)。次に、アルゴリズム選択部204は、参照したアルゴリズム選択情報207において、機能を呼び出した呼び出し元命令アドレスがあるかどうかを判断する(S402)。
[0040]
機能を呼び出した呼び出し元命令アドレスがある場合(S402,YES)、アルゴリズム選択部204は、参照したアルゴリズム選択情報207において、機能を呼び出した呼び出し元命令アドレスと対応付けられた処理アルゴリズムを選択する(S403)。
[0041]
一方、機能を呼び出した呼び出し元命令アドレスがない場合(S402,NO)、アルゴリズム選択部204は、呼び出し元プログラム1により呼び出された機能に対応するアルゴリズムを選択する(S404)。
[0042]
上述したように、本実施の形態に係るライブラリインターフェイス2は、呼び出し元プログラム1により呼び出された機能において、呼び出し元命令単位で使用アルゴリズムの処理時間を取得し、処理時間が最も短いアルゴリズムを選択する。これにより、呼び出し元命令に対して最適なアルゴリズムにより機能が実行され、呼び出し元プログラム1によるライブラリ205の実行が最適化される。なお、最適なアルゴリズムを決定する単位は、例えば、呼び出し元命令を呼び出す、更に上位の呼び出し元命令、またはこの命令を含む関数であっても良い。図10は、上位の呼び出し元命令を示す。また、図11は、呼び出し元関数を用いたアルゴリズム選択情報を示す。また、図12は、呼び出し元命令アドレスシーケンスを用いたアルゴリズム選択情報を示す。
[0043]
上位の呼び出し元命令は、図10に示すようにあるライブラリ機能Aが呼び出される場合、ライブラリ機能Aを実際に呼び出す呼び出し元アドレス0x100を含むプログラムYを呼び出す命令(命令アドレス0x070)である。また、図10において、上位の呼び出し元命令を含む関数名はfunc2となる。上位の呼び出し元命令を含む関数単位で処理アルゴリズムを決定したい場合、アルゴリズム選択情報207を、図11に示すようにテーブルとして記憶しても良い。図11に示すアルゴリズム選択情報207は、ライブラリ機能、呼び出し元関数、処理アルゴリズムを対応付ける情報である。また、呼び出し元アドレスが同一であっても、上位の呼び出し元アドレスが異なる場合に異なるアルゴリズムを選択する必要がある場合は、アルゴリズム選択情報207を、図12に示すようにテーブルとして記憶しても良い。図12に示すアルゴリズム選択情報207は、ライブラリ機能、呼び出し元命令アドレスシーケンス、処理アルゴリズムを対応付ける情報である。呼び出し元命令アドレスシーケンスは、直接の呼び出し元命令アドレスに対して、左に記述された命令アドレス程、上位の命令アドレスとなるように記述される。このように、アルゴリズム選択情報207において、処理アルゴリズムと対応付けられる処理の単位を、例えば単一命令による処理から複数命令による処理の範囲で、変更することによって、アルゴリズムを選択する単位の粒度を変更することができる。なお、アルゴリズムを選択する単位の粒度は、実行プロファイル情報206とアルゴリズム選択情報207とにおいて、常に同等となる。例えば、アルゴリズム選択情報207において、呼び出し元関数が処理アルゴリズムと対応付けられる場合、処理時間は呼び出し元関数単位で取得される。従って、実行プロファイル情報206において、処理時間は呼び出し元関数と対応付けられる。
[0044]
なお、本実施の形態において、処理時間が比較されるアルゴリズムの数は、予め絞り込まれていても良い。例えば、事前に提示されたライブラリ205における各アルゴリズムの概要などに基づいて、ライブラリ205の利用者が、処理時間が比較されるアルゴリズムを予め選択するようにしても構わない。この場合、利用者により選択されたアルゴリズム示すリストを記憶部901cに記憶し、リストに示されたアルゴリズムについてのみ処理時間の比較が実行されても良い。また、比較すべきアルゴリズムにのみ、図7に示した命令を記載しても構わない。
[0045]
(実施の形態2)
本実施の形態に係るライブラリ2は、アルゴリズム選択情報に呼び出し元プログラムのソースファイルに関する情報を記憶する点が、実施の形態1とは異なる。まず、本実施の形態におけるアルゴリズム選択情報について説明する。図13は、本実施の形態におけるアルゴリズム選択情報を示す。
[0046]
図13に示すように、本実施の形態におけるアルゴリズム選択情報207は、ライブラリ機能、呼び出し元命令アドレス、処理アルゴリズムに加えて、呼び出し元ソースファイル名、呼び出し元行番号を対応付けて記憶する情報である。呼び出し元ソースファイル名は、呼び出し元プログラム1のソースファイル名を示す。呼び出し元行番号は、呼び出し元プログラム1のソースファイルにおける呼び出し元命令の位置を行番号により示す。このアルゴリズム選択情報207は、呼び出し元プログラム1をコンパイルするコンパイラにより出力されるデバッグ情報に基づいて、アルゴリズム選択情報生成部203により生成される。以下、デバッグ情報及び、本実施の形態におけるアルゴリズム選択情報生成部の動作について説明する。図14は、デバッグ情報を示す。また、図15は、本実施の形態に係るアルゴリズム選択情報生成処理の動作を示す。
[0047]
図14に示すように、例えば、DWARFフォーマットなどによるデバッグ情報は、ソースファイル名、呼び出し行番号、この呼び出し行番号に対応する呼び出し命令アドレスを含む。このデバッグ情報を用いて、アルゴリズム選択情報生成部203は、アルゴリズム選択情報207にソースファイルに関する情報を付加する。
[0048]
図15に示すように、まず、アルゴリズム選択情報生成部203は、呼び出し元プログラム1に対応するアルゴリズム選択情報207があるかどうかを判断する(S501)。
[0049]
呼び出し元プログラム1に対応するアルゴリズム選択情報207がない場合(S501,NO)、アルゴリズム選択情報生成部203は、呼び出し元プログラム1に対応するアルゴリズム選択情報207を生成する(S502)。次に、アルゴリズム選択情報生成部203は、呼び出し元プログラム1に対応する実行プロファイル情報206において、呼び出し元命令アドレスと対応付けられた使用アルゴリズムの処理時間を参照する(S503)。次に、アルゴリズム選択情報生成部203は、呼び出し元命令アドレスと対応付けられた使用アルゴリズムのうち、最も処理時間が短い使用アルゴリズムを、アルゴリズム選択情報207に記憶する(S504)。
[0050]
次に、アルゴリズム選択情報生成部203は、呼び出し元プログラム1のソースファイルのデバッグ情報を参照する(S505)。デバッグ情報の参照後、アルゴリズム選択情報生成部203は、呼び出し元命令アドレスに対して、デバッグ情報において呼び出し元命令アドレスに対応する呼び出し行番号と、ソースファイル名とを対応付けて、アルゴリズム選択情報207に記憶する(S506)。
[0051]
また、ステップS501において、呼び出し元プログラム1に対応するアルゴリズム選択情報207がある場合(S501,YES)、アルゴリズム選択情報生成部203は、呼び出し元命令アドレスと対応付けられた使用アルゴリズムの処理時間を参照する(S503)。
[0052]
このように、呼び出し元命令アドレスとその呼び出し行番号及びソースファイル名とが対応付けられることによって、呼び出し元プログラム1の作成者は、ソースファイルにおいて、ライブラリ機能を呼び出すコードを容易に特定することができる。これによれば、作成者はライブラリ機能におけるアルゴリズムに対する認識や検討を容易に行うことができる。例えば、ある特定のデータ転送アルゴリズムによる処理が、どのソースファイル行で行われているか、どのサブルーチンで行われているか、どのソフトウェアモジュールで行われているか、を容易に検討することが可能となる。
[0053]
(実施の形態3)
上述した実施の形態1及び2において、アルゴリズム選択情報は、ライブラリ2のアルゴリズム選択情報生成部によって生成されたが、本実施の形態においては、アルゴリズム選択情報は、コンパイラにより生成される。図16は、本実施の形態に係るライブラリインターフェイスの構成及びコンパイラを示す。
[0054]
図16に示すように、本実施の形態に係るライブラリインターフェイス2は、実行プロファイル情報生成部202及びアルゴリズム選択情報生成部203を有さない点が、実施の形態1及び2に係るライブラリインターフェイス2と異なる。コンパイラ3は、呼び出し元プログラム1のソースコードをコンパイルする際、最も処理時間の短いアルゴリズムを選択する場合に用いられる情報を少なからず有している。そこで、コンパイラ3は、呼び出し元プログラム1のソースコードに関して、大局的である情報、抽象度が高い情報に基づいてアルゴリズム選択情報207を生成する。つまり、コンパイラ3は、呼び出し元プログラム1のソースコードに基づいて、各アルゴリズムの処理時間を算出する。このような情報としては、例えば、データ依存関係の有無、他ノードのデータを参照用にキャッシュする手法などに関する情報が挙げられる。コンパイラ3は、呼び出し元プログラム1をコンパイルする際に付加的にアルゴリズム選択情報207を生成し、ライブラリインターフェイス2は、呼び出し元プログラム1によるライブラリ205の呼び出しにおいて、アルゴリズム選択情報207に基づいてアルゴリズムを選択する。
[0055]
このように、ソースコードから抽出することができる有用な情報を最大限に活用することで、呼び出し元プログラム1によるライブラリ205の呼び出しにおいて、高い処理効率と標準仕様への両立を実現することができる。例えば、並列化コンパイラにより分散メモリ型並列コンピュータ上で動作する実行バイナリを実現する場合、動作プラットフォームのオープン性の実現と、ソフトウェア保守作業のコスト削減とを両立させることが課題となる。このような課題は、標準仕様に準拠すること、即ち実行バイナリが標準化されたライブラリを用いることにより解決することができる。また、標準仕様に準拠するかどうかの判断は、実行バイナリが効率的に動作するかどうかに依存する。本実施の形態に係るライブラリ2及びコンパイラ3によれば、ライブラリ205を実際に呼び出して実行した場合の処理時間を取得することなく、呼び出し元プログラム1がライブラリ2を用いて効率的に動作することが可能となる。
[0056]
なお、ソースコードのコンパイルに用いられるコンパイラがバックエンドコンパイラやアセンブラなどの複数のコンポーネントから構成されている場合、実施の形態2において示した行番号が付加されたアルゴリズム選択情報207を用いても良い。
[0057]
また、ソースコード内に、呼び出す機能に対して実行すべきアルゴリズムを示す記述を含めることによって、呼び出し元プログラム1の作成者がアルゴリズムを指定することも可能である。図17は、呼び出し元プログラムのソースコードにおけるアルゴリズムを指定する記述を示す。
[0058]
図17に示すように、まず、呼び出し元プログラム1の作成者が機能を呼び出す命令の直後に、例えばコメント形式によりアルゴリズムを指定するコードを記述する。コンパイラ3は、この記述により指定されたアルゴリズムと、この記述の直前にある命令とを対応付けて、アルゴリズム選択情報207として生成する。なお、この記述は、実施の形態2において示した行番号が付加されたアルゴリズム選択情報207に基づいて、コンパイラ3によってソースコードに自動的に埋め込まれても構わない。これによって、処理時間が短いアルゴリズムが選択されると同時に、作成者はソースコードを見るだけで呼び出し命令に対してどのアルゴリズムが選択されるかを確認することができる。
[0059]
本発明は以下に示すようなコンピュータシステムにおいて適用可能である。図18は、本発明が適用されるコンピュータシステムの一例を示す図である。図18に示すコンピュータシステム900は、CPU901aやディスクドライブ等を内蔵した本体部(処理装置)901、本体部901からの指示により画像を表示するディスプレイ902、コンピュータシステム900に種々の情報を入力するキーボード903、ディスプレイ902の表示画面902a上の任意の位置を指定するマウス904及び外部のデータベース等にアクセスして他のコンピュータシステムに記憶されているプログラム等をダウンロードする通信装置905を有する。通信装置905は、ネットワーク通信カード、モデムなどが考えられる。
[0060]
また、上述したような、アルゴリズム選択装置を構成するコンピュータシステムにおいて上述した各ステップを実行させるプログラムを、アルゴリズム選択プログラムとして提供することができる。このプログラムは、コンピュータシステムにより読取り可能な記録媒体に記憶させることによって、アルゴリズム選択装置を構成するコンピュータシステムに実行させることが可能となる。上述した各ステップを実行するプログラムは、ディスク910等の可搬型記録媒体に格納されるか、通信装置905により他のコンピュータシステムの記録媒体906からダウンロードされる。また、コンピュータシステム900に少なくともアルゴリズム選択機能を持たせるアルゴリズム選択プログラム(アルゴリズム選択ソフトウェア)は、コンピュータシステム900に入力されてコンパイルされる。このプログラムは、コンピュータシステム900をアルゴリズム選択機能を有するアルゴリズム選択装置として動作させる。また、このプログラムは、例えばディスク910等のコンピュータ読み取り可能な記録媒体に格納されていても良い。ここで、コンピュータシステム900により読取り可能な記録媒体としては、ROMやRAM等のコンピュータに内部実装される内部記憶装置、ディスク910やフレキシブルディスク、DVDディスク、光磁気ディスク、ICカード等の可搬型記憶媒体や、コンピュータプログラムを保持するデータベース、或いは、他のコンピュータシステム並びにそのデータベースや、通信装置905のような通信手段を介して接続されるコンピュータシステムでアクセス可能な各種記録媒体を含む。
[0061]
本発明は、その要旨または主要な特徴から逸脱することなく、他の様々な形で実施することができる。そのため、前述の実施の形態は、あらゆる点で単なる例示に過ぎず、限定的に解釈してはならない。本発明の範囲は、特許請求の範囲によって示すものであって、明細書本文には、何ら拘束されない。更に、特許請求の範囲の均等範囲に属する全ての変形、様々な改良、代替および改質は、全て本発明の範囲内のものである。
Reference Signs List
[0062]
1 呼び出し元プログラム、2 ライブラリインターフェイス、3 コンパイラ、201 呼び出し受付部、202 実行プロファイル情報生成部、203 アルゴリズム選択情報生成部、204 アルゴリズム選択部、205 ライブラリ、206 実行プロファイル情報、207 アルゴリズム選択情報、901 処理装置、901a CPU、901b メモリ、901c 記憶部。
Claims
[1]
呼び出し元プログラムが、ライブラリ機能を拡張する拡張プログラムを呼び出す場合、前記拡張プログラムが有する複数のアルゴリズムのうち前記ライブラリ機能に対応する一のアルゴリズムを選択するアルゴリズム選択プログラムにおいて、
記憶装置を有する情報処理装置に、
前記ライブラリ機能に複数のアルゴリズムが対応し、且つ、前記ライブラリ機能が有するアルゴリズムの数が前記ライブラリ機能の呼び出し回数以上である場合、
前記拡張プログラムを呼び出した命令を特定する第1の命令特定情報と、前記拡張プログラムを呼び出した命令によって呼び出された前記ライブラリ機能と、前記アルゴリズムと前記アルゴリズムの処理時間の複数の組とを対応付けた情報である実行プロファイル情報を生成させ、
前記実行プロファイル情報を参照して、前記呼び出し元プログラムにより事前に呼び出された前記拡張プログラムが有する複数のアルゴリズムそれぞれの処理時間のうち最も処理時間が短いアルゴリズムと、前記呼び出し元プログラムに
おいて前記拡張プログラムを呼び出す命令を特定する第2の命令特定情報とが対応付けられた選択情報を、前記記憶装置から取得させ、
生成した前記実行プロファイル情報と取得した前記選択情報とに基づいて、前記ライブラリ機能に対応する一のアルゴリズムを選択させることを特徴とするアルゴリズム選択プログラム。
[2]
前記選択情報において前記一のアルゴリズムと対応づけられた前記第2の命令特定情報は、前記拡張プログラムを直接呼び出す命令または該命令を実行において呼び出す命令を含む関数を特定し、
前記一のアルゴリズムを選択させることは、前記選択情報において前記関数に対応付けられたアルゴリズムを選択させることである請求項1に記載のアルゴリズム選択プログラム。
[3]
前記選択情報において前記一のアルゴリズムと対応づけられた前記第2の命令特定情報は、前記拡張プログラムを直接呼び出す命令と該命令を実行において呼び出す命令との組み合わせを特定し、
前記一のアルゴリズムを選択させることは、前記選択情報において前記組み合わせに対応付けられたアルゴリズムを選択させることである請求項1に記載のアルゴリズム選択プログラム。
[4]
前記選択情報は、前記呼び出し元プログラムのソースコードのコンパイルにおいてコンパイラより出力されるデバッグ情報に基づいて、前記選択情報における前記第2の命令特定情報に対し、前記呼び出し元プログラムのソースコードにおける前記拡張プログラムを呼び出す命令に対応する行番号が付加されて前記記憶装置に記憶される請求項3に記載のアルゴリズム選択プログラム。
[5]
前記選択情報は、前記呼び出し元プログラムのソースコードに基づいて、該ソースコードをコンパイルするコンパイラにより生成され、前記記憶部に記憶されることを特徴とする請求項1乃至請求項3のいずれかに記載のアルゴリズム選択プログラム。
[6]
前記呼び出し元プログラムのソースコードは、前記拡張プログラムの呼び出しにおいて実行すべきアルゴリズムを示す記載を含み、
前記コンパイラは、前記ソースコードに含まれる記載に基づいて、前記選択情報を生成することを特徴とする請求項5に記載のアルゴリズム選択プログラム。
[7]
呼び出し元プログラムが、ライブラリ機能を拡張する拡張プログラムを呼び出す場合、前記拡張プログラムが有する複数のアルゴリズムのうち前記ライブラリ機能に対応する一のアルゴリズムを選択するアルゴリズム選択装置において、
記憶装置と、
前記ライブラリ機能に複数のアルゴリズムが対応し、且つ、前記ライブラリ機能が有するアルゴリズムの数が前記ライブラリ機能の呼び出し回数以上である場合、
前記拡張プログラムを呼び出した命令を特定する第1の命令特定情報と、前記拡張プログラムを呼び出した命令によって呼び出された前記ライブラリ機能と、前記アルゴリズムと前記アルゴリズムの処理時間の複数の組とを対応付けた情報である実行プロファイル情報を生成する生成部と、
前記実行プロファイル情報を参照して、前記呼び出し元プログラムにより事前に呼び出された前記拡張プログラムが有する複数のアルゴリズムそれぞれの処理時間のうち最も処理時間が短いアルゴリズムと、前記呼び出し元プログラムに
おいて前記拡張プログラムを呼び出す命令を特定する第2の命令特定情報とが対応付けられた選択情報を、前記記憶装置から取得する取得部と、
生成した前記実行プロファイル情報と取得した前記選択情報とに基づいて、前記ライブラリ機能に対応する一のアルゴリズムを選択する選択部と
を有することを特徴とするアルゴリズム選択装置。
[8]
前記選択情報において前記一のアルゴリズムと対応づけられた前記第2の命令特定情報は、前記拡張プログラムを直接呼び出す命令または該命令を実行において呼び出す上位の命令を含む関数を特定し、
前記選択部は、前記選択情報において前記関数に対応付けられたアルゴリズムを選択することを特徴とする請求項7に記載のアルゴリズム選択装置。
[9]
前記選択情報において前記一のアルゴリズムと対応づけられた前記拡張プログラムを呼び出す前記第2の命令特定情報は、前記拡張プログラムを直接呼び出す命令と該命令を実行において呼び出す命令との組み合わせを特定し、
前記選択部は、前記選択情報において前記組み合わせに対応付けられたアルゴリズムを選択することを特徴とする請求項8に記載のアルゴリズム選択装置。
[10]
さらに、前記呼び出し元プログラムのソースコードのコンパイルにおいてコンパイラより出力されるデバッグ情報に基づいて、前記選択情報における前記第2の命令特定情報に対し、前記呼び出し元プログラムのソースコードにおける前記拡張プログラムを呼び出す命令に対応する行番号を付加する生成部を有し、
前記生成部で前記行番号が付加された前記選択情報は前記記憶装置に記憶されることを特徴とする請求項9に記載のアルゴリズム選択装置。
[11]
前記選択情報は、前記呼び出し元プログラムのソースコードに基づいて、該ソースコードをコンパイルするコンパイラにより生成されることを特徴とする請求項7乃至請求項9のいずれかに記載のアルゴリズム選択装置。
[12]
前記呼び出し元プログラムのソースコードは、前記拡張プログラムの呼び出しにおいて実行すべきアルゴリズムを示す記載を含み、
前記コンパイラは、前記ソースコードに含まれる記載に基づいて、前記選択情報を生成することを特徴とする請求項11に記載のアルゴリズム選択装置。
Drawings