(57)【特許請求の範囲】
【請求項１】
呼び出し元プログラムが、ライブラリ機能を拡張する拡張プログラムを呼び出す場合、前記拡張プログラムが有する複数のアルゴリズムのうち前記ライブラリ機能に対応する一のアルゴリズムを選択するアルゴリズム選択プログラムにおいて、
記憶装置を有する情報処理装置に、
前記ライブラリ機能に複数のアルゴリズムが対応し、且つ、前記ライブラリ機能が有するアルゴリズムの数が前記ライブラリ機能の呼び出し回数以上である場合、前記拡張プログラムを呼び出した命令を特定する第１の命令特定情報と、前記拡張プログラムを呼び出した命令によって呼び出された前記ライブラリ機能と、前記アルゴリズムと前記アルゴリズムの処理時間の複数の組とを対応付けた情報である実行プロファイル情報を生成させ、
前記実行プロファイル情報を参照して、前記呼び出し元プログラムにより事前に呼び出された前記拡張プログラムが有する複数のアルゴリズムそれぞれの処理時間のうち最も処理時間が短いアルゴリズムと、前記呼び出し元プログラムにおいて前記拡張プログラムを呼び出す命令を特定する第２の命令特定情報とが対応付けられた選択情報を、前記記憶装置から取得させ、
生成した前記実行プロファイル情報と取得した前記選択情報とに基づいて、前記ライブラリ機能に対応する一のアルゴリズムを選択させることを特徴とするアルゴリズム選択プログラム。
【請求項２】
前記選択情報において前記一のアルゴリズムと対応づけられた前記第２の命令特定情報は、前記拡張プログラムを直接呼び出す命令または該命令を実行において呼び出す命令を含む関数を特定し、
前記一のアルゴリズムを選択させることは、前記選択情報において前記関数に対応付けられたアルゴリズムを選択させることである請求項１に記載のアルゴリズム選択プログラム。
【請求項３】
前記選択情報において前記一のアルゴリズムと対応づけられた前記第２の命令特定情報は、前記拡張プログラムを直接呼び出す命令と該命令を実行において呼び出す命令との組み合わせを特定し、
前記一のアルゴリズムを選択させることは、前記選択情報において前記組み合わせに対応付けられたアルゴリズムを選択させることである請求項１に記載のアルゴリズム選択プログラム。
【請求項４】
前記選択情報は、前記呼び出し元プログラムのソースコードのコンパイルにおいてコンパイラより出力されるデバッグ情報に基づいて、前記選択情報における前記第２の命令特定情報に対し、前記呼び出し元プログラムのソースコードにおける前記拡張プログラムを呼び出す命令に対応する行番号が付加されて前記記憶装置に記憶される請求項３に記載のアルゴリズム選択プログラム。
【請求項５】
前記選択情報は、前記呼び出し元プログラムのソースコードに基づいて、該ソースコードをコンパイルするコンパイラにより生成され、前記記憶部に記憶されることを特徴とする請求項１乃至請求項３のいずれかに記載のアルゴリズム選択プログラム。
【請求項６】
前記呼び出し元プログラムのソースコードは、前記拡張プログラムの呼び出しにおいて実行すべきアルゴリズムを示す記載を含み、
前記コンパイラは、前記ソースコードに含まれる記載に基づいて、前記選択情報を生成することを特徴とする請求項５に記載のアルゴリズム選択プログラム。
【請求項７】
呼び出し元プログラムが、ライブラリ機能を拡張する拡張プログラムを呼び出す場合、前記拡張プログラムが有する複数のアルゴリズムのうち前記ライブラリ機能に対応する一のアルゴリズムを選択するアルゴリズム選択装置において、
記憶装置と、
前記ライブラリ機能に複数のアルゴリズムが対応し、且つ、前記ライブラリ機能が有するアルゴリズムの数が前記ライブラリ機能の呼び出し回数以上である場合、前記拡張プログラムを呼び出した命令を特定する第１の命令特定情報と、前記拡張プログラムを呼び出した命令によって呼び出された前記ライブラリ機能と、前記アルゴリズムと前記アルゴリズムの処理時間の複数の組とを対応付けた情報である実行プロファイル情報を生成する生成部と、
前記実行プロファイル情報を参照して、前記呼び出し元プログラムにより事前に呼び出された前記拡張プログラムが有する複数のアルゴリズムそれぞれの処理時間のうち最も処理時間が短いアルゴリズムと、前記呼び出し元プログラムにおいて前記拡張プログラムを呼び出す命令を特定する第２の命令特定情報とが対応付けられた選択情報を、前記記憶装置から取得する取得部と、
生成した前記実行プロファイル情報と取得した前記選択情報とに基づいて、前記ライブラリ機能に対応する一のアルゴリズムを選択する選択部と
を有することを特徴とするアルゴリズム選択装置。
【請求項８】
前記選択情報において前記一のアルゴリズムと対応づけられた前記第２の命令特定情報は、前記拡張プログラムを直接呼び出す命令または該命令を実行において呼び出す上位の命令を含む関数を特定し、
前記選択部は、前記選択情報において前記関数に対応付けられたアルゴリズムを選択することを特徴とする請求項７に記載のアルゴリズム選択装置。
【請求項９】
前記選択情報において前記一のアルゴリズムと対応づけられた前記拡張プログラムを呼び出す前記第２の命令特定情報は、前記拡張プログラムを直接呼び出す命令と該命令を実行において呼び出す命令との組み合わせを特定し、
前記選択部は、前記選択情報において前記組み合わせに対応付けられたアルゴリズムを選択することを特徴とする請求項８に記載のアルゴリズム選択装置。
【請求項１０】
さらに、前記呼び出し元プログラムのソースコードのコンパイルにおいてコンパイラより出力されるデバッグ情報に基づいて、前記選択情報における前記第２の命令特定情報に対し、前記呼び出し元プログラムのソースコードにおける前記拡張プログラムを呼び出す命令に対応する行番号を付加する生成部を有し、
前記生成部で前記行番号が付加された前記選択情報は前記記憶装置に記憶されることを特徴とする請求項９に記載のアルゴリズム選択装置。
【請求項１１】
前記選択情報は、前記呼び出し元プログラムのソースコードに基づいて、該ソースコードをコンパイルするコンパイラにより生成されることを特徴とする請求項７乃至請求項９のいずれかに記載のアルゴリズム選択装置。
【請求項１２】
前記呼び出し元プログラムのソースコードは、前記拡張プログラムの呼び出しにおいて実行すべきアルゴリズムを示す記載を含み、
前記コンパイラは、前記ソースコードに含まれる記載に基づいて、前記選択情報を生成することを特徴とする請求項１１に記載のアルゴリズム選択装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アルゴリズム選択プログラム、アルゴリズム選択装置及び方法に関する。
【背景技術】
【０００２】
コンピュータプログラムの作成においては、ライブラリの呼び出しインターフェイスであるライブラリインターフェイスがライブラリとコンピュータプログラムをリンクすることにより、ライブラリにより提供される機能がコンピュータプログラムに取り込まれる。また、ライブラリインターフェイスは、所定の規格における互換性や他のプラットフォームへの移植の容易さの実現を目的として、標準仕様として規約化される。標準仕様としては、例えばＭＰＩ（Ｍｅｓｓａｇｅ  Ｐａｓｓｉｎｇ  Ｉｎｔｅｒｆａｃｅ）が挙げられる。また、このように規約化されたライブラリインターフェイスは、互換性や可搬性を向上させるために、提供する機能が一般化、抽象化される。ここで機能の一般化、抽象化とは、ライブラリにおいてなされる複数の処理を１つの機能として、ライブラリを利用するプログラムに提供することを示す。その結果、提供する機能がより効率的に処理されるような実装を考慮した場合、ライブラリインターフェイスより得られる情報は、処理アルゴリズムの選択に必要十分ではない場合がある。例えば、ファイルＩ／Ｏにおけるアクセスパターンや、ネットワーク通信における通信アルゴリズムなどにおいて、ライブラリインターフェイスは、求められる選択に対して必要十分な情報を提供しない。つまり、ある１つの処理目的を達成するアルゴリズムが複数用意されていたとしても、ライブラリインターフェイスはその選択手段を提供しない。【０００３】
このような問題に対する従来の解決策として、ライブラリの呼び出し元としてのプログラムが環境変数と呼ばれる追加の情報をライブラリに対して提示する方法がある。この方法は、ライブラリの実装において規定される項目について、呼び出し元プログラムの作成者または実行者が追加の情報を提示する。この追加の情報は実行時に引数としてライブラリに与えられ、これにより、ライブラリの内部的な処理アルゴリズムを変更することが可能となる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１０９０４４号公報
【特許文献２】特開平１１−２１２８３７号公報
【特許文献３】特開平９−１０１８９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述したような環境変数により追加の情報を提示する方法によれば、処理アルゴリズムの選択が画一的になるという問題がある。例えば、１つのプログラム内で複数の異なる通信処理が実行される場合、これらの通信処理に対して、追加の情報により指定された処理アルゴリズムのみが選択される。そのため、複数の通信処理それぞれに適した処理アルゴリズムをライブラリが有していたとしても、それぞれの通信処理に対して、適切な処理アルゴリズムの選択がなされない。【０００６】
本発明は上述した問題点を解決するためになされたものであり、プログラムによる機能の呼び出しに対して、アルゴリズム選択の粒度を高めることができるアルゴリズム選択プログラム、アルゴリズム選択装置、アルゴリズム選択方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決するため、アルゴリズム選択プログラムは、呼び出し元プログラムが、所定の機能を実行する拡張プログラムを呼び出す場合に、前記拡張プログラムが有する複数のアルゴリズムのうち一のアルゴリズムを選択するプログラムにであって、記憶装置を有する情報処理装置に、前記呼び出し元プログラムにおける前記拡張プログラムを呼び出す命令と、前記一のアルゴリズムとが対応付けられた選択情報を、前記記憶装置から取得するステップと、前記取得した選択情報に基づいて、前記所定の機能を実行するアルゴリズムを選択するステップとを実行させる。
【発明の効果】
【０００８】
プログラムによる機能の呼び出しに対して、アルゴリズム選択の粒度を高めることができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１に係る処理装置のハードウェア構成を示す図である。
【図２】実施の形態１に係るライブラリインターフェイスの機能構成を示す。
【図３】実施の形態１に係る実行プロファイル情報を示す。
【図４】実施の形態１に係るアルゴリズム選択情報を示す。
【図５】呼び出し元プログラムによるライブラリ機能呼び出しに対する動作を示す。
【図６】実施の形態１に係る実行プロファイル情報生成処理の動作を示す。
【図７】処理時間の取得方法を示す。
【図８】実施の形態１に係るアルゴリズム選択情報生成処理の動作を示す。
【図９】アルゴリズム選択処理の動作を示す。
【図１０】上位の呼び出し元命令を示す。
【図１１】呼び出し元関数を用いたアルゴリズム選択情報を示す。
【図１２】呼び出し元命令アドレスシーケンスを用いたアルゴリズム選択情報を示す。
【図１３】実施の形態２におけるアルゴリズム選択情報を示す。
【図１４】デバッグ情報を示す。
【図１５】実施の形態１に係るアルゴリズム選択情報生成処理の動作を示す。
【図１６】実施の形態３に係るライブラリインターフェイスの構成及びコンパイラを示す。
【図１７】呼び出し元プログラムのソースコードにおけるアルゴリズムを指定する記述を示す。
【図１８】本発明が適用されるコンピュータシステムの一例を示す図である。
【発明を実施するための形態】
【００１０】
（実施の形態１）
以下、本実施の形態について図面を用いて説明する。
【００１１】
まず、本実施の形態に係る処理装置のハードウェア構成について説明する。図１は、本実施の形態に係る処理装置のハードウェア構成を示す図である。
【００１２】
図１に示すように本実施の形態に係る処理装置９０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９０１ａ、メモリ９０１ｂ、記憶部９０１ｃを有する。なお、この処理装置９０１は、後述するライブラリ機能のアルゴリズムを選択するアルゴリズム選択装置として機能する。
【００１３】
次に、本実施の形態に係るライブラリインターフェイスの機能構成について説明する。図２は、本実施の形態に係るライブラリインターフェイスの機能構成を示す。
【００１４】
図２に示すように、本実施の形態に係るライブラリ２０５は、ライブラリインターフェイス２を介して、呼び出しを受ける。ライブラリインターフェイス２は、呼び出し受付部２０１、実行プロファイル情報生成部２０２、アルゴリズム選択情報生成部２０３、アルゴリズム選択部２０４を有する。呼び出し受付部２０１は、呼び出し元である呼び出し元プログラム１からのライブラリ２０５の呼び出しを受け付ける。ライブラリ２０５は、規格化された複数の機能（ライブラリ機能）を有する。また、ライブラリ２０５におけるライブラリ機能は、少なくとも１つ以上のアルゴリズムを有する。ここでアルゴリズムとは、例えば、ライブラリ機能における関数を示す。実行プロファイル情報生成部２０２は、後述する方法により取得されるライブラリ機能のアルゴリズムの処理時間に基づいて、後述する実行プロファイル情報２０６を生成する。アルゴリズム選択情報生成部２０３は、実行プロファイル情報２０６に基づいて、後述するアルゴリズム選択情報２０７を生成する。アルゴリズム選択部２０４は、アルゴリズム選択情報２０７に基づいて、呼び出し元プログラムのライブラリ呼び出しによるライブラリ機能の実行において、実行するアルゴリズムを選択する。なお、呼び出し受付部２０１、実行プロファイル情報生成部２０２、アルゴリズム選択情報生成部２０３、アルゴリズム選択部２０４、ライブラリ２０５のそれぞれの機能は、ＣＰＵ９０１ａがこれらを実行することにより実現される。また、実行プロファイル情報２０６及びアルゴリズム選択情報２０７は、記憶部９０１ｃに記憶される。なお、記憶部９０１ｃとしては、ハードディスク、フラッシュメモリなどが挙げられる。また、呼び出し受付部２０１、実行プロファイル情報生成部２０２、アルゴリズム選択情報生成部２０３、アルゴリズム選択部２０４は、全体としてライブラリ２０５に対するライブラリインターフェイスとして機能する。
【００１５】
次に、本実施の形態に係る実行プロファイル情報について説明する。図３は、本実施の形態に係る実行プロファイル情報を示す。
【００１６】
図３に示すように、実行プロファイル情報２０６は、呼び出し元命令アドレス、呼び出されたライブラリ機能、使用アルゴリズム１、処理時間１、使用アルゴリズム２、通信処理時間２がテーブルとして対応付けられた情報である。呼び出し元命令アドレスは、呼び出し元プログラムにおいて、ライブラリ機能を呼び出した命令のアドレスである。呼び出されたライブラリ機能は、呼び出し元命令アドレスにより呼び出されたライブラリ機能である。使用アルゴリズム１は、ライブラリ機能として実行されたアルゴリズムである。処理時間１は、使用アルゴリズム１による処理時間である。使用アルゴリズム２は、ライブラリ機能として実行されたアルゴリズムであり、使用アルゴリズム１とは異なるアルゴリズムである。処理時間２は、使用アルゴリズム２による処理時間である。ここで処理時間とは、例えば、使用アルゴリズムによる演算時間、通信時間、またはこれらの合計時間を示すものであり、後述する方法により取得される。実行プロファイル情報２０６によれば、呼び出し元命令アドレスとライブラリ機能として実行されたアルゴリズムとの組み合わせにおける処理時間が示される。なお、実行プロファイル情報２０６は、呼び出し元プログラム１に対して生成される。
【００１７】
次に、本実施の形態に係るアルゴリズム選択情報について説明する。図４は、本実施の形態に係るアルゴリズム選択情報を示す。
【００１８】
図４に示すように、アルゴリズム選択情報２０７は、ライブラリ機能、呼び出し元命令アドレス、処理アルゴリズムがテーブルとして対応付けられた情報である。処理アルゴリズムは、ライブラリ機能と呼び出し元命令アドレスの組み合わせに対して選択されるアルゴリズムである。なお、アルゴリズム選択情報２０７は、呼び出し元プログラム１に対して生成される。
【００１９】
次に、呼び出し元プログラムによるライブラリ機能呼び出しに対する動作について説明する。図５は、呼び出し元プログラムによるライブラリ機能呼び出しに対する動作を示す。なお、図５において、呼び出し元プログラムは、所定のアドレスの命令によりライブラリにおける所定のライブラリ機能を呼び出すものとする。
【００２０】
図５に示すように、まず、呼び出し受付部２０１は、呼び出し元プログラム１により呼び出されたライブラリ機能に対応するアルゴリズムが複数であるかどうかを判断する（Ｓ１０１）。
【００２１】
アルゴリズムが複数である場合（Ｓ１０１，ＹＥＳ）、呼び出し受付部２０１は、呼び出し元命令アドレスについて、そのライブラリ機能の呼び出し回数がライブラリ機能の有するアルゴリズムの数以下であるかどうかを判断する（Ｓ１０２）。
【００２２】
ライブラリ機能が有するアルゴリズムの数が、ライブラリ機能の呼び出し回数より小さい場合（Ｓ１０２，ＮＯ）、呼び出し元受付部２０１は、呼び出し元プログラム１に対応するアルゴリズム選択情報２０７があるかどうかを判断する（Ｓ１０３）。
【００２３】
呼び出し元プログラム１に対応するアルゴリズム選択情報２０６がある場合（Ｓ１０３，ＹＥＳ）、呼び出し受付部２０１は、アルゴリズム選択情報２０７に呼び出し元命令アドレスがあるかどうかを判断する（Ｓ１０４）。
【００２４】
アルゴリズム選択情報２０７に呼び出し元命令アドレスがある場合（Ｓ１０４，ＹＥＳ）、アルゴリズム選択部２０４は、後述するアルゴリズム選択処理を実行する（Ｓ１０５）。
【００２５】
一方、アルゴリズム選択情報２０７に呼び出し元命令アドレスがない場合（Ｓ１０４，ＮＯ）、アルゴリズム選択情報生成部２０３は、後述するアルゴリズム選択情報生成処理を実行する（Ｓ１０６）。
【００２６】
また、ステップＳ１０３において、呼び出し元プログラム１に対応するアルゴリズム選択情報２０７がない場合（Ｓ１０３，ＮＯ）、アルゴリズム選択情報生成部２０３は、後述するアルゴリズム選択情報生成処理を実行する（Ｓ１０６）。
【００２７】
また、ステップＳ１０２において、ライブラリ機能が有するアルゴリズムの数が、ライブラリ機能の呼び出し回数以上である場合（Ｓ１０２，ＹＥＳ）、実行プロファイル情報生成部２０２は、後述する実行プロファイル情報生成処理を実行する（Ｓ１０７）。
【００２８】
また、ステップＳ１０１において、呼び出し元プログラム１により呼び出されたライブラリ機能に対応するアルゴリズムが１つである場合（Ｓ１０１，ＮＯ）、アルゴリズム選択部２０４は、呼び出された機能に対応するアルゴリズムを選択する（Ｓ１０８）。
【００２９】
次に、実行プロファイル情報生成処理の動作について説明する。図６は、実行プロファイル情報生成処理の動作を示す。また、図７は、処理時間の取得方法を示す。
【００３０】
図６に示すように、まず、実行プロファイル情報生成部２０２は、呼び出し元プログラム１に対応する実行プロファイル情報２０６があるかどうかを判断する（Ｓ２０１）。
【００３１】
呼び出し元プログラム１に対応する実行プロファイル情報２０６がない場合（Ｓ２０１，ＮＯ）、実行プロファイル情報生成部２０２は、呼び出し元プログラム１に対応する実行プロファイル情報を生成する（Ｓ２０２）。次に、実行プロファイル情報生成部２０２は、呼び出し元プログラム１により呼び出された機能において、未選択のアルゴリズムを一つ選択する（Ｓ２０３）。次に、実行プロファイル情報生成部２０２は、選択したアルゴリズムによる処理時間を取得する（Ｓ２０４）。次に、実行プロファイル情報生成部２０２は、取得したアルゴリズムの処理時間を、呼び出し元命令アドレス、呼び出し元プログラム１により呼び出された機能、選択し実行されたアルゴリズムと対応付けて、実行プロファイル情報２０６に記憶する（Ｓ２０５）。
【００３２】
また、ステップＳ２０１において、呼び出し元プログラム１に対応する実行プロファイル情報２０６がある場合（Ｓ２０１，ＹＥＳ）、未選択のアルゴリズムを一つ選択する（Ｓ２０３）。
【００３３】
なお、処理時間の取得方法としては、例えば、図７に示す方法が挙げられる。図７に示すように、ライブラリ２０５内におけるアルゴリズムの全てに、実行開始時刻、実行終了時刻の取得、実行開始時刻と実行終了時刻の差分による処理時間の算出とその記憶を実行させることによって、処理時間を取得することが可能となる。また、ここで同時に呼び出し元命令アドレスも取得され、使用アルゴリズムとともに記憶部９０１ｃに記憶される。ここで、呼び出し元命令アドレス、使用アルゴリズム、処理時間は、対応付けられて記億部９０１ｃに記憶されるものとする。また、これにより、上述したステップＳ１０２において、呼び出し元命令アドレスについての呼び出し回数とアルゴリズムの数を比較することが可能となる。また、ステップＳ２０３において、未選択のアルゴリズムとは、呼び出し元命令アドレスに対応するアルゴリズムのうち、実行プロファイル情報２０６に処理時間が記憶されていないアルゴリズムを示す。
【００３４】
次に、アルゴリズム選択情報生成処理の動作について説明する。図８は、アルゴリズム選択情報生成処理の動作を示す。
【００３５】
図８に示すように、まず、アルゴリズム選択情報生成部２０２は、呼び出し元プログラム１に対応するアルゴリズム選択情報２０７があるかどうかを判断する（Ｓ３０１）。
【００３６】
呼び出し元プログラム１に対応するアルゴリズム選択情報２０７がない場合（Ｓ３０１，ＮＯ）、アルゴリズム選択情報生成部２０３は、呼び出し元プログラム１に対応するアルゴリズム選択情報２０７を生成する（Ｓ３０２）。次に、アルゴリズム選択情報生成部２０３は、呼び出し元プログラム１に対応する実行プロファイル情報２０６において、呼び出し元命令アドレスと対応付けられた使用アルゴリズムの処理時間を参照する（Ｓ３０３）。次に、アルゴリズム選択情報生成部２０３は、呼び出し元命令アドレスと対応付けられた使用アルゴリズムのうち、最も処理時間が短い使用アルゴリズムを、アルゴリズム選択情報２０７に記憶する（Ｓ３０４）。ここで、アルゴリズム選択情報生成部２０２は、呼び出し元プログラム１により呼び出された機能、呼び出し元命令アドレスと対応付けて、最も処理時間が短い使用アルゴリズムを処理アルゴリズムとして、アルゴリズム選択情報２０７に記憶する。
【００３７】
一方、呼び出し元プログラム１に対応するアルゴリズム選択情報２０７がある場合（Ｓ３０１，ＹＥＳ）、アルゴリズム選択情報生成部２０３は、呼び出し元命令アドレスと対応付けられた使用アルゴリズムの処理時間を参照する（Ｓ３０３）。
【００３８】
次に、アルゴリズム選択処理の動作について説明する。図９は、アルゴリズム選択処理の動作を示す。
【００３９】
図９に示すように、まず、アルゴリズム選択部２０４は、呼び出し元プログラム１に対応するアルゴリズム選択情報２０７を参照する（Ｓ４０１）。次に、アルゴリズム選択部２０４は、参照したアルゴリズム選択情報２０７において、機能を呼び出した呼び出し元命令アドレスがあるかどうかを判断する（Ｓ４０２）。
【００４０】
機能を呼び出した呼び出し元命令アドレスがある場合（Ｓ４０２，ＹＥＳ）、アルゴリズム選択部２０４は、参照したアルゴリズム選択情報２０７において、機能を呼び出した呼び出し元命令アドレスと対応付けられた処理アルゴリズムを選択する（Ｓ４０３）。
【００４１】
一方、機能を呼び出した呼び出し元命令アドレスがない場合（Ｓ４０２，ＮＯ）、アルゴリズム選択部２０４は、呼び出し元プログラム１により呼び出された機能に対応するアルゴリズムを選択する（Ｓ４０４）。
【００４２】
上述したように、本実施の形態に係るライブラリインターフェイス２は、呼び出し元プログラム１により呼び出された機能において、呼び出し元命令単位で使用アルゴリズムの処理時間を取得し、処理時間が最も短いアルゴリズムを選択する。これにより、呼び出し元命令に対して最適なアルゴリズムにより機能が実行され、呼び出し元プログラム１によるライブラリ２０５の実行が最適化される。なお、最適なアルゴリズムを決定する単位は、例えば、呼び出し元命令を呼び出す、更に上位の呼び出し元命令、またはこの命令を含む関数であっても良い。図１０は、上位の呼び出し元命令を示す。また、図１１は、呼び出し元関数を用いたアルゴリズム選択情報を示す。また、図１２は、呼び出し元命令アドレスシーケンスを用いたアルゴリズム選択情報を示す。
【００４３】
上位の呼び出し元命令は、図１０に示すようにあるライブラリ機能Ａが呼び出される場合、ライブラリ機能Ａを実際に呼び出す呼び出し元アドレス０ｘ１００を含むプログラムＹを呼び出す命令（命令アドレス０ｘ０７０）である。また、図１０において、上位の呼び出し元命令を含む関数名はｆｕｎｃ２となる。上位の呼び出し元命令を含む関数単位で処理アルゴリズムを決定したい場合、アルゴリズム選択情報２０７を、図１１に示すようにテーブルとして記憶しても良い。図１１に示すアルゴリズム選択情報２０７は、ライブラリ機能、呼び出し元関数、処理アルゴリズムを対応付ける情報である。また、呼び出し元アドレスが同一であっても、上位の呼び出し元アドレスが異なる場合に異なるアルゴリズムを選択する必要がある場合は、アルゴリズム選択情報２０７を、図１２に示すようにテーブルとして記憶しても良い。図１２に示すアルゴリズム選択情報２０７は、ライブラリ機能、呼び出し元命令アドレスシーケンス、処理アルゴリズムを対応付ける情報である。呼び出し元命令アドレスシーケンスは、直接の呼び出し元命令アドレスに対して、左に記述された命令アドレス程、上位の命令アドレスとなるように記述される。このように、アルゴリズム選択情報２０７において、処理アルゴリズムと対応付けられる処理の単位を、例えば単一命令による処理から複数命令による処理の範囲で、変更することによって、アルゴリズムを選択する単位の粒度を変更することができる。なお、アルゴリズムを選択する単位の粒度は、実行プロファイル情報２０６とアルゴリズム選択情報２０７とにおいて、常に同等となる。例えば、アルゴリズム選択情報２０７において、呼び出し元関数が処理アルゴリズムと対応付けられる場合、処理時間は呼び出し元関数単位で取得される。従って、実行プロファイル情報２０６において、処理時間は呼び出し元関数と対応付けられる。
【００４４】
なお、本実施の形態において、処理時間が比較されるアルゴリズムの数は、予め絞り込まれていても良い。例えば、事前に提示されたライブラリ２０５における各アルゴリズムの概要などに基づいて、ライブラリ２０５の利用者が、処理時間が比較されるアルゴリズムを予め選択するようにしても構わない。この場合、利用者により選択されたアルゴリズム示すリストを記憶部９０１ｃに記憶し、リストに示されたアルゴリズムについてのみ処理時間の比較が実行されても良い。また、比較すべきアルゴリズムにのみ、図７に示した命令を記載しても構わない。
【００４５】
（実施の形態２）
本実施の形態に係るライブラリ２は、アルゴリズム選択情報に呼び出し元プログラムのソースファイルに関する情報を記憶する点が、実施の形態１とは異なる。まず、本実施の形態におけるアルゴリズム選択情報について説明する。図１３は、本実施の形態におけるアルゴリズム選択情報を示す。
【００４６】
図１３に示すように、本実施の形態におけるアルゴリズム選択情報２０７は、ライブラリ機能、呼び出し元命令アドレス、処理アルゴリズムに加えて、呼び出し元ソースファイル名、呼び出し元行番号を対応付けて記憶する情報である。呼び出し元ソースファイル名は、呼び出し元プログラム１のソースファイル名を示す。呼び出し元行番号は、呼び出し元プログラム１のソースファイルにおける呼び出し元命令の位置を行番号により示す。このアルゴリズム選択情報２０７は、呼び出し元プログラム１をコンパイルするコンパイラにより出力されるデバッグ情報に基づいて、アルゴリズム選択情報生成部２０３により生成される。以下、デバッグ情報及び、本実施の形態におけるアルゴリズム選択情報生成部の動作について説明する。図１４は、デバッグ情報を示す。また、図１５は、本実施の形態に係るアルゴリズム選択情報生成処理の動作を示す。
【００４７】
図１４に示すように、例えば、ＤＷＡＲＦフォーマットなどによるデバッグ情報は、ソースファイル名、呼び出し行番号、この呼び出し行番号に対応する呼び出し命令アドレスを含む。このデバッグ情報を用いて、アルゴリズム選択情報生成部２０３は、アルゴリズム選択情報２０７にソースファイルに関する情報を付加する。
【００４８】
図１５に示すように、まず、アルゴリズム選択情報生成部２０３は、呼び出し元プログラム１に対応するアルゴリズム選択情報２０７があるかどうかを判断する（Ｓ５０１）。
【００４９】
呼び出し元プログラム１に対応するアルゴリズム選択情報２０７がない場合（Ｓ５０１，ＮＯ）、アルゴリズム選択情報生成部２０３は、呼び出し元プログラム１に対応するアルゴリズム選択情報２０７を生成する（Ｓ５０２）。次に、アルゴリズム選択情報生成部２０３は、呼び出し元プログラム１に対応する実行プロファイル情報２０６において、呼び出し元命令アドレスと対応付けられた使用アルゴリズムの処理時間を参照する（Ｓ５０３）。次に、アルゴリズム選択情報生成部２０３は、呼び出し元命令アドレスと対応付けられた使用アルゴリズムのうち、最も処理時間が短い使用アルゴリズムを、アルゴリズム選択情報２０７に記憶する（Ｓ５０４）。
【００５０】
次に、アルゴリズム選択情報生成部２０３は、呼び出し元プログラム１のソースファイルのデバッグ情報を参照する（Ｓ５０５）。デバッグ情報の参照後、アルゴリズム選択情報生成部２０３は、呼び出し元命令アドレスに対して、デバッグ情報において呼び出し元命令アドレスに対応する呼び出し行番号と、ソースファイル名とを対応付けて、アルゴリズム選択情報２０７に記憶する（Ｓ５０６）。
【００５１】
また、ステップＳ５０１において、呼び出し元プログラム１に対応するアルゴリズム選択情報２０７がある場合（Ｓ５０１，ＹＥＳ）、アルゴリズム選択情報生成部２０３は、呼び出し元命令アドレスと対応付けられた使用アルゴリズムの処理時間を参照する（Ｓ５０３）。
【００５２】
このように、呼び出し元命令アドレスとその呼び出し行番号及びソースファイル名とが対応付けられることによって、呼び出し元プログラム１の作成者は、ソースファイルにおいて、ライブラリ機能を呼び出すコードを容易に特定することができる。これによれば、作成者はライブラリ機能におけるアルゴリズムに対する認識や検討を容易に行うことができる。例えば、ある特定のデータ転送アルゴリズムによる処理が、どのソースファイル行で行われているか、どのサブルーチンで行われているか、どのソフトウェアモジュールで行われているか、を容易に検討することが可能となる。
【００５３】
（実施の形態３）
上述した実施の形態１及び２において、アルゴリズム選択情報は、ライブラリ２のアルゴリズム選択情報生成部によって生成されたが、本実施の形態においては、アルゴリズム選択情報は、コンパイラにより生成される。図１６は、本実施の形態に係るライブラリインターフェイスの構成及びコンパイラを示す。
【００５４】
図１６に示すように、本実施の形態に係るライブラリインターフェイス２は、実行プロファイル情報生成部２０２及びアルゴリズム選択情報生成部２０３を有さない点が、実施の形態１及び２に係るライブラリインターフェイス２と異なる。コンパイラ３は、呼び出し元プログラム１のソースコードをコンパイルする際、最も処理時間の短いアルゴリズムを選択する場合に用いられる情報を少なからず有している。そこで、コンパイラ３は、呼び出し元プログラム１のソースコードに関して、大局的である情報、抽象度が高い情報に基づいてアルゴリズム選択情報２０７を生成する。つまり、コンパイラ３は、呼び出し元プログラム１のソースコードに基づいて、各アルゴリズムの処理時間を算出する。このような情報としては、例えば、データ依存関係の有無、他ノードのデータを参照用にキャッシュする手法などに関する情報が挙げられる。コンパイラ３は、呼び出し元プログラム１をコンパイルする際に付加的にアルゴリズム選択情報２０７を生成し、ライブラリインターフェイス２は、呼び出し元プログラム１によるライブラリ２０５の呼び出しにおいて、アルゴリズム選択情報２０７に基づいてアルゴリズムを選択する。
【００５５】
このように、ソースコードから抽出することができる有用な情報を最大限に活用することで、呼び出し元プログラム１によるライブラリ２０５の呼び出しにおいて、高い処理効率と標準仕様への両立を実現することができる。例えば、並列化コンパイラにより分散メモリ型並列コンピュータ上で動作する実行バイナリを実現する場合、動作プラットフォームのオープン性の実現と、ソフトウェア保守作業のコスト削減とを両立させることが課題となる。このような課題は、標準仕様に準拠すること、即ち実行バイナリが標準化されたライブラリを用いることにより解決することができる。また、標準仕様に準拠するかどうかの判断は、実行バイナリが効率的に動作するかどうかに依存する。本実施の形態に係るライブラリ２及びコンパイラ３によれば、ライブラリ２０５を実際に呼び出して実行した場合の処理時間を取得することなく、呼び出し元プログラム１がライブラリ２を用いて効率的に動作することが可能となる。
【００５６】
なお、ソースコードのコンパイルに用いられるコンパイラがバックエンドコンパイラやアセンブラなどの複数のコンポーネントから構成されている場合、実施の形態２において示した行番号が付加されたアルゴリズム選択情報２０７を用いても良い。
【００５７】
また、ソースコード内に、呼び出す機能に対して実行すべきアルゴリズムを示す記述を含めることによって、呼び出し元プログラム１の作成者がアルゴリズムを指定することも可能である。図１７は、呼び出し元プログラムのソースコードにおけるアルゴリズムを指定する記述を示す。
【００５８】
図１７に示すように、まず、呼び出し元プログラム１の作成者が機能を呼び出す命令の直後に、例えばコメント形式によりアルゴリズムを指定するコードを記述する。コンパイラ３は、この記述により指定されたアルゴリズムと、この記述の直前にある命令とを対応付けて、アルゴリズム選択情報２０７として生成する。なお、この記述は、実施の形態２において示した行番号が付加されたアルゴリズム選択情報２０７に基づいて、コンパイラ３によってソースコードに自動的に埋め込まれても構わない。これによって、処理時間が短いアルゴリズムが選択されると同時に、作成者はソースコードを見るだけで呼び出し命令に対してどのアルゴリズムが選択されるかを確認することができる。
【００５９】
本発明は以下に示すようなコンピュータシステムにおいて適用可能である。図１８は、本発明が適用されるコンピュータシステムの一例を示す図である。図１８に示すコンピュータシステム９００は、ＣＰＵ９０１ａやディスクドライブ等を内蔵した本体部（処理装置）９０１、本体部９０１からの指示により画像を表示するディスプレイ９０２、コンピュータシステム９００に種々の情報を入力するキーボード９０３、ディスプレイ９０２の表示画面９０２ａ上の任意の位置を指定するマウス９０４及び外部のデータベース等にアクセスして他のコンピュータシステムに記憶されているプログラム等をダウンロードする通信装置９０５を有する。通信装置９０５は、ネットワーク通信カード、モデムなどが考えられる。
【００６０】
また、上述したような、アルゴリズム選択装置を構成するコンピュータシステムにおいて上述した各ステップを実行させるプログラムを、アルゴリズム選択プログラムとして提供することができる。このプログラムは、コンピュータシステムにより読取り可能な記録媒体に記憶させることによって、アルゴリズム選択装置を構成するコンピュータシステムに実行させることが可能となる。上述した各ステップを実行するプログラムは、ディスク９１０等の可搬型記録媒体に格納されるか、通信装置９０５により他のコンピュータシステムの記録媒体９０６からダウンロードされる。また、コンピュータシステム９００に少なくともアルゴリズム選択機能を持たせるアルゴリズム選択プログラム（アルゴリズム選択ソフトウェア）は、コンピュータシステム９００に入力されてコンパイルされる。このプログラムは、コンピュータシステム９００をアルゴリズム選択機能を有するアルゴリズム選択装置として動作させる。また、このプログラムは、例えばディスク９１０等のコンピュータ読み取り可能な記録媒体に格納されていても良い。ここで、コンピュータシステム９００により読取り可能な記録媒体としては、ＲＯＭやＲＡＭ等のコンピュータに内部実装される内部記憶装置、ディスク９１０やフレキシブルディスク、ＤＶＤディスク、光磁気ディスク、ＩＣカード等の可搬型記憶媒体や、コンピュータプログラムを保持するデータベース、或いは、他のコンピュータシステム並びにそのデータベースや、通信装置９０５のような通信手段を介して接続されるコンピュータシステムでアクセス可能な各種記録媒体を含む。
【００６１】
本発明は、その要旨または主要な特徴から逸脱することなく、他の様々な形で実施することができる。そのため、前述の実施の形態は、あらゆる点で単なる例示に過ぎず、限定的に解釈してはならない。本発明の範囲は、特許請求の範囲によって示すものであって、明細書本文には、何ら拘束されない。更に、特許請求の範囲の均等範囲に属する全ての変形、様々な改良、代替および改質は、全て本発明の範囲内のものである。
【符号の説明】
【００６２】
１  呼び出し元プログラム、２  ライブラリインターフェイス、３  コンパイラ、２０１  呼び出し受付部、２０２  実行プロファイル情報生成部、２０３  アルゴリズム選択情報生成部、２０４  アルゴリズム選択部、２０５  ライブラリ、２０６  実行プロファイル情報、２０７  アルゴリズム選択情報、９０１  処理装置、９０１ａ  ＣＰＵ、９０１ｂ  メモリ、９０１ｃ  記憶部。
【図１】
0005553070.tif 000002
【図２】
0005553070.tif 000003
【図３】
0005553070.tif 000004
【図４】
0005553070.tif 000005
【図５】
0005553070.tif 000006
【図６】
0005553070.tif 000007
【図７】
0005553070.tif 000008
【図８】
0005553070.tif 000009
【図９】
0005553070.tif 000010
【図１０】
0005553070.tif 000011
【図１１】
0005553070.tif 000012
【図１２】
0005553070.tif 000013
【図１３】
0005553070.tif 000014
【図１４】
0005553070.tif 000015
【図１５】
0005553070.tif 000016
【図１６】
0005553070.tif 000017
【図１７】
0005553070.tif 000018
【図１８】
0005553070.tif 000019