TOP > 国内特許検索 > 計算装置、プログラム、及び、記録媒体 > 明細書

明細書 :計算装置、プログラム、及び、記録媒体

発行国 日本国特許庁(JP)
公報種別 特許公報(B2)
特許番号 特許第4696282号 (P4696282)
公開番号 特開2004-234393 (P2004-234393A)
登録日 平成23年3月11日(2011.3.11)
発行日 平成23年6月8日(2011.6.8)
公開日 平成16年8月19日(2004.8.19)
発明の名称または考案の名称 計算装置、プログラム、及び、記録媒体
国際特許分類 G06F   9/44        (2006.01)
FI G06F 9/06 620K
請求項の数または発明の数 3
全頁数 25
出願番号 特願2003-022792 (P2003-022792)
出願日 平成15年1月30日(2003.1.30)
審判番号 不服 2009-009411(P2009-009411/J1)
審査請求日 平成17年12月2日(2005.12.2)
審判請求日 平成21年4月30日(2009.4.30)
特許権者または実用新案権者 【識別番号】503360115
【氏名又は名称】独立行政法人科学技術振興機構
発明者または考案者 【氏名】片桐 孝洋
個別代理人の代理人 【識別番号】110000338、【氏名又は名称】特許業務法人原謙三国際特許事務所
参考文献・文献 特開2000-276454号公報(JP,A)
調査した分野 G06F 9/06 620K
特許請求の範囲 【請求項1】
演算性能を変化させて演算結果を変化させない性能情報パラメータと演算対象行列のサイズを示す基本情報パラメータとを参照して固有値計算を行う固有値計算手段を備えた計算装置において、上記固有値計算手段が上記固有値計算を実行する前に上記性能情報パラメータの値を最適化する最適化手段を備え、
上記最適化手段は、上記基本情報パラメータの値がユーザにより指定された時点で、予めサンプリングされた複数のサンプリング値の各々を上記性能情報パラメータとし、ユーザにより指定された指定値を上記基本情報パラメータとして上記固有値計算手段に上記固有値計算を試行させ、上記固有値計算手段が上記複数のサンプリング値の各々を上記性能情報パラメータとして上記固有値計算を試行するのに要した演算時間から、上記固有値計算手段が上記指定値を上記基本情報パラメータとして上記固有値計算を実行するのに要する演算時間を最小化する上記性能情報パラメータの値を推定するとともに、推定した上記性能情報パラメータの値をパラメータ情報ファイルに保存し、
上記固有値計算手段は、上記固有値計算の実行がユーザにより指示された時点で、上記パラメータ情報ファイルに保存された上記性能情報パラメータの値であって、上記最適化手段により推定された上記性能情報パラメータの値を参照して上記固有値計算を実行する、
ことを特徴とする計算装置。
【請求項2】
コンピュータを請求項1に記載の計算装置として動作させるためのプログラムであって、上記コンピュータを上記固有値計算手段及び上記最適化手段として機能させるプログラム。
【請求項3】
請求項2に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
発明の詳細な説明
【0001】
【発明の属する技術分野】
本発明は、例えばコンピュータに備えられたライブラリのパラメータの最適化を、コンピュータに実行させるためのプログラム、記録媒体およびコンピュータに関するものである。
【0002】
【従来の技術】
コンピュータのような計算装置において数値計算ライブラリなどのソフトウェアを用いる際には、ライブラリ中の所望のサブルーチンに対して、ユーザが所望の問題に応じてパラメータを指定する。その後、ユーザの指定したパラメータを用いてサブルーチンが実行され、結果が出力される。
【0003】
例えば、数値計算ライブラリのサブルーチンとして、行列の固有値を計算する固有値計算サブルーチンを考える。このとき、サブルーチンに対してユーザが指定するパラメータのうちには、所望の行列の実体や、その行列のサイズなどがある。これらのパラメータは、その問題を実際に解く際に必要とされるパラメータである。
【0004】
一方、パラメータのうちには、どのように設定しても問題の答えとしては同じものが得られるが、適切に設定することによって例えば数値計算に要する時間を短縮できたりするような、いわゆる最適化のためのパラメータがある。
【0005】
例えば、計算装置が複数のプロセッサを備えた並列計算装置であるとき、行列計算におけるループアンローリング段数(アンローリング段数)は、最適化のためのパラメータである。
【0006】
ここで、アンローリング段数とは、ループの計算において通常1に設定している、ループごとの増分を意味する。例えば、ベクトルA(i)とベクトルB(i)の和C(i)を計算する際に、アンローリング段数を2に設定した場合には、i成分の和C(i)=A(i)+B(i)とi+1成分の和C(i+1)=A(i+1)+B(i+1)とがループ内においてそれぞれ計算され、その後iを2だけ増加させる。
【0007】
問題の性質や計算装置の性能(並列プロセッサの数など)に応じてアンローリング段数を調整することによって、計算装置における計算時間を最も短く(最適化)できる。
【0008】
このような最適化のためのパラメータを調節して計算時間(性能)などのコストを最適なものとする調節機能を備えた計算装置が知られている。このような調整機能は通常ソフトウェア(自動チューニングソフトウェア)によって実現される。
【0009】
従来の自動チューニングソフトウェアの構成方式として、ソフトウェアインストール時にパラメータ最適化を行うものがある。例えば、ソフトウェアインストール時にアンローリング段数を最適化する場合には、以下のようにする。
【0010】
この場合には、解くべき問題の問題サイズなどが決まっていないため、適当にサンプリングした問題サイズごとに最適なアンローリング段数を求める。その後に、サンプリングした問題サイズごとの最適なアンローリング段数を、例えば問題サイズについて適当な補間関数によって補間する。なお、ある問題サイズにおいて最適なアンローリング段数を求める際に、例えばアンローリング段数についてもサンプリングを行い、補間関数を用いて最もコストの小さいアンローリング段数を選択してもよい。
【0011】
このように、例えば適当な補間関数を用いたモデル化によって、後に選択を行う際に、問題サイズに応じた最適なアンローリング段数の推定値を得ることができる。
【0012】
または、従来の自動チューニングソフトウェアの構成方式の他の一例として、ライブラリ実行時にパラメータ最適化を行うものがある。例えば、コストを変化させる大きな要因として、行列の実体のような実行時でないと確定しない要素が含まれる問題について、このようなパラメータ最適化を行う。
【0013】
この場合には、ライブラリコールが行われた時点で、所望の問題サイズ、行列の実体などに対して所望のパラメータを幾つか試行して、最適なものを選択する。
【0014】
なお、このようなライブラリ実行時に最適化を行う場合には、このチューニングを行う時間についてもコストとしての計算時間に含まれることに注意が必要である。すなわち、チューニングを行う時間とその後の計算時間とが、チューニングせずにパラメータを何らかの値に固定しておく場合の計算時間よりも少なくなる必要がある。
【0015】
これらの従来の自動チューニングソフトウェアについては、以下の非特許文献1、非特許文献2を参照されたい。
【0016】
なお、例えば日本国の公開特許公報「特開2000-276454号公報(公開日:2000年10月6日)」には、並列計算機におけるソフトウェアの実行性能を大きく左右し、かつ、ユーザインタフェースには現れないパラメータを調節してインストールを行う機能を有するソフトウェアの構成方法が記載されている。この場合には、ソフトウェアインストール時にパラメータ最適化が行われる。
【0017】
【特許文献1】
特開2000-276454号公報
【0018】
【非特許文献1】
片桐孝洋,他4名、「自動チューニング機構が並列数値計算ライブラリに及ぼす効果」、情報処理学会論文誌:ハイパフォーマンスコンピューティング、社団法人情報処理学会、2001年11月、第42巻、第12号(HPS4)、p.60-76
【0019】
【非特許文献2】
直野健、山本有作、「単一メモリ型インタフェースを有する自動チューニング並列ライブラリの構成方法」、情報処理学会研究報告、社団法人情報処理学会、2001年7月25日、第77巻、p.25-30
【0020】
【発明が解決しようとする課題】
しかしながら、従来の自動チューニングソフトウェアの構成方式では、ソフトウェアインストール時にパラメータ最適化を行うもの、またはライブラリ実行時にパラメータ最適化を行うもの、のみが存在していたため、パラメータ調整が不十分となる場合があるという問題を生ずる。
【0021】
すなわち、従来の、ソフトウェアインストール時にパラメータ最適化を行う構成においては、例えば補間関数を用いたモデルに基づき、最適化パラメータを推定によって決定する。このため、十分な精度が得られない虞れがある。
【0022】
また、従来の、ライブラリ実行時にパラメータ最適化を行う構成においては、ライブラリ実行時のパラメータチューニングに要する時間もコストとなるため、チューニングに十分な時間を費やすことができずに、精度が不十分なものとなる虞れがある。
【0023】
また、従来は、汎用的な処理に適用できる自動チューニングソフトウェアがなかったという問題がある。例えば、非特許文献1に記載のATLASは、数値計算ライブラリの中でも、BLAS(Basic Linear Algebra Subprograms)と呼ばれるライブラリのみ最適化できる。これは、汎用的な処理に適用できるものではない。
【0024】
すなわち、問題によっては、インストール時にしか最適化できない、または実行時にしか最適化できないものがある。このため、従来のように、ソフトウェアインストール時にパラメータ最適化を行うもの、またはライブラリ実行時にパラメータ最適化を行うもの、のいずれか一方しかない場合には、全ての問題について、それぞれ最適化することはできない。すなわち、汎用的な処理に適用できないという問題がある。
【0025】
本発明は、上記の問題点に鑑みてなされたものであり、その目的は、精密なパラメータ調整を行うことのできるプログラム、記録媒体およびコンピュータを提供することにある。また、本発明は、汎用的な処理に適用できるプログラム、記録媒体およびコンピュータを提供することも目的とする。
【0026】
【課題を解決するための手段】
本発明に係るプログラムは、上記課題を解決するために、コンピュータに備えられたライブラリのパラメータに含まれる、実行性能のみを変化させて上記ライブラリの出力を変化させない性能情報パラメータの最適化を、上記コンピュータに実行させるためのプログラムにおいて、上記ライブラリの上記パラメータに含まれる、実行性能と上記ライブラリの出力とを共に変化させる基本情報パラメータが定まった時点を検出する手順と、上記基本情報パラメータを用いて上記性能情報パラメータの最適化を行う手順とを含んでいることを特徴としている。
【0027】
このプログラムは、コンピュータにおける例えば数値計算ライブラリのようなライブラリの実行コストを最適化するために用いられるプログラムである。実行コストとは、例えば実行に要する計算資源、計算時間である。このプログラムは、ライブラリのパラメータのうち、実行性能のみを変化させてライブラリの出力を変化させない性能情報パラメータの値を、ライブラリの実行コストが最適なものとなるように調整する。
【0028】
上記プログラムが実行されたコンピュータは、ライブラリの実際の実行の前に、例えばユーザからの基本情報パラメータの入力を検出することによって、基本情報パラメータが定まった時点を検出する。
【0029】
ここで、基本情報パラメータとは、実行性能とライブラリの出力とを共に変化させるパラメータである。
【0030】
例えば数値計算ライブラリのうちの、行列の固有値計算ライブラリにおいては、行列のサイズ、行列の実体などが、基本情報パラメータに相当する。また、例えば並列計算機を用いる場合のループアンローリング段数は、性能情報パラメータに相当する。
【0031】
すなわち、ライブラリの内容を数式として表したときに、数式中の変数として表現されるパラメータが、基本情報パラメータに相当する。また、数式中に現れず、または数式において単なる媒介変数として現れるパラメータが、性能情報パラメータに相当する。このため、例えば性能情報パラメータを変化させたとしても、数式によって得られる結果(ライブラリの出力)は変わらない。
【0032】
その後、コンピュータは、ライブラリの実際の実行の前に、基本情報パラメータを用いて性能情報パラメータの最適化を行う。より詳細には、例えば基本情報パラメータを用い、性能情報パラメータのそれぞれの値について試行計算を行って、実行コストを予め実測する。これによって、確実に最適な性能情報パラメータを得ることができる。
【0033】
ここで、従来の最適化のためのプログラムの一例は、例えばライブラリのインストール時に性能情報パラメータの最適化を行う。この場合、例えば行列のサイズのような基本情報パラメータが定まっていないため、所定の誤差を含んだ、なんらかの推定モデルによって、最適な性能情報パラメータを推測する。
【0034】
また、従来の最適化のためのプログラムの他の一例は、例えばライブラリの実行時に性能情報パラメータの最適化を行う。この場合には、性能情報パラメータを最適化するための計算時間が、ライブラリの実行コストに計上されてしまう。このため、最適化のために十分な時間を取れずに、最適なパラメータが得られない虞れがある。
【0035】
そこで、本発明に係る上述のプログラムのように、実際の計算の前に、実行コストを予め実測して、最適な性能情報パラメータを得るようにする。これによって、より精密かつ確実なパラメータ調整が可能となる。また、プログラムの実行前において、計算所要時間を予測できる。
【0036】
なお、本発明に係るプログラムを、ユーザが知りうる情報が定まった時点でのパラメタ最適化機能を有するソフトウェアである、と表現することもできる。
【0037】
本発明に係るプログラムは、上記課題を解決するために、コンピュータに備えられたライブラリのパラメータに含まれる、実行性能のみを変化させて上記ライブラリの出力を変化させない性能情報パラメータの最適化を、上記コンピュータに実行させるためのプログラムにおいて、上記ライブラリのインストール時に上記性能情報パラメータの最適化を行う初期設定手順と、上記ライブラリの上記パラメータに含まれる、実行性能と上記ライブラリの出力とを共に変化させる基本情報パラメータが定まった時点を検出する検出手順と、上記初期設定手順において設定された上記性能情報パラメータを参照して、上記基本情報パラメータを用いて上記性能情報パラメータの最適化を行う前調整手順とを含んでいることを特徴としている。
【0038】
このプログラムは、コンピュータにおける例えば数値計算ライブラリのようなライブラリの実行コストを最適化するために用いられるプログラムである。実行コストとは、例えば実行に要する計算資源、計算時間である。このプログラムは、ライブラリのパラメータのうち、実行性能のみを変化させてライブラリの出力を変化させない性能情報パラメータの値を、ライブラリの実行コストが最適なものとなるように調整する。
【0039】
上記プログラムが実行されたコンピュータは、ライブラリのインストール時に、性能情報パラメータの最適化を行う。この場合、例えば行列のサイズのような基本情報パラメータが定まっていないため、所定の誤差を含んだ、なんらかの推定モデルによって、最適な性能情報パラメータを推測する。
【0040】
また、コンピュータは、ライブラリの実際の実行の前に、例えばユーザからの基本情報パラメータの入力を検出することによって、基本情報パラメータが定まった時点を検出する。
【0041】
ここで、基本情報パラメータとは、実行性能とライブラリの出力とを共に変化させるパラメータである。
【0042】
例えば数値計算ライブラリのうちの、行列の固有値計算ライブラリにおいては、行列のサイズ、行列の実体などが、基本情報パラメータに相当する。また、例えば並列計算機を用いる場合のループアンローリング段数は、性能情報パラメータに相当する。
【0043】
その後、コンピュータは、ライブラリの実際の実行の前に、インストール時に設定された性能情報パラメータを参照して、基本情報パラメータを用いて性能情報パラメータの最適化を行う。より詳細には、例えば基本情報パラメータを用い、性能情報パラメータのそれぞれの値について試行計算を行って、実行コストを予め実測する。特に、インストール時に設定された性能情報パラメータの最適値周辺の値のみについて、試行計算を行うようにしてもよい。これによって、試行計算の回数を削減して、最適な性能情報パラメータを得ることができる。このように、より精密かつ確実なパラメータ調整が可能となる。
【0044】
なお、本発明に係るプログラムを、ソフトウェアのインストール時、およびユーザが知りうる情報が定まった時点でのソフトウェアの実行前、のパラメタ最適化機能を有するソフトウェアである、と表現することもできる。
【0045】
本発明に係るプログラムは、上記課題を解決するために、コンピュータに備えられたライブラリのパラメータに含まれる、実行性能のみを変化させて上記ライブラリの出力を変化させない性能情報パラメータの最適化を、上記コンピュータに実行させるためのプログラムにおいて、上記ライブラリの上記パラメータに含まれる、実行性能と上記ライブラリの出力とを共に変化させる基本情報パラメータが定まった時点を検出する検出手順と、上記基本情報パラメータを用いて上記性能情報パラメータの最適化を行う前調整手順と、上記ライブラリの実行の際に、既に設定された上記性能情報パラメータを参照して、この性能情報パラメータによる計算が所望の精度を満たしていないときには、上記基本情報パラメータを用いて上記性能情報パラメータの最適化を再度行う再調整手順とを含んでいることを特徴としている。
【0046】
このプログラムは、コンピュータにおける例えば数値計算ライブラリのようなライブラリの実行コストを最適化するために用いられるプログラムである。実行コストとは、例えば実行に要する計算資源、計算時間である。このプログラムは、ライブラリのパラメータのうち、実行性能のみを変化させてライブラリの出力を変化させない性能情報パラメータの値を、ライブラリの実行コストが最適なものとなるように調整する。
【0047】
上記プログラムが実行されたコンピュータは、ライブラリの実際の実行の前に、例えばユーザからの基本情報パラメータの入力を検出することによって、基本情報パラメータが定まった時点を検出する。
【0048】
ここで、基本情報パラメータとは、実行性能とライブラリの出力とを共に変化させるパラメータである。
【0049】
例えば数値計算ライブラリのうちの、行列の固有値計算ライブラリにおいては、行列のサイズ、行列の実体などが、基本情報パラメータに相当する。また、例えば並列計算機を用いる場合のループアンローリング段数は、性能情報パラメータに相当する。
【0050】
その後、コンピュータは、ライブラリの実際の実行の前に、基本情報パラメータを用いて性能情報パラメータの最適化を行う。より詳細には、例えば基本情報パラメータを用い、性能情報パラメータのそれぞれの値について試行計算を行って、実行コストを予め実測する。これによって、確実に最適な性能情報パラメータを得ることができる。
【0051】
また、コンピュータは、ライブラリの実際の実行の際に、既に設定された性能情報パラメータを参照して、この性能情報パラメータによる計算が所望の精度を満たしているか否かを試行により判別する。そして、所望の精度を満たしていないときには、基本情報パラメータを用いて性能情報パラメータの最適化を再度実行する。そして、所望の精度を得ることのできる性能情報パラメータを用いて、ライブラリを実行する。
【0052】
このように、実際の計算の前に、実行コストを予め実測して、最適な性能情報パラメータを得るようにする。基本情報パラメータの変更がないときには、予め設定した性能情報パラメータを用いてライブラリを実行できる。また、基本情報パラメータの変更があるときでも、所望の精度が得られる場合には、パラメータの最適化のための計算をせずに、ライブラリを実行できる。したがって、実行時におけるパラメータの最適化に要する時間を不要として、ライブラリの実行コスト(計算時間)を増大させない。また、ライブラリの実行の前に精度を確認するので、より精密かつ確実なパラメータ調整が可能となる。
【0053】
なお、本発明に係るプログラムを、ユーザが知りうる情報が定まった時点でのソフトウェアの実行前、およびソフトウェア実行時、のパラメタ最適化機能を有するソフトウェアである、と表現することもできる。
【0054】
本発明に係るプログラムは、上記課題を解決するために、コンピュータに備えられたライブラリのパラメータに含まれる、実行性能のみを変化させて上記ライブラリの出力を変化させない性能情報パラメータの最適化を、上記コンピュータに実行させるためのプログラムにおいて、上記ライブラリのインストール時に上記性能情報パラメータの最適化を行う初期設定手順と、上記ライブラリの上記パラメータに含まれる、実行性能と上記ライブラリの出力とを共に変化させる基本情報パラメータが定まった時点を検出する検出手順と、上記ライブラリの実行の際に、既に設定された上記性能情報パラメータを参照して、この性能情報パラメータによる計算が所望の精度を満たしていないときには、上記基本情報パラメータを用いて上記性能情報パラメータの最適化を再度行う再調整手順とを含んでいることを特徴としている。
【0055】
このプログラムは、コンピュータにおける例えば数値計算ライブラリのようなライブラリの実行コストを最適化するために用いられるプログラムである。実行コストとは、例えば実行に要する計算資源、計算時間である。このプログラムは、ライブラリのパラメータのうち、実行性能のみを変化させてライブラリの出力を変化させない性能情報パラメータの値を、ライブラリの実行コストが最適なものとなるように調整する。
【0056】
上記プログラムが実行されたコンピュータは、ライブラリのインストール時に、性能情報パラメータの最適化を行う。この場合、例えば行列のサイズのような基本情報パラメータが定まっていないため、所定の誤差を含んだ、なんらかの推定モデルによって、最適な性能情報パラメータを推測する。
【0057】
また、コンピュータは、ライブラリの実際の実行の前に、例えばユーザからの基本情報パラメータの入力を検出することによって、基本情報パラメータが定まった時点を検出する。
【0058】
ここで、基本情報パラメータとは、実行性能とライブラリの出力とを共に変化させるパラメータである。
【0059】
例えば数値計算ライブラリのうちの、行列の固有値計算ライブラリにおいては、行列のサイズ、行列の実体などが、基本情報パラメータに相当する。また、例えば並列計算機を用いる場合のループアンローリング段数は、性能情報パラメータに相当する。
【0060】
また、コンピュータは、ライブラリの実際の実行の際に、既に設定された性能情報パラメータを参照して、この性能情報パラメータによる計算が所望の精度を満たしているか否かを試行により判別する。そして、所望の精度を満たしていないときには、基本情報パラメータを用いて性能情報パラメータの最適化を再度実行する。そして、所望の精度が得られる性能情報パラメータを用いて、ライブラリを実行する。
【0061】
このように、実際の計算の前に、性能情報パラメータを設定しておく。実際の計算の際に、その性能情報パラメータによって所望の精度が得られる場合には、パラメータの最適化のための計算をせずに、ライブラリを実行できる。したがって、実行時におけるパラメータの最適化に要する時間を不要として、ライブラリの実行コスト(計算時間)を増大させない。また、ライブラリの実行の前に精度を確認するので、より精密かつ確実なパラメータ調整が可能となる。
【0062】
なお、本発明に係るプログラムを、ソフトウェアのインストール時、およびソフトウェア実行時、のパラメタ最適化機能を有するソフトウェアである、と表現することもできる。
【0063】
本発明に係るプログラムは、上記課題を解決するために、コンピュータに備えられたライブラリのパラメータに含まれる、実行性能のみを変化させて上記ライブラリの出力を変化させない性能情報パラメータの最適化を、上記コンピュータに実行させるためのプログラムにおいて、上記ライブラリのインストール時に上記性能情報パラメータの最適化を行う初期設定手順と、上記ライブラリの上記パラメータに含まれる、実行性能と上記ライブラリの出力とを共に変化させる基本情報パラメータが定まった時点を検出する検出手順と、上記基本情報パラメータを用いて上記性能情報パラメータの最適化を行う前調整手順と、上記ライブラリの実行の際に、既に設定された上記性能情報パラメータを参照して、この性能情報パラメータによる計算が所望の精度を満たしていないときには、上記基本情報パラメータを用いて上記性能情報パラメータの最適化を再度行う再調整手順とを含んでいることを特徴としている。
【0064】
このプログラムは、コンピュータにおける例えば数値計算ライブラリのようなライブラリの実行コストを最適化するために用いられるプログラムである。実行コストとは、例えば実行に要する計算資源、計算時間である。このプログラムは、ライブラリのパラメータのうち、実行性能のみを変化させてライブラリの出力を変化させない性能情報パラメータの値を、ライブラリの実行コストが最適なものとなるように調整する。
【0065】
上記プログラムが実行されたコンピュータは、ライブラリのインストール時に、性能情報パラメータの最適化を行う。この場合、例えば行列のサイズのような基本情報パラメータが定まっていないため、所定の誤差を含んだ、なんらかの推定モデルによって、最適な性能情報パラメータを推測する。
【0066】
また、コンピュータは、ライブラリの実際の実行の前に、例えばユーザからの基本情報パラメータの入力を検出することによって、基本情報パラメータが定まった時点を検出する。
【0067】
ここで、基本情報パラメータとは、実行性能とライブラリの出力とを共に変化させるパラメータである。
【0068】
例えば数値計算ライブラリのうちの、行列の固有値計算ライブラリにおいては、行列のサイズ、行列の実体などが、基本情報パラメータに相当する。また、例えば並列計算機を用いる場合のループアンローリング段数は、性能情報パラメータに相当する。
【0069】
その後、コンピュータは、ライブラリの実際の実行の前に、インストール時に設定された性能情報パラメータを参照して、基本情報パラメータを用いて性能情報パラメータの最適化を行う。より詳細には、例えば基本情報パラメータを用い、性能情報パラメータのそれぞれの値について試行計算を行って、実行コストを予め実測する。特に、インストール時に設定された性能情報パラメータの最適値周辺の値のみについて、試行計算を行うようにしてもよい。これによって、試行計算の回数を削減して、最適な性能情報パラメータを得ることができる。このように、より精密かつ確実なパラメータ調整が可能となる。
【0070】
また、コンピュータは、ライブラリの実際の実行の際に、既に設定された性能情報パラメータを参照して、この性能情報パラメータによる計算が所望の精度を満たしているか否かを試行により判別する。そして、所望の精度を満たしていないときには、基本情報パラメータを用いて性能情報パラメータの最適化を再度実行する。そして、所望の精度が得られる性能情報パラメータを用いて、ライブラリを実行する。
【0071】
このように、実際の計算の前に、実行コストを予め実測して、最適な性能情報パラメータを得るようにする。基本情報パラメータの変更がないときには、予め設定した性能情報パラメータを用いてライブラリを実行できる。また、基本情報パラメータの変更があるときでも、所望の精度が得られる場合には、パラメータの最適化のための計算をせずに、ライブラリを実行できる。したがって、実行時におけるパラメータの最適化に要する時間を不要として、ライブラリの実行コスト(計算時間)を増大させない。また、ライブラリの実行の前に精度を確認するので、より精密かつ確実なパラメータ調整が可能となる。
【0072】
なお、本発明に係るプログラムを、ソフトウェアのインストール時、ユーザが知りうる情報が定まった時点でのソフトウェアの実行前、およびソフトウェア実行時、の3階層のパラメタ最適化機能を有するソフトウェアである、と表現することもできる。
【0073】
本発明に係るプログラムは、上記課題を解決するために、コンピュータに備えられたライブラリのパラメータに含まれる、実行性能のみを変化させて上記ライブラリの出力を変化させない性能情報パラメータについて最適化する機能を上記コンピュータに実現させるためのプログラムにおいて、上記性能情報パラメータの各要素を、上記ライブラリのインストール時に最適化を行うパラメータの第1の集合、上記ライブラリの実行の前に最適化を行うパラメータの第2の集合、または上記ライブラリの実行の際に最適化を行うパラメータの第3の集合のうちの少なくとも一つに含まれるように設定して、第1の集合の要素を最適化する機能と、第2の集合の要素を最適化する機能と、第3の集合の要素を最適化する機能とを上記コンピュータに実現させることを特徴としている。
【0074】
このプログラムは、コンピュータにおける例えば数値計算ライブラリのようなライブラリの実行コストを最適化するために用いられるプログラムである。実行コストとは、例えば実行に要する計算資源、計算時間である。このプログラムは、ライブラリのパラメータのうち、実行性能のみを変化させてライブラリの出力を変化させない性能情報パラメータの値を、ライブラリの実行コストが最適なものとなるように調整する。例えば数値計算ライブラリのうちの、行列の固有値計算ライブラリにおいては、並列計算機を用いる場合のループアンローリング段数が、性能情報パラメータに相当する。
【0075】
上記プログラムが実行されたコンピュータにおいては、性能情報パラメータが、ライブラリのインストール時に最適化を行うパラメータの第1の集合、ライブラリの実行の前に最適化を行うパラメータの第2の集合、またはライブラリの実行の際に最適化を行うパラメータの第3の集合のうちの少なくとも一つに含まれるように設定される。
【0076】
ここで、性能情報パラメータが何らかの意味で最適化可能であるならば、インストール時、ライブラリ実行前、ライブラリ実行の際のいずれかにおいて最適化することは、常に可能である。また、性能情報パラメータを、上述の第1~第3のうちから選択された少なくとも一つ以上の集合に含まれるように設定する具体的な構成には、ある程度任意性があるが、その構成はどのように選択してもよい。
【0077】
そして、コンピュータは、第1~第3の集合について、それぞれ最適化を行う。したがって、性能情報パラメータの全てが最適化可能となり、汎用な処理に適用できる。すなわち、複数のルーチンを含んだライブラリ全体に対する最適化が可能となる。
【0078】
一方、従来の最適化法は、ソフトウェアインストール時にパラメータ最適化を行うもの、またはライブラリ実行時にパラメータ最適化を行うもの、のいずれか一方しかなかった。このため、問題によっては、インストール時にしか最適化できない、または実行時にしか最適化できないものがあるので、全ての問題に対して汎用することができなかった。
【0079】
なお、本発明に係るプログラムを、最適化すべきパラメタに関して、インストール時、実行前、実行時の3種のパラメタに分離し、それぞれのパラメタ最適化を行うソフトウェアである、と表現することもできる。
【0080】
本発明に係る記録媒体は、上記課題を解決するための、上述のいずれかのプログラムを記録したコンピュータ読み取り可能な記録媒体である。
【0081】
この記録媒体がコンピュータにて読取られると、上述のいずれかのプログラムがコンピュータにて実行される。したがって、上述のプログラムと同様の効果を得ることができる。
【0082】
なお、記録媒体の構成としては、ハードディスク、CD ROM(Read Only Memory)などに限るものではなく、どのような記録媒体であってもよい。
【0083】
また、本発明に係るコンピュータは、上記課題を解決するために、上述の記録媒体を備えている構成である。
【0084】
このコンピュータにて上述の記録媒体を読み取りすると、上述のいずれかのプログラムがコンピュータにて実行される。したがって、上述のプログラムと同様の効果を得ることができる。
【0085】
なお、このコンピュータは、コンピュータ内に複数のプロセッサを有する並列計算装置であってもよいし、または、複数のコンピュータがネットワークに接続されて複数のプロセッサを有する計算装置として機能する分散計算装置であってもよい。
【0086】
また、上述のコンピュータは、コンピュータに備えられたライブラリのパラメータに含まれる、実行性能のみを変化させて上記ライブラリの出力を変化させない性能情報パラメータの調整を行う調整方法において、上記ライブラリの上記パラメータに含まれる、実行性能と上記ライブラリの出力とを共に変化させる基本情報パラメータが定まった時点を検出する手順と、上記基本情報パラメータを用いて上記性能情報パラメータの最適化を行う手順とを含んでいる調整方法を実行するものである、と表現することもできる。
【0087】
また、上述のコンピュータは、コンピュータに備えられたライブラリのパラメータに含まれる、実行性能のみを変化させて上記ライブラリの出力を変化させない性能情報パラメータの調整を行う調整方法において、上記ライブラリの実行の際に、既に設定された上記性能情報パラメータを参照して、この性能情報パラメータによる計算が所望の精度を満たしていないときには、上記基本情報パラメータを用いて上記性能情報パラメータの最適化を再度行う再調整手順を含んでいる調整方法を実行するものである、と表現することもできる。
【0088】
また、上述のコンピュータは、上記調整方法を実行することによって、コンピュータに備えられたライブラリのパラメータに含まれる、実行性能のみを変化させて上記ライブラリの出力を変化させない性能情報パラメータの最適化を行う調整装置として機能する。また、上述のコンピュータは、上述のプログラムとライブラリとを備えた計算装置として機能する。
【0089】
なお、上述の構成において、性能情報パラメータの最適化とは、性能情報パラメータの全てを最適化するものではなく、最適化が可能なもののうち、適当なものについて最適化を行うことを意味する。
【0090】
【発明の実施の形態】
本発明の一実施の形態について図1ないし図3に基づいて説明すると以下の通りである。
【0091】
計算装置(コンピュータ)1は、図2に示すように、プロセッサ2、ユーザライブラリ(ライブラリ)3、パラメータ調整層4、およびパラメータ情報ファイル5を備えている。また、計算装置1は、図示しない記録媒体を備えている。計算装置1は、外部から入力されるパラメータを用いてライブラリ3中のサブルーチンを呼び出して、計算を行う。計算結果は図示しない表示装置に出力される。
【0092】
プロセッサ2は、計算を行うため計算処理部である。プロセッサ2は、図示しないnprocs個のプロセッサを内部に備えている。計算装置1は、プロセッサ2の複数のプロセッサを用いて、並列計算装置として機能する。
【0093】
ライブラリ3は、数値計算ライブラリである。ライブラリ3は少なくとも一つ以上のサブルーチンを含んでいる。本実施形態のライブラリ3は、内部に複数のサブルーチン3a~3kを備えている。
【0094】
このライブラリ3やサブルーチン3a~3kには、なんらかの方法(専用記述言語など)を用いて、パラメータを記述してアクセスする。このパラメータのうちの一部は、外部からユーザによってライブラリ3へ直接入力される。また、パラメータの他の一部は、ライブラリ3内で使われる。また、パラメータのさらに他の一部は、パラメータ調整層4を介してライブラリ3に入力される。
【0095】
このライブラリ3は、ユーザによって開発された数値計算ライブラリであるが、これに限るものではなく、例えばライブラリ開発者によって開発されたシステムライブラリであってもよい。このような、MPI(Message Passing Interface)などの計算機環境やOS(Operating System)などであらかじめ用意されているライブラリ等についても、ソフトウェアインタフェースさえ周知であれば、ユーザやライブラリ開発者がパラメータ記述を行うことによって、パラメータ調整層4にパラメータ情報を引き渡すことができる。
【0096】
なお、ライブラリの備えるサブルーチンの内容、個数などについては、特に限定されない。また、計算装置1には、ライブラリ以外のプログラムが備えられていてもよく、そのプログラムによって他の機能が実現されてもよい。
【0097】
パラメータ調整層4は、ライブラリ3の用いるパラメータを調整する調整装置として機能する。パラメータ調整層4は、ライブラリ3に入力するパラメータの一部を調整した上で、ライブラリ3に入力する。パラメータ調整層4は、インストール時最適化層(Installation Optimization Layer:IOL)4a、実行前最適化層(Before Execution-invocation Optimization Layer:BEOL)4bおよび実行時最適化層(Run-time Optimization Layer:ROL)4cを含んでいる。これらの各層の機能については後述する。
【0098】
パラメータ情報ファイル5は、パラメータ調整層4において調整されたパラメータを保存するためのファイルである。
【0099】
本実施形態の計算装置1において、ライブラリ3は、図示しない記録媒体に記録されたプログラムが読み取られ、実行されることによって実現される機能である。また、パラメータ調整層4も、図示しない記録媒体に記録されたプログラムが読み取られ、実行されることによって実現される機能である。
【0100】
上記構成の計算装置1について、以下でより詳細に説明する。
【0101】
計算装置1を用いてユーザがライブラリ3を実行する際には、所望のサブルーチン3aに対して適当なパラメータを設定した上で実行指示をする。
【0102】
ここで、サブルーチン3aに対して設定されるパラメータには、計算装置1の実行性能のみを変化させて、ライブラリ3のサブルーチン3aの出力を変化させないパラメータが含まれる。以下では、このようなパラメータを、性能情報パラメータ(Performance Parameters :PP)と呼ぶ。
【0103】
また、サブルーチン3aに対して設定されるパラメータのうち、計算装置1の実行性能とライブラリ3のサブルーチン3aの出力とを共に変化させるようなパラメータを、以下では基本情報(Basic Parameters :BP)パラメータと呼ぶ。
【0104】
例えば、数値計算ライブラリに含まれるサブルーチン3aが、行列の固有値を計算する固有値計算サブルーチンであるとする。このとき、所望の行列の実体や、その行列のサイズなどは、基本情報パラメータBPに相当する。また、計算装置1の行列計算におけるループアンローリング段数は、性能情報パラメータPPに相当する。
【0105】
計算装置1においては、与えられた基本情報パラメータBPを用いて、性能パラメータPPを最適化することによって、所望の結果を最小の時間で得ることができる。性能情報パラメータPP、基本情報パラメータBPは、パラメータ調整層4を介してライブラリ3に入力される。性能情報パラメータPPおよび基本情報パラメータBP以外のパラメータは、計算装置1の外部からライブラリ3に直接入力されるか、またはライブラリ3の内部で用いられる。
【0106】
本実施形態のパラメータ調整層4は、図1に示すように、調整可能なパラメータである性能情報パラメータPPを最適化するために、インストール時最適化層4a、実行前最適化層4b、実行時最適化層4cの各層を備えている。各層4a~4cはパラメータを自身で保持することはなく、パラメータ情報ファイル5に保存する。
【0107】
インストール時最適化層(IOL)4aは、ライブラリ3のインストール時に最適化を行う。
【0108】
インストール時最適化層4aは、例えば図3(a)に示すように、ライブラリ3のインストール時に(S1)、性能情報パラメータPPのうちの一部であるインストール時最適化パラメータ(IOP)を最適化し(S2)、得られたパラメータ(IOP)をパラメータ情報ファイル5に出力する。
【0109】
なお、ライブラリ3のインストール時には、通常は、基本情報パラメータBPが定まっていることはない。このため、インストール時最適化層4aは、例えば基本情報パラメータBPの値を適当にサンプリングして、そのサンプリングした抽出点ごとに、適当に定義したコスト定義関数を最小化するパラメータを決定する。そして、適当なモデル式によって、サンプリングした抽出点と抽出点との間のデータについて補間する。
【0110】
実行前最適化層(BEOL)4bは、ユーザが指定する特定パラメータ(例えば問題サイズなど)の指定後に最適化を行う。
【0111】
実行前最適化層4bは、基本情報パラメータBPの入力に応じて、これを用いて、性能情報パラメータPPのうちの一部である実行前最適化パラメータBEOPを最適化する。例えば図3(b)に示すように、ユーザ指定パラメータとしての基本情報パラメータBPの定義(入力)に応じて(S4)、パラメータ情報ファイル5のパラメータ(IOP)を参照して(S5)、最適化を行い(S6)、得られた最適化パラメータ(BEOP)をパラメータ情報ファイル5に出力する。
【0112】
なお、実行前最適化層4bは、ユーザによって指定された基本情報パラメータBPを用いて、最適なパラメータを得るために、実測にて試行をする。
【0113】
実行時最適化層(ROL)4cは、インストール時最適化層4aまたは実行前最適化層4bの少なくとも一方によるパラメータ最適化が終了した後で、かつ対象のライブラリ(やルーチン)の実行時に、最適化を行う。
【0114】
実行時最適化層4cは、例えば図3(c)に示すように、ライブラリ3(ライブラリ3のサブルーチン3a)の実行指示を検出すると(S8)、既に設定された性能情報パラメータPPを参照して(S9)、この性能情報パラメータPPによる計算が所望の精度を満たしていないときには、最適化を再度行う(S10)。S10においては、計算が所望の精度を満たすような、最適なパラメータPPが得られるまで計算を繰り返す。
【0115】
このように、実行時最適化層4cは、既に設定された性能情報パラメータPPを参照して、例えば十分な精度が得られるような所定の場合には、最適化のための計算を行わない。
【0116】
以上のように、本実施形態のパラメータ調整層4においては、インストール時最適化層4aにて最適化したパラメータ情報IOPは、パラメータ情報ファイル5に保存され、実行前最適化層4bと実行時最適化層4cとで参照可能となっている。また、実行前最適化層4bにて最適化したパラメータ情報BEOPは、パラメータ情報ファイル5に保存され、実行時最適化層4cで参照可能となっている。
【0117】
ここで、性能情報パラメータPPの各要素は、パラメータ(IOP)、パラメータ(BEOP)、パラメータ(ROP)の各集合のうちの少なくとも一つに含まれている。すなわち、性能情報パラメータPPの各要素は、パラメータ調整層4の各層4a~4cのために、重複を許して、3つの部分集合(IOP、BEOP、ROP)に分解される。これを式で表現すると、以下のようになる。
PPパラメータ=IOP ∪ BEOP ∪ ROP …(式1)
したがって、本実施形態の計算装置1は、パラメータ調整層4を用いて、性能情報パラメータPPに含まれる全ての要素を、上述したタイミングのいずれかにて最適化できる。
【0118】
特に、本実施形態の計算装置1は、問題に応じた例えば行列サイズ(n)のような基本情報パラメータBPが定まると、実際の計算の実行前の時点で最適化を行う実行前最適化層4bを備えている。これによって、従来の計算装置よりも正確な最適化が可能となる。
【0119】
〔実施例1〕
以下では、本実施形態の計算装置1について、数値計算ライブラリの具体的な一例を用いて説明する。また、この実施例1では、サブルーチン3aのインストール時最適化層4aによる最適化について説明する。
【0120】
ここでは一例として、ユーザライブラリ3が固有値計算ライブラリであり、サブルーチン3aがサブルーチンPEigVecCalである場合について説明する。
【0121】
固有値計算ライブラリのサブルーチンPEigVecCalは、実数対称行列において固有値、固有ベクトルを求める際にしばしば用いられる、Householder二分・逆反復法によるサブルーチンを意味する。なお、この実施例では実行時間に関し最適化するので、最適化すべきコスト定義関数は実行時間である。
【0122】
サブルーチンPEigVecCalは、以下のような構成である。
call PEigVecCal(A, x, lambda, n, nproc, myid, iDistInd, imv, iud, ihit, icomm, kbi, kort, MAXITER, deps, …)
サブルーチンPEigVecCalにおける各引数は、パラメータ提示によるソフトウェア構成方式により提示された、ソフトウェアパラメータである。
【0123】
各パラメータについて説明すると、以下のようになる。
(i)A, x, lambda, nの各パラメータは、行列情報などを表す基本情報パラメータBPに相当する。より詳細には、Aは固有値を求める対象となる行列の実体に相当する。xは、固有ベクトルに相当する。lambdaは固有値に相当する。nは行列のサイズに相当する。計算を行う際には、Aとnとを指定してサブルーチンPEigVecCalを呼び出すと、必要に応じてx,lambdaについての結果が得られるようになっている。
(ii)nproc, myid, iDistIndの各パラメータは、並列制御のためのパラメータである。例えばnprocは、プロセッサ2に含まれる、図示しない独立のプロセッサの数を表す。
(iii)imv, iud, ihit, icomm, kbi, kortは、アンローリング段数などの、処理手順に関連して性能に影響するパラメータである。
(iv)MAXITER, deps, …はアルゴリズムに影響するパラメータであり、以下では解法情報パラメータとよぶ。
このうち、(ii)(iii)のうちの一部が、性能情報パラメータ(PP)に相当する。
【0124】
より詳細には、Householder二分・逆反復法では、主要なソフトウェアパラメータは、基本情報パラメータBP={n}、性能情報パラメータPP={imv, iud, ihit, kbi, kort, nproc]のようになる。
【0125】
なお、サブルーチンPEigVecCalは、より詳細には、以下の4種のサブルーチンと性能情報パラメータPPで構成されているとする。
・HosehoIder三重対角化ルーチン: PP=[imv, iud],
・二分法ルーチン: PP={kbi],
・逆反復法ルーチン: PP={kort],
・Householder逆変換ルーチン: PP={ihit]。
【0126】
ここで、上述した性能情報パラメータPPの詳細について説明する。各性能情報パラメータPPの定義域についても示す。
・imv=[1,2,…,16]
imvは、Householder三重対角化で必要な行列・ベクトル積(2重ループ)のうち、最外ループアンローリング段数を指定するものである。
・iud=[1,2,…,16]
iudは、HousehoIder三重対角化で必要な行列更新処理(2重ループ)のうち、最外ループアンローリング段数を指定するものである。
・kbi=[vec, non-vec]
kbiは、二分法で必要な処理にっいて、ベクトル向きかそうでないか、の実装方式を指定するものである。
・kort=[CG-S, MG-S, IRCG-S, NoOrt]
kortは、逆反復法中で密集固有値に対する固有ベクトル計算で必要な、再直交化処理の実装方式を指定するものである。より詳細には、CG-Sは、古典Gram-Schmidt法で固有ベクトルを再直交化することを意味する。また、MG-Sは、修正Gram-Schmidt法で固有ベクトルを再直交化することを意味する。また、IRCG-Sは、反復改良古典Gram-Schmidt法で固有ベクトルを再直交化することを意味する。また、NoOrtは、全く再直交化をしないことを意味する。
・ihit=[1,2,…,16]
ihitは、Householder逆変換で必要な処理(2重ループ)のうち、最外ループアンローリング段数を指定するものである。
【0127】
以下では、固有値計算ライブラリPEigVecCalに対する、インストール時最適化層4aによる最適化について説明する。
【0128】
本実施例では、インストール時最適化層4aにおいて最適化するインストール時最適化パラメータIOPを、IOP={imv, iud, kbi, ihit}とする。これらのパラメータ{imv, iud, kbi, ihit}は、インストール先の計算機アーキテクチャやコンパイラなどの計算機環境が決まった時点で、その情報(レジスタ数、キャッシュサイズ、ベクトル機構など)から決まるパラメータである。このため、インストール時に最適化することが好ましい。
【0129】
パラメータIOPの最適化について、パラメータiudを例にして説明する。他のパラメータについての最適化も同様であり、説明は省略する。
【0130】
まず、このインストール時においては、基本パラメータであるサイズnは定まっていない。そこで、問題サイズnに関して、適当なサンプリング点{200, 400, 800, 2000, 4000, 8000}を定める。なお、プロセッサ台数nprocは8台と仮定する。
【0131】
また、パラメータiudについても、以下のサンプリング点{1, 2, 3, 4, 8, 16}を定める。これは、定義域全体での計算は避けて、計算量を削減するためである。十分な計算時間を取ることができる場合には、定義域全体にわたって計算してもよい。
【0132】
そして、各サンプリング点において、適当に試行を行って、実行コストである計算時間を測定する。その後、各サンプリング点における値を補間するような、適当なコスト定義関数を決定する。これによって、定義域全域にわたるコストが推定できる。
【0133】
なお、この実施例においては、パラメータiudの最適化実行時間(=コスト定義関数)を、パラメータiudについて多項式近似する。なお、補間に用いる近似関数は、多項式近似に限るものではなく、他の関数を用いてもよい。
【0134】
並列計算機の一例を用いた、各サンプリング点における実行時間の測定結果(単位:秒)を以下の表1に示す。
【0135】
【表1】
JP0004696282B2_000002t.gif
【0136】
この測定結果に対して、基本情報パラメータであるnを固定して、パラメータiudに関する関数fn(iud)を推定する。
【0137】
ここで、fn(iud)として、5次の多項式fn(iud)=a1×iud5+a2×iud4+a3×iud3+a4×iud2+a5×iud+a6 を仮定する。これに対して、適当な手法を用いて係数a1,…,a6を決定できる。ここでは、最小二乗法を用いて各係数を決定した。なお、各係数を決定する手法はこれに限るものではない。
【0138】
以下の表2に、表1のデータをサンプル点として最小二乗法を用いて係数を決定した結果を示す。
【0139】
【表2】
JP0004696282B2_000003t.gif
【0140】
この表2から、iudの定義域{1, 2, …, 16}で最小となるiudの値を、サンプリングした各問題サイズにおいて決定できる。
【0141】
また、問題サイズnについては、以下のように補間を行う。
【0142】
まず、表2によりiud全ての領域について評価値を得ることができる。したがって定義域{1, 2, …, 16}全てにおいて、iudを固定し問題サイズnをサンプル点[200, 400, 800, 2000, 4000, 8000]だけ変化させた評価値を計算できる。
【0143】
そこで、これらの評価値を新たなサンプル点とみなして、関数fiud(n)を最小二乗法により推定する。fiud(n)について、5次多項式fiud(n)=a'1×n5+a'2×n4+a'3×n3+a'4×n2+a'5×n+a'6を仮定する。nに関するサンプル点[200, 400, 800, 2000, 4000, 8000]だけ変化させた評価値による結果を求める。その結果から、nの関数fiud(n)がiudに関する定義域{1, 2, …, 16}で定まるので、実行時に指定されたnを代入することで、最小となるiudが決定できる。
【0144】
このように、サンプルされた問題サイズnに関して、実行時に全く同じ値が指定される保証はないので、上述のように最適なパラメータを推定する。推定したパラメータをパラメータ情報ファイル5に保存しておく。また、推定するパラメータのための情報、ここでは例えば各係数なども、パラメータ情報ファイル5に保存しておく。これによって、後の最適化において、パラメータ情報ファイル5を参照して、情報を得ることができる。
【0145】
〔実施例2〕
次に、実施例1にて説明したサブルーチンPEigVecCalに対する、実行前最適化層4bによる最適化について説明する。
【0146】
本実施例においては、基本情報パラメータである問題サイズnが、n=8192と定まったとする。なお、プロセッサ台数nprocsは4であるとする。
【0147】
ここで、実行前最適化層4bによって最適化する、実行前最適化パラメータ(BEOP)として、BEOP={imv, iud, ihit, kbi}とする。
【0148】
このように、本実施例においては、BEOPは上述の実施例1におけるIOPと同じとなる。しかしながら、本実施例においては、基本情報パラメータnが定まった後に最適化を行うので、上述のような補間を行う必要がなく、BEOPについて実測した確実な最適値を得ることができるという違いがある。
【0149】
すなわち、インストール時における最適化においては、サイズnに関するサンプル標本点以外は、補間などによる推定でコスト定義関数のパラメータ決定をしていた。また、プロセッサ数nprocの値は仮定した値を用いていた。
【0150】
このように、例えばインストール時のみに最適化を行う従来の構成では、実行前最適化層がないため、推定値からパラメータを決定するしかない。
【0151】
一方、本発明による、実行前における最適化では、所望のサイズnについて、実測でパラメータ決定をする。このため、実行前最適化によって、インストール時の最適化よりもパラメータの精度を高めることができる。したがって、実行前最適化層4bによる最適化は、パラメータ推定に誤差があると致命的になるような場合であっても、用いることができる。また、例えばパラメータ情報ファイル5を参照して、インストール時最適化の結果を利用して、計算時間を削減することもできる。
【0152】
なお、この実行前における最適化は、実際に用いる所望のサイズnについて、例えば上述した実施例1の表1と同様に実測し、表2のように係数を得て、最適なiudを求めることによって行われる。手順の詳細については実施例1と同様であるので、省略する。
【0153】
以上の実施例から、本発明を実施することで従来よりも高度なパラメータ調整機構が提供される。
【0154】
なお、従来のインストール時最適化と本発明における実行前最適化層4bの機能の違いは、以下のようなものである。
【0155】
【表3】
JP0004696282B2_000004t.gif
【0156】
〔実施例3〕
次に、実施例1、2にて説明したサブルーチンPEigVecCalに対する、実行前最適化層4bによる最適化の他の例について説明する。
【0157】
ここでは、ユーザが係数行列について、ライブラリコールの時点で変化しない、という情報を知っているとする。すなわち、問題サイズnについては確定しているものとする。
【0158】
このとき、実行前最適化層4bによって最適化する実行前最適化パラメータBEOPとして、BEOP=[imv, iud, ihit, kbi, kort]とする。すなわちこの問題の場合、固有値問題において、逆反復法での直交化処理(パラメータkort)まで最適化できる。また、この実施例においては、プロセッサ数nprocsについても最適化する。
【0159】
なお従来法では、実行前最適化層がないため、本実施例ではパラメータ最適化が適用できない。
【0160】
ここでは、行列(Frank行列)のサイズがn=10,000と与えられたとする。並列計算機の一例を用いて、パラメータkort, プロセッサ数nprocsについて実測を行った実行時間(単位:秒)の結果を、以下の以下の表4に示す。なお、記号>は、所定の制約時間中に収束せず、実行が終了しなかったことを示す。
【0161】
【表4】
JP0004696282B2_000005t.gif
【0162】
また、以下の表5には、逆反復法での各直交化方式による、固有ベクトルの直交精度を示す。単位は、Frobeniusノルムであり、8PEのMG-Sにおける最大残差ベクトルmaxi( |(A x)i - lambdai xi|2 )=1.61E-7とする。
【0163】
【表5】
JP0004696282B2_000006t.gif
【0164】
表4と表5とから、本実施例では、直交化方式の違いにより実行時問が異なるが、直交精度が1.5E-12以下であるなら、CG-S法が速度と精度の観点からよいことが分かる。したがって、例えばユーザが直交精度の上界をシステムに引き渡せば、BEOLによってパラメータkortをCG-Sに固定できる。また、最適なプロセッサ数nprocsについても確定できる。
【0165】
以上の実施例から、本発明を適用することで従来よりも高度なパラメータ調整機構が提供される。
【0166】
また、本実施例における計算では、パラメータ情報ファイル5に保存された情報を参照して、計算量を削減してもよい。
【0167】
〔実施例4〕
次に、実施例1~3にて説明したサブルーチンPEigVecCalに対する、実行時最適化層4cによる最適化の例について説明する。
【0168】
ここで、この実施例4においては、行列の実体Aや、行列サイズnが変化しうる状態であるとする。すなわち、行列サイズや行列データは実行時に固定されないとする。このような場合には、最適な直交化方式は、ユーザの与えた条件と実行時にならないと固定されない行列の特性とに、実際には依存する。
【0169】
ここで、実行時最適化層4cによって最適化する実行時最適化パラメータROPを、ROP={kort}とする。
【0170】
また、実施例3にて説明した実行前最適化層4bによる最適化によって、過去の直交化適用例としてユーザの精度要求と合致するパラメータkortが、最適パラメータとしてパラメータ情報ファイル5に保存されているとする。
【0171】
そこで、実行時最適化層4cにおいては、まずパラメータ情報ファイル5に保存されているパラメータkortを参照して、最もよさそうな直交化方式を選ぶ。
【0172】
次に、実行時最適化層4cは、計算の精度がユーザ指定の基準を満たすか否かを判別する。そして、指定された精度を満たしていないときには、実施例3にて説明したように、パラメータkortの各値について実測を行って、パラメータの再調整を行う。そして、指定された精度が得られる、最適なパラメータkortが選択できるまで、判別と計算とを繰り返す。これによって、ユーザ指定の精度をシステム側で保証することができる。なお、計算の詳細については上述の実施例3と同様であるのでここでは省略する。
【0173】
なお、従来法においては、行列サイズや行列データが実行時に固定されないならば、アルゴリズム上の理由から最適パラメータは決定できない。一般的に従来法では、精度に関して保証するため、コストにかかわらずMG-Sを強制選択する場合が多い。この場合には、上述の表4にて示したように、コストが非常に不利になる。
【0174】
一方、本発明では、システムにユーザから与えたれた情報(直交精度など)を引き渡すことで、上述の場合においてもパラメータ調整が適用可能となる。また、コストについても最適化が可能となる
以上の実施例では、本発明特有の実行前最適化層4bと実行時最適化層4cとが、ソフトウェア構成方式として存在しないとできない。したがって本発明は、従来法に対してパラメータ調整の適用範囲が広い。
【0175】
なお、ここでは、このパラメータ情報ファイル5に保存された、実行前に最適化された情報を参照する構成について説明したが、可能であれば、パラメータ情報ファイル5に保存された、インストール時に最適化された情報を参照する構成であってもよい。このように、インストール時最適化層4aと実行時最適化層4cとの組合せによって実現することも可能である。
【0176】
以上の各実施例にて説明したように、本実施形態に係るプログラムは、基本情報パラメータBPが定まると、それに応じて性能方法パラメータの最適化を、実際のライブラリの実行前に行う構成である。
【0177】
したがって、インストール時に最適化したパラメータをより精密に再調整することができ、または実行時に最適化する際の計算時間を削減して十分な最適化時間を確保することができる。これによって、より精密かつ確実なパラメータ調整が可能となる。
【0178】
また、性能情報パラメータPPの各要素は、インストール時、ライブラリ実行前、ライブラリ実行時のいずれかにおいて最適化されるようになっている。すなわち、また、インストール時、ライブラリ実行時に加えて、ライブラリ実行前においても最適化を行うので、あらゆる問題が最適化できる、汎用性が高いパラメータ調整機能を提供できる。
【0179】
なお、上述の実施の形態においては、並列計算装置としての計算装置1について説明をしたが、本発明はこれに限るものではなく、プロセッサ2がネットワークにて接続された複数の計算装置に備えられたものである分散計算装置であってもよい。
【0180】
また、上述の実施の形態においては、ライブラリが固有値計算ライブラリであり、サブルーチンがサブルーチンPEigVecCalである場合についてのみ説明を行ったが、これに限るものではなく、他のライブラリ、サブルーチンについても適用できるのはもちろんである。
【0181】
また、以上のように、この発明は、性能やコスト等に関するソフトウェア上のパラメータを自動調整するソフトウェア(自動チューニングソフトウェア)において、性能等の諸コストを考慮しパラメータ調整を行う機構があり、かつその調整機構の適用に関し範囲が広いソフトウェア構成方式に関するものである。また、本発明は、インストール時、実行前、実行時の最適化層を有するソフトウェア構成方式に関するものである。また、本発明では上述の式1のように、パラメータを3種類に分離して用いる。
【0182】
ここで、従来の自動チューニングソフトウェアの構成方式では、例えば図4(a)に示すようにソフトウェアインストール時にパラメータ最適化を行うもの、または例えば図4(b)に示すようにライブラリ実行時にパラメータ最適化を行うもの、のみ存在していた。これらのソフトウェア構成方式では、汎用的な処理に適用できない、パラメータ調整が不十分となる場合がある、という問題がある。また図4(a)(b)から分かるように、従来の自動チューニングではパラメータは1種類であった。
【0183】
そこで本発明においては、より汎用的な処理においてパラメータ調整が適用でき、かつ従来よりも高度なパラメータ調整機構を有するソフトウェア構成方式によって課題の解決をねらうものである。
【0184】
特に、本実施形態の計算装置1は、問題に応じた例えば行列サイズ(n)のような基本情報パラメータBPが定まると、実際の計算の実行前の時点で最適化を行う実行前最適化層4bを備えている。これによって、従来の計算装置のような、IOL、またはROL単独の場合よりもより正確な最適化が可能となる。
【0185】
なお、従来の技術における非特許文献1(P62)には、自動チューニングとして『(i)実行時自動チューニング(ii)実行前自動チューニング』の二つがある点が記載されている。しかしながら、この非特許文献1における『実行前自動チューニング』は、本発明における上述の『実行前自動チューニング』とは異なるものであり、本発明においては『インストール時最適化』に相当するものである。
【0186】
本発明は上述した実施形態、実施例に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施例にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても、本発明の技術的範囲に含まれる。
【0187】
上述の具体的な実施形態または実施例は、あくまでも、本発明の技術内容を明らかにするものであって、本発明はそのような具体例にのみ限定して狭義に解釈されるべきものではなく、特許請求の範囲に示した範囲で種々の変更が可能であり、変更した形態も本発明の技術的範囲に含まれる。
【0188】
【発明の効果】
本発明に係るプログラムは、以上のように、ライブラリのパラメータに含まれる、実行性能と上記ライブラリの出力とを共に変化させる基本情報パラメータが定まった時点を検出する手順と、上記基本情報パラメータを用いて性能情報パラメータの最適化を行う手順とを含んでいる構成である。
【0189】
それゆえ、実際の計算の前に実行コストを予め実測して最適な性能情報パラメータを得るようにして、より精密かつ確実なパラメータ調整が可能となるという効果を奏する。
【0190】
本発明に係るプログラムは、以上のように、ライブラリのインストール時に性能情報パラメータの最適化を行う初期設定手順と、上記ライブラリのパラメータに含まれる、実行性能と上記ライブラリの出力とを共に変化させる基本情報パラメータが定まった時点を検出する検出手順と、上記初期設定手順において設定された上記性能情報パラメータを参照して、上記基本情報パラメータを用いて上記性能情報パラメータの最適化を行う前調整手順とを含んでいる構成である。
【0191】
それゆえ、ライブラリの実際の実行の前に、インストール時に設定された性能情報パラメータを参照して、基本情報パラメータを用いて性能情報パラメータの最適化を行うので、試行計算の回数を削減して最適な性能情報パラメータを得ることができるという効果を奏する。
【0192】
本発明に係るプログラムは、以上のように、ライブラリのパラメータに含まれる、実行性能と上記ライブラリの出力とを共に変化させる基本情報パラメータが定まった時点を検出する検出手順と、上記基本情報パラメータを用いて性能情報パラメータの最適化を行う前調整手順と、上記ライブラリの実行の際に、既に設定された上記性能情報パラメータを参照して、この性能情報パラメータによる計算が所望の精度を満たしていないときには、上記基本情報パラメータを用いて上記性能情報パラメータの最適化を再度行う再調整手順とを含んでいる構成である。
【0193】
それゆえ、再調整手順にて精度を確認するので、所望の精度が得られる場合には、パラメータの最適化のための計算をせずに、ライブラリを実行できるという効果を奏する。
【0194】
本発明に係るプログラムは、以上のように、ライブラリのインストール時に性能情報パラメータの最適化を行う初期設定手順と、上記ライブラリのパラメータに含まれる、実行性能と上記ライブラリの出力とを共に変化させる基本情報パラメータが定まった時点を検出する検出手順と、上記ライブラリの実行の際に、既に設定された上記性能情報パラメータを参照して、この性能情報パラメータによる計算が所望の精度を満たしていないときには、上記基本情報パラメータを用いて上記性能情報パラメータの最適化を再度行う再調整手順とを含んでいる構成である。
【0195】
それゆえ、ライブラリの実際の実行の際に、既に設定された性能情報パラメータによって所望の精度が得られる場合には、パラメータの最適化のための計算をせずに、ライブラリを実行できるという効果を奏する。
【0196】
本発明に係るプログラムは、以上のように、ライブラリのインストール時に性能情報パラメータの最適化を行う初期設定手順と、上記ライブラリのパラメータに含まれる、実行性能と上記ライブラリの出力とを共に変化させる基本情報パラメータが定まった時点を検出する検出手順と、上記基本情報パラメータを用いて上記性能情報パラメータの最適化を行う前調整手順と、上記ライブラリの実行の際に、既に設定された上記性能情報パラメータを参照して、この性能情報パラメータによる計算が所望の精度を満たしていないときには、上記基本情報パラメータを用いて上記性能情報パラメータの最適化を再度行う再調整手順とを含んでいる構成である。
【0197】
それゆえ、ライブラリの実際の実行の前に、最適な性能情報パラメータを得ることができるという効果を奏する。また、ライブラリの実際の実行の際に、既に設定された性能情報パラメータによって所望の精度が得られる場合には、パラメータの最適化のための計算をせずに、ライブラリを実行できるという効果を奏する。
【0198】
本発明に係るプログラムは、以上のように、性能情報パラメータの各要素を、ライブラリのインストール時に最適化を行うパラメータの第1の集合、上記ライブラリの実行の前に最適化を行うパラメータの第2の集合、または上記ライブラリの実行の際に最適化を行うパラメータの第3の集合のうちの少なくとも一つに含まれるように設定して、第1の集合の要素を最適化する機能と、第2の集合の要素を最適化する機能と、第3の集合の要素を最適化する機能とを上記コンピュータに実現させる構成である。
【0199】
それゆえ、性能情報パラメータを、インストール時、ライブラリ実行前、ライブラリ実行の際のいずれかにおいて最適化するので、性能情報パラメータの全てが最適化可能となり、汎用な処理に適用できるという効果を奏する。
【0200】
本発明に係る記録媒体は、以上のように、上述のいずれかのプログラムを記録したコンピュータ読み取り可能な記録媒体である。
【0201】
それゆえ、上述のプログラムと同様の効果を奏する。
【0202】
また、本発明に係るコンピュータは、以上のように、上述の記録媒体を備えている構成である。
【0203】
それゆえ、上述のプログラムと同様の効果を奏する。
【図面の簡単な説明】
【図1】本発明に係るコンピュータの一実施形態の一部を示すブロック図である。
【図2】上記コンピュータを示すブロック図である。
【図3】(a)はインストール時最適化の手順を示すフローチャートであり、(b)はライブラリ実行前最適化の手順を示すフローチャートであり、(c)はライブラリ実行時最適化の手順を示すフローチャートである。
【図4】(a)は従来のコンピュータの一例の一部を示すブロック図であり、(b)は従来のコンピュータの他の一例の一部を示すブロック図である。
【符号の説明】
1 計算装置(コンピュータ)
2 プロセッサ
3 ユーザライブラリ(ライブラリ)
4 パラメータ調整層
4a インストール時最適化層
4b 実行前最適化層
4c 実行時最適化層
5 パラメータ情報ファイル
IOP インストール時最適化パラメータ(性能情報パラメータ)
BEOP 実行前最適化パラメータ(性能情報パラメータ)
ROP 実行時最適化パラメータ(性能情報パラメータ)
図面
【図1】
0
【図2】
1
【図3】
2
【図4】
3