説明

演算処理システム、演算処理方法、ユーザプログラムシステム、ライブラリプログラムシステム、プログラム、およびプログラムを記録したコンピュータ読み取り可能な記録媒体

【課題】ライブラリプログラムシステムを利用して実行する演算処理と、ユーザプログラムシステムにて実行する条件分岐や反復などの制御処理とをユーザプログラムに記述可能とし、制御処理を含む任意の計算処理を計算環境に依存せず実行することを可能とする。
【解決手段】演算処理システム1は、演算処理および制御処理を含むユーザプログラムを解析し、演算処理を表す演算文字列および制御処理を表す制御文字列を抽出する演算処理・制御処理抽出部22Aと、演算の入力値情報をライブラリプログラムシステム3に転送する数値データ転送部23Aと、演算依頼情報をライブラリプログラムシステム3に転送する演算依頼部23Bと、ライブラリプログラムの実行結果をライブラリプログラムシステム3から受信する演算結果受信部23Cと、制御文字列に基づいて制御処理を実行する制御処理部23Bとを備えるユーザプログラムシステム2を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ユーザプログラムを実行するユーザプログラムシステムと、上記ユーザプログラムにおいて利用されるライブラリプログラムを実行するライブラリプログラムシステムとを備えた演算処理システムに関するものである。
【背景技術】
【0002】
従来、科学技術計算等の複雑かつ膨大な演算を行う場合などに、汎用の数値計算ライブラリの利用が広く行われている。汎用の数値計算ライブラリとは、例えば連立一次方程式を解く、行列の固有値を求める、スプライン補間する、微分方程式を解くなど、数値計算法のサブルーチン集のことである。
【0003】
数値計算ライブラリを利用した演算は、基本的には、ユーザが生成し、利用するユーザプログラムが実行されるユーザプログラムシステムと、ライブラリプログラムが実行されるライブラリプログラムシステムとからなる演算処理システムによって実現される。ユーザは、ユーザプログラム中に、ライブラリプログラムの実行に関する命令を含めることにより、ライブラリプログラムを利用することになる。
【0004】
以上のように、数値計算ライブラリを利用することによって、ユーザは、複雑な数値解析プログラムを自分で作成する必要がなくなる。よって、科学技術計算を行う上でのユーザのプログラミングの負担を軽減することができる。
【0005】
次に、従来の演算処理システムを用いて、例えば連立1次方程式Ax=bを解く場合について説明する。この場合、ユーザプログラムは次のような命令列となる。
REAL *8 A(LDA,N),B(N)
(データ生成)
計算:ライブラリコール
CALL LU(LDA,N,A,IERR)
CALL SOLVE(LDA,N,A,B,IERR)
(結果の利用)
END
ここで、Aは2次元配列Aに格納された行列であり、bは1次元配列Bに格納されたベクトルであるものとしている。
【0006】
上記のように、ユーザプログラムは、ライブラリプログラムの実行命令ごとにデータを指定するようになっている。すなわち、ライブラリプログラムの選択、使用する順番、データ形式の選択、および中間結果などのデータの管理のすべてについてユーザプログラムが責任を負わなければならない。
【0007】
また、ライブラリプログラムシステムにおけるライブラリプログラムが改良されたり新たに追加されたりした場合、ユーザプログラムのユーザは、これを考慮して、ユーザプログラムの内容を変更する必要が生じる。
【0008】
また、ライブラリプログラムの実行命令には、データの形式についての指定も含まれているので、入力値を変更したい場合には、入力値を変更するだけでなく、データの形式に応じて実行命令自体も変更する必要が生じる。
【0009】
そこで、ユーザプログラムのユーザが、ライブラリプログラムシステムにおける具体的な処理を意識することなく、より容易にライブラリプログラムを利用することを可能とする演算処理システムおよび演算手法が開示されている(特許文献4参照)。
【0010】
特許文献4に開示されている演算処理システムについて、図6に基づいて概略を説明すると以下の通りである。
【0011】
図6は、上記開示されている演算処理システム101の概略構成を示すブロック図である。同図に示すように、演算処理システム101は、ユーザプログラムシステム102、およびライブラリプログラムシステム103を備えた構成となっている。
【0012】
ユーザプログラムシステム102は、ユーザが作成し、利用するユーザプログラムを実行するシステムである。このユーザプログラムシステム102は、入出力部111、転送処理部112、演算処理部113、および記憶部114を備えている。
【0013】
入出力部111は、ユーザからの入力を受け付けるとともに、演算処理部113による演算結果をユーザに対して表示・出力するものである。転送処理部112は、ライブラリプログラムシステム103との間でのデータの送受信を行うものである。
【0014】
演算処理部113は、ユーザプログラムの演算処理を行うものである。この演算処理部113は、ユーザプログラム実行部121、および転送制御部122を備えている。
【0015】
ユーザプログラム実行部121は、記憶部114に記憶されているユーザプログラムを読み出して実行するものである。転送制御部122は、ユーザプログラム実行部121において実行されているユーザプログラムが、ライブラリプログラムシステム103に格納されているライブラリプログラムを利用する場合に、ライブラリプログラムシステム103に対してのデータの送受信に関する制御処理を行うものである。この転送制御部122は、数値データ転送部122A、演算依頼部122B、および演算結果受信部122Cを備えている。
【0016】
数値データ転送部122Aは、ライブラリプログラムシステム103に演算処理を実行させる際に、演算の入力値となる数値データおよびそのデータ形式をライブラリプログラムシステム103に転送する処理を行う。演算依頼部122Bは、ライブラリプログラムシステム103において行わせる演算内容の情報をライブラリプログラムシステム103に転送する処理を行う。この演算依頼情報は、特定のライブラリプログラムの実行命令ではなく、数学の演算式そのものを表す文字列を含んでいる。演算結果受信部122Cは、ライブラリプログラムシステム103におけるライブラリプログラムの実行結果をライブラリプログラムシステム103に対して要求するとともに、該実行結果をライブラリプログラムシステム103から受信する処理を行う。
【0017】
記憶部114は、演算処理部113における演算処理で用いられるデータを格納するとともに、演算処理部113のワークメモリとして機能する記憶手段である。この記憶部14は、ユーザプログラム格納部14A、数値データ格納部14B、および演算結果データ格納部14Cを備えている。ユーザプログラム格納部14Aは、演算処理部13において実行されるユーザプログラムを格納する領域である。数値データ格納部14Bは、数値データ転送部22Aによって転送される数値データおよびそのデータ形式を格納する領域である。演算結果データ格納部14Cは、演算結果受信部22Cによって受信された実行結果を格納する領域である。なお、実際のメモリの利用に際しては、数値データ格納部14Bおよび演算結果データ格納部14Cは、両者が区別されることなく、変数や配列として記憶部14に記憶される。また、ライブラリプログラム演算に関係しないその他の演算に必要とされる数値データなども記憶部14に格納される。
【0018】
一方、ライブラリプログラムシステム103は、ユーザプログラムシステム102からの依頼に応じて、ライブラリプログラムを実行するシステムである。このライブラリプログラムシステム103は、転送処理部131、演算処理部132、および記憶部133を備えている。
【0019】
転送処理部131は、ユーザプログラムシステム102との間でのデータの送受信を行うものである。
【0020】
演算処理部132は、ライブラリプログラムの演算処理を行う。この演算処理部132は、ライブラリプログラム実行部142、および転送制御部141を備えている。
【0021】
ライブラリプログラム実行部142は、記憶部133に記憶されているライブラリプログラムを読み出して実行する。転送制御部141は、ユーザプログラムシステム102において実行されているユーザプログラムが、ライブラリプログラムシステム103による処理を利用するものである場合に、ユーザプログラムシステム102からの要求に応じて、該ユーザプログラムシステム102に対してのデータの送受信に関する制御処理を行う。この転送制御部141は、数値データ受信部141A、演算方法決定部141B、および演算結果送信部141Cを備えている。
【0022】
数値データ受信部141Aは、ユーザプログラムシステム102から、例えばライブラリプログラムの実行時に用いられる演算の入力値となる数値データおよびそのデータ形式を受信する処理を行う。
【0023】
演算方法決定部141Bは、ユーザプログラムシステム102から送られてきた演算依頼情報を解析することによって、利用するライブラリプログラム、およびその実行順序を決定する処理を行う。演算結果送信部141Cは、ライブラリプログラム実行部142におけるライブラリプログラムの実行結果を、ユーザプログラムシステム102からの要求に応じてユーザプログラムシステム102へ送信する処理を行う。
【0024】
記憶部133は、演算処理部132における演算処理で用いられるデータを格納するとともに、演算処理部132のワークメモリとして機能する記憶手段である。
【0025】
この記憶部33は、ライブラリプログラム格納部33A、数値データ格納部33B、および演算結果データ格納部33Cを備えている。ライブラリプログラム格納部33Aは、演算処理部32において実行されるライブラリプログラムを格納する領域である。数値データ格納部33Bは、数値データ転送部41Aによって受信された数値データおよびそのデータ形式を格納する領域である。演算結果データ格納部33Cは、ライブラリプログラム実行部42によるライブラリプログラムの実行結果を格納する領域である。なお、実際のメモリの利用に際しては、数値データ格納部33Bおよび演算結果データ格納部33Cは、両者が区別されることなく、変数や配列として記憶部33に記憶される。また、ライブラリプログラム演算において一時的に用いられる中間データとしての変数や、数値データに対するディレクトリ構造を示す管理情報なども記憶部33に格納される。
【0026】
次に、演算処理システム101における動作例について説明する。ここでは、ユーザプログラムシステム102におけるユーザプログラムにおいて、連立1次方程式Ax=bを解くという命令が含まれており、この連立1次方程式Ax=bの演算がライブラリプログラムシステム103において行われる例を挙げて説明する。
【0027】
ここで、Aは係数行列であり、倍精度実数型の2次元配列に格納されるものとする。また、bはベクトルであり、倍精度実数型の1次元配列に格納されるものとする。また、xは解ベクトルであり、倍精度実数型の1次元配列に格納されるものとする。そして、係数行列Aおよびベクトルbは、ユーザプログラムの実行過程においてユーザプログラム実行部121により生成され、数値データ格納部114Bに配列A1および配列b1として格納されるものとする。
【0028】
まず、ユーザプログラムがユーザからの指示入力などに基づいて実行され、ユーザプログラム実行部121が、ユーザプログラムにおける次のステートメントを実行するものとする。
SILC_PUT('A',&A1)
SILC_PUT('b',&b1)
上記ステートメントは、ライブラリプログラムシステム103に対して、係数行列Aが格納された配列A1、および、ベクトルbが格納された配列b1を送信する、という命令を示している。上記のステートメントがユーザプログラム実行部121によって実行されると、数値データ転送部122Aは、配列A1および配列b1を、ライブラリプログラムシステム103に対して転送するように転送処理部112を制御する。これにより、配列A1および配列b1が、転送処理部112によってライブラリプログラムシステム103へ転送される。ライブラリプログラムシステム103では、数値データ受信部141Aが配列A1および配列b1を受信し、これを係数行列Aおよびベクトルbとして数値データ格納部133Bに格納する。
【0029】
次に、ユーザプログラム実行部121は、ユーザプログラムにおける次のステートメントを実行するものとする。
SILC_EXEC('x=A\b')
上記のステートメントは、ライブラリプログラムシステム103に対して、演算依頼情報として、連立1次方程式Ax=bを解くことを指示する命令を示している。この命令によって、ライブラリプログラムシステム3において演算が実行される。
【0030】
その後、ユーザプログラム実行部121は、ユーザプログラムにおける次のステートメントを実行するものとする。
SILC_GET(&x,'x')
上記のステートメントは、ライブラリプログラムシステム103から、演算結果としての解ベクトルxを受信する命令を示している。
【0031】
上記のステートメントが実行されると、演算結果受信部122Cは、結果要求情報としての上記ステートメントを、ライブラリプログラムシステム103に対して転送するように転送処理部112を制御する。これにより、結果要求情報が、転送処理部112によってライブラリプログラムシステム103へ転送される。演算結果受信部122Cが、演算結果データをライブラリプログラムシステム103から受信すると、演算結果データとしての解ベクトルxを演算結果データ格納部114Cに格納する。これにより、ライブラリプログラムシステム103を利用した演算が完了する。
【0032】
以上のように、特許文献4に開示されている演算処理システムによれば、入力値情報の転送処理、演算内容の情報の転送処理、および演算結果の転送処理がそれぞれ別々に行われるので、ユーザプログラムを、各処理に関する命令をそれぞれ分離した状態で構成することができる。したがって、ユーザプログラムを細分化することが可能となるので、入力値の変更や演算内容の変更などをより容易に行うことが可能となる。
【0033】
さらに、上記演算処理システムによれば、ユーザプログラムシステム側では、数学の演算式そのものを表す文字列をライブラリプログラムシステムに対して転送すればよいので、演算式をどのように解くべきかなどを考慮する必要がない。
【0034】
さらに、上記演算処理システムによれば、ライブラリプログラムシステムにおいて実行される演算に関しては、ユーザプログラムシステムは関与する必要がないので、ユーザプログラムシステムにおけるユーザプログラムのサイズを小さくすることが可能となるとともに、ユーザプログラムシステムにおけるメモリ使用量も小さくすることが可能となる。
【特許文献1】特開平9−128352号公報(1997年5月16日公開)
【特許文献2】特開平11−39271号公報(1999年2月12日公開)
【特許文献3】米国特許出願公開第2005/0172259号明細書(2005年8月4日公開)
【特許文献4】国際公開第2006/051902パンフレット(公開日:平成18年(2006)5月18日)
【発明の開示】
【発明が解決しようとする課題】
【0035】
しかしながら、特許文献4に開示されている演算処理システムまたは演算処理手法において、条件分岐や反復などの制御構文を処理する場合は、ユーザプログラムを作成するユーザが、あらかじめ上記制御を含む処理が記述された関数を定義し、該定義された関数をライブラリプログラムシステムに渡しておく必要があった。そのため、ユーザプログラムを作成するユーザが、上記制御構文を含む任意の計算処理をユーザプログラムにて記述することができないという問題があった。
【0036】
本発明は、上記の問題点に鑑みてなされたものであり、その目的は、ユーザが、制御処理を含む任意の計算処理を、計算環境に依存しないユーザプログラムに記述することを可能とし、より容易にライブラリプログラムを利用することができる演算処理システム、演算処理方法、ユーザプログラムシステム、ライブラリプログラムシステム、プログラム、および、プログラムを記録したコンピュータ読み取り可能な記録媒体を提供することにある。
【課題を解決するための手段】
【0037】
上記課題を解決するために、本発明に係る演算処理システムは、ユーザプログラムを実行するユーザプログラムシステムと、上記ユーザプログラムにおいて利用されるライブラリプログラムを実行するライブラリプログラムシステムとを備えた演算処理システムにおいて、上記ユーザプログラムシステムが、上記ライブラリプログラムシステムを利用して実行する演算処理および上記ユーザプログラムシステムにて実行する制御処理を含む上記ユーザプログラムを解析し、上記演算処理を表す演算文字列および上記制御処理を表す制御文字列を抽出する演算制御処理抽出手段と、上記抽出した演算文字列に基づいて、上記演算処理における演算の入力値に関する入力値情報を上記ライブラリプログラムシステムに転送する処理を行う入力値転送手段と、上記抽出した演算文字列に基づいて、上記演算処理における演算の内容に関する演算依頼情報を該ライブラリプログラムシステムに転送する処理を行う演算依頼手段と、上記抽出した演算文字列に基づいて、上記ライブラリプログラムシステムにおけるライブラリプログラムの実行結果を該ライブラリプログラムシステムから受信する処理を行う演算結果受信手段と、上記抽出した制御文字列に基づいて、上記制御処理を実行する制御処理実行手段とを備え、上記ライブラリプログラムシステムが、上記ユーザプログラムシステムから送られた、上記入力値情報を受信する処理を行う入力値受信手段と、上記ユーザプログラムシステムから送られた、上記演算依頼情報を解析することによって、利用するライブラリプログラムの種類、およびその実行順序を決定する処理を行う演算方法決定手段と、上記ライブラリプログラムの実行結果を上記ユーザプログラムシステムへ送信する処理を行う演算結果送信手段とを備えていることを特徴としている。
【0038】
また、本発明に係る演算処理方法は、ユーザプログラムを実行するユーザプログラムシステムと、上記ユーザプログラムにおいて利用されるライブラリプログラムを実行するライブラリプログラムシステムとを備えた演算処理システムにおける演算処理方法において、上記ユーザプログラムシステムにおける、上記ライブラリプログラムシステムを利用して実行する演算処理および上記ユーザプログラムシステムにて実行する制御処理を含む上記ユーザプログラムを解析し、上記演算処理を表す演算文字列および上記制御処理を表す制御文字列を抽出する演算制御処理抽出ステップと、上記抽出した演算文字列に基づいて、上記演算処理における演算の入力値に関する入力値情報を上記ライブラリプログラムシステムに転送する処理を行う入力値転送ステップと、上記抽出した演算文字列に基づいて、上記演算処理における演算の内容に関する演算依頼情報を該ライブラリプログラムシステムに転送する処理を行う演算依頼ステップと、上記抽出した演算文字列に基づいて、上記ライブラリプログラムシステムにおけるライブラリプログラムの実行結果を該ライブラリプログラムシステムから受信する処理を行う演算結果受信ステップと、上記抽出した制御文字列に基づいて、上記制御処理を実行する制御処理実行ステップと、上記ライブラリプログラムシステムにおける、上記ユーザプログラムシステムから送られた、上記入力値情報を受信する処理を行う入力値受信ステップと、上記ユーザプログラムシステムから送られた、上記演算依頼情報を解析することによって、利用するライブラリプログラムの種類、およびその実行順序を決定する処理を行う演算方法決定ステップと、上記ライブラリプログラムの実行結果を上記ユーザプログラムシステムへ送信する処理を行う演算結果送信ステップとを含むことを特徴としている。
【0039】
上記の構成および方法によれば、ユーザプログラムシステムにおいてユーザプログラムを実行するとき、ライブラリプログラムシステムを利用して実行する演算処理と、ユーザプログラムシステムにて実行する条件分岐や反復などの制御処理とをそれぞれ分離して抽出することができる。
【0040】
そして、1)上記抽出した演算処理をライブラリプログラムを利用して実行するために、次の処理が行われる。すなわち、ます、演算の入力値に関する入力値情報がユーザプログラムシステムからライブラリプログラムシステムへ転送される。次に、演算内容の情報がユーザプログラムシステムからライブラリプログラムシステムへ転送され、ライブラリプログラムシステムにおいて利用するライブラリプログラムの種類、およびその実行順序が決定される。そして、ユーザプログラムシステムからの要求に応じて、実行結果がライブラリプログラムシステムからユーザプログラムシステムへ転送される。
【0041】
そして、2)上記抽出した制御処理は、上記演算処理とは独立して、ユーザプログラムシステムにて実行することができる。
【0042】
よって、演算処理と制御処理とをユーザが明示的に分離して演算処理システムに与える必要がなく、制御処理と演算処理とが混在したユーザプログラムを実行することが可能となる。特に、ユーザが、あらかじめ上記制御を含む処理が記述された関数を定義し、該定義された関数をライブラリプログラムシステムに渡しておく必要がなくなる。
【0043】
したがって、ユーザにとって、ライブラリプログラムシステムに渡しておく関数に関する知識が不要となり、ユーザプログラムに制御処理を記述することができるため、より容易にライブラリプログラムを利用することが可能となるという効果を奏する。
【0044】
さらに、従来個別のライブラリで完結する処理しか実行できなかった分散環境向けライブラリ呼び出しシステムにおいても、制御処理を含む演算処理を記述したユーザプログラムを実行することができることから、演算処理システムがチューリングマシンと等価な記述力を与えることができるという効果を奏する。
【0045】
そのため、任意の計算処理を計算環境に依存せず実行することが可能となるという効果を奏する。
【0046】
さらに、本発明に係る演算処理システムは、上記の構成において、上記ユーザプログラムシステムが、上記ライブラリプログラムシステムを利用して実行する入出力処理を含む上記ユーザプログラムを解析し、上記入出力処理を表す入出力文字列を抽出しする入出力処理抽出手段と、上記入出力処理における入出力値に関する情報を上記ライブラリプログラムシステムにて処理可能な形式に変換する入出力処理変換手段とをさらに備え、上記入力値転送手段が、上記変換後の上記入出力値に関する情報を上記入力値情報として上記ライブラリプログラムシステムに転送する処理を行う構成としてもよい。
【0047】
上記の構成によれば、さらに、ユーザプログラムシステムにおいてユーザプログラムを実行するとき、入出力処理を他の処理と分離して抽出することができる。そして、上記抽出した入出力処理において入力したデータを、ライブラリプログラムシステムにて処理可能な形式に変換して、ライブラリプログラムシステムに渡すことができる。
【0048】
よって、あらかじめライブラリプログラムシステムにて処理可能な形式でユーザプログラムを記述する必要が無いため記述を簡潔にすることができ、また、ユーザプログラムが使用するメモリ空間を使用することなく入力処理を行うことができる。
【0049】
したがって、行列やベクトルなどのデータ量が多いデータを演算の入力とする場合であっても、ユーザプログラムのメモリ使用量を小さくすることができるという効果を奏する。
【0050】
さらに、本発明に係る演算処理システムは、上記の構成において、上記演算結果送信手段が、上記ライブラリプログラムシステムを利用して実行する入出力処理における出力値に関する出力値情報を上記実行結果として送信する処理を行い、上記演算結果受信手段が、上記ライブラリプログラムシステムから上記出力値情報を上記実行結果として受信する処理を行う構成としてもよい。
【0051】
上記の構成によれば、さらに、上記抽出した入出力処理において出力すべきデータをライブラリプログラムシステムから受信することができる。
【0052】
よって、ユーザプログラムのメモリ空間を使用することなく出力処理を実行することができる。
【0053】
したがって、演算処理の結果が、多くのメモリ空間を使用する行列データやベクトルデータなどであったとしても、ユーザプログラムのメモリ使用量を小さくすることができるという効果を奏する。
【0054】
さらに、本発明に係る演算処理システムは、上記の構成において、上記入力値転送手段が、上記入力値情報として、数値データおよびそのデータ形式を転送する構成としてもよい。
【0055】
上記の構成によれば、演算処理および入力処理の入力値情報として数値データおよびそのデータ形式がライブラリプログラムシステムに転送されることになる。よって、演算処理や入出力処理にて異なったデータ形式を扱うユーザプログラムを組み合わせたりすることが容易に可能となる。
【0056】
さらに、本発明に係る演算処理システムは、上記の構成において、上記入力値受信手段が、受信した上記入力値情報を記憶部に格納するとともに、上記演算方法決定手段が、ライブラリプログラムの実行の際に、上記記憶部に格納されている入力値情報のいずれを用いるかを決定する構成としてもよい。
【0057】
上記の構成によれば、演算処理および入力処理の入力値情報の転送処理と演算内容の情報の転送処理とが分離していても、両者の関係を適切に組み合わせてライブラリプログラムでの演算を行うことが可能となる。
【0058】
さらに、本発明に係る演算処理システムは、上記の構成において、上記演算依頼手段が、上記演算依頼情報として、数学の演算式そのものを表す文字列を転送する構成としてもよい。
【0059】
上記の構成によれば、ユーザプログラムシステム側では、数学の演算式そのものを表す文字列をライブラリプログラムシステムに対して転送すればよいので、演算処理および入力処理にて入力する値をどのように演算式で解くべきかなどを考慮する必要がない。よって、ユーザプログラムのユーザは、一般的な数学の演算式を考慮するだけで演算を行うプログラミングを記述することが可能となる。
【0060】
さらに、本発明に係る演算処理システムは、上記の構成において、上記ユーザプログラムシステム、および上記ライブラリプログラムシステムが、同一のコンピュータにおいて動作する構成としてもよい。
【0061】
上記の構成によれば、1つのコンピュータにおいてユーザプログラムシステムとライブラリプログラムシステムとを構築することによって、上記のような演算処理システムを実現することができる。なお、1つのコンピュータが複数の演算処理装置(例えばCPUなど)を備え、メモリを共有している構成であってもよい。
【0062】
さらに、本発明に係る演算処理システムは、上記の構成において、上記ユーザプログラムシステムが第1のコンピュータにおいて動作するとともに、上記ライブラリプログラムシステムが、上記第1のコンピュータと通信接続された別のコンピュータにおいて動作する構成としてもよい。
【0063】
上記の構成によれば、ユーザプログラムシステムが動作するコンピュータと、ライブラリプログラムシステムが動作するコンピュータとを別々に構築することによって、上記のような演算処理システムを実現することができる。したがって、ユーザプログラムの実行とライブラリプログラムの実行とを並列に行うことが可能となる。
【0064】
なお、上記ユーザプログラムシステムおよび上記ライブラリプログラムシステムは、コンピュータによって実現してもよく、この場合には、コンピュータを上記各手段として動作させることにより、上記ユーザプログラムシステムおよび上記ライブラリプログラムシステムをコンピュータにて実現させる上記ユーザプログラムシステムおよび上記ライブラリプログラムシステムの制御プログラム、およびそれを記録したコンピュータ読み取り可能な記録媒体も、本発明の範疇に入る。
【発明の効果】
【0065】
以上のように、本発明に係る演算処理システムは、ユーザプログラムを実行するユーザプログラムシステムと、上記ユーザプログラムにおいて利用されるライブラリプログラムを実行するライブラリプログラムシステムとを備えた演算処理システムにおいて、上記ユーザプログラムシステムが、上記ライブラリプログラムシステムを利用して実行する演算処理および上記ユーザプログラムシステムにて実行する制御処理を含む上記ユーザプログラムを解析し、上記演算処理を表す演算文字列および上記制御処理を表す制御文字列を抽出する演算制御処理抽出手段と、上記抽出した演算文字列に基づいて、上記演算処理における演算の入力値に関する入力値情報を上記ライブラリプログラムシステムに転送する処理を行う入力値転送手段と、上記抽出した演算文字列に基づいて、上記演算処理における演算の内容に関する演算依頼情報を該ライブラリプログラムシステムに転送する処理を行う演算依頼手段と、上記抽出した演算文字列に基づいて、上記ライブラリプログラムシステムにおけるライブラリプログラムの実行結果を該ライブラリプログラムシステムから受信する処理を行う演算結果受信手段と、上記抽出した制御文字列に基づいて、上記制御処理を実行する制御処理実行手段とを備え、上記ライブラリプログラムシステムが、上記ユーザプログラムシステムから送られた、上記入力値情報を受信する処理を行う入力値受信手段と、上記ユーザプログラムシステムから送られた、上記演算依頼情報を解析することによって、利用するライブラリプログラムの種類、およびその実行順序を決定する処理を行う演算方法決定手段と、上記ライブラリプログラムの実行結果を上記ユーザプログラムシステムへ送信する処理を行う演算結果送信手段とを備えている。
【0066】
また、本発明に係る演算処理方法は、ユーザプログラムを実行するユーザプログラムシステムと、上記ユーザプログラムにおいて利用されるライブラリプログラムを実行するライブラリプログラムシステムとを備えた演算処理システムにおける演算処理方法において、上記ユーザプログラムシステムにおける、上記ライブラリプログラムシステムを利用して実行する演算処理および上記ユーザプログラムシステムにて実行する制御処理を含む上記ユーザプログラムを解析し、上記演算処理を表す演算文字列および上記制御処理を表す制御文字列を抽出する演算制御処理抽出ステップと、上記抽出した演算文字列に基づいて、上記演算処理における演算の入力値に関する入力値情報を上記ライブラリプログラムシステムに転送する処理を行う入力値転送ステップと、上記抽出した演算文字列に基づいて、上記演算処理における演算の内容に関する演算依頼情報を該ライブラリプログラムシステムに転送する処理を行う演算依頼ステップと、上記抽出した演算文字列に基づいて、上記ライブラリプログラムシステムにおけるライブラリプログラムの実行結果を該ライブラリプログラムシステムから受信する処理を行う演算結果受信ステップと、上記抽出した制御文字列に基づいて、上記制御処理を実行する制御処理実行ステップと、上記ライブラリプログラムシステムにおける、上記ユーザプログラムシステムから送られた、上記入力値情報を受信する処理を行う入力値受信ステップと、上記ユーザプログラムシステムから送られた、上記演算依頼情報を解析することによって、利用するライブラリプログラムの種類、およびその実行順序を決定する処理を行う演算方法決定ステップと、上記ライブラリプログラムの実行結果を上記ユーザプログラムシステムへ送信する処理を行う演算結果送信ステップとを含んでいる。
【0067】
よって、演算処理と制御処理とをユーザが明示的に分離して演算処理システムに与える必要がなく、制御処理と演算処理とが混在したユーザプログラムを実行することが可能となる。特に、ユーザが、あらかじめ上記制御を含む処理が記述された関数を定義し、該定義された関数をライブラリプログラムシステムに渡しておく必要がなくなる。
【0068】
したがって、ユーザにとって、ライブラリプログラムシステムに渡しておく関数に関する知識が不要となり、ユーザプログラムに制御処理を記述することができるため、より容易にライブラリプログラムを利用することが可能となるという効果を奏する。
【発明を実施するための最良の形態】
【0069】
本発明の一実施形態について図1から図5に基づいて説明すると以下の通りである。
【0070】
(演算処理システムの構成)
図1を参照しながら、演算処理システム1の構成について説明する。図1は、本実施形態に係る演算処理システム1の概略構成を示すブロック図である。図1に示すように、演算処理システム1は、ユーザプログラムシステム2、およびライブラリプログラムシステム3を備えて構成される。また、図1に示すように、ユーザプログラムシステム2とライブラリプログラムシステム3とは通信可能に接続されている。
【0071】
(ユーザプログラムシステム)
ユーザプログラムシステム2は、ユーザが作成し、利用するユーザプログラムを実行するシステムである。ここで、上記ユーザプログラムは、演算処理を表す文字列(以下、演算文字列と称する)(例えば”+”などの四則演算や、”=”などの代入)を含んでいる。また、上記ユーザプログラムは、条件分岐や反復などの制御処理を表す文字列(以下、制御文字列と称する)(例えば”if”や”while”など)を含んでいる。また、上記ユーザプログラムは、所定ファイルからの行列やベクトルなどのデータ読み込み、および、行列やベクトルなどのデータの所定ファイルへの保存といった入出力処理を表す文字列(以下、入出力文字列と称する)を含んでいる。
【0072】
なお、制御文字列、演算文字列、入出力文字列はあらかじめ定義されている文字列であり、他の文字列とそれぞれ識別可能である。
【0073】
また、上記演算処理および上記入出力処理は、ライブラリプログラムシステム3を利用して行われるものであり、上記制御処理はユーザプログラムシステム2で行われるものである。
【0074】
ユーザプログラムシステム2は、上記ユーザプログラムを実行するために、入出力部11、転送処理部12、制御部13、および記憶部14を備えて構成される。
【0075】
入出力部11は、ユーザからの入力を受け付けるとともに、制御部13による演算結果または入出力処理をユーザに対して表示・出力するものである。転送処理部12は、ライブラリプログラムシステム3との間でのデータの送受信を行うものである。
【0076】
制御部13は、上述した演算処理、制御処理、入出力処理を行うものである。そのために、制御部13は、ユーザプログラム実行部21、インタープリタ部22、および転送制御部23を備えている。
【0077】
ユーザプログラム実行部21は、記憶部14に記憶されているユーザプログラムを読み出して実行するものである。
【0078】
インタープリタ部22は、ユーザプログラム実行部21において実行されているユーザプログラムを読み込み、制御処理と演算処理とをそれぞれ抽出する。そして、該制御処理を行うとともに、該演算処理を行うために、転送制御部23を制御する。また、インタープリタ部22は、上記読み込んだユーザプログラムから入出力処理を抽出し、該入出力処理を行うために、転送制御部23を制御してもよい。
【0079】
そのために、インタープリタ部22は、演算処理・制御処理抽出部22A、制御処理部22B、入出力処理抽出部22C、入出力処理部22Dを備えて構成される。なお、ライブラリプログラムシステム3を利用した入出力処理を行わない場合は、入出力処理抽出部22C、入出力処理部22Dを備えなくてもよい。
【0080】
演算処理・制御処理抽出部22A(演算制御処理抽出手段)は、上記読み込んだユーザプログラムを解析し、あらかじめ記憶部14に記憶されている演算文字列または制御文字列を検出する。そして、該検出された演算文字列により実行される演算処理と、該検出された制御文字列により実行される制御処理とをそれぞれ分けて抽出する。
【0081】
そして、該抽出した演算処理をライブラリプログラムシステム3に格納されているライブラリプログラムを利用して行うために、転送制御部23に対し、数値データの転送、演算内容の情報の転送を指示し、また、転送制御部23から演算結果の受信を行う。また、該抽出した制御処理の内容を制御処理部22Bに転送する。
【0082】
制御処理部22B(制御処理実行手段)は、演算処理・制御処理抽出部22Aが抽出した制御処理の内容を実行するものである。
【0083】
入出力処理抽出部22C(入出力処理抽出手段)は、上記読み込んだユーザプログラムを解析し、あらかじめ記憶部14に記憶されている入出力文字列を検出する。そして、該検出された入出力文字列により実行される入出力処理を抽出する。また、該抽出した入出力処理の内容を入出力処理部22Dに転送する。
【0084】
入出力処理部22D(入出力処理変換手段)は、入出力処理抽出部22Cが抽出した入出力処理の内容を実行するものである。このとき、入出力処理部22Dは、所定ファイルから読み込んだ行列やベクトルなどのデータを、転送制御部23を介してライブラリプログラムシステム3に転送する。また、ライブラリプログラムシステム3で演算処理された行列やベクトルなどのデータを転送制御部23を介して受信し、所定ファイルに保存する。
【0085】
そのため、入出力処理部22Dは、所定ファイルから読み込んだ行列やベクトルなどを転送制御部23が処理可能な数値データおよびそのデータ形式に変換し、転送制御部23に対して該変換後のデータを転送する。また、入出力処理部22Dは、ライブラリプログラムシステム3で演算処理された行列やベクトルなどのデータをライブラリプログラムシステム3に対して要求することを転送制御部23に対して指示し、該要求に応じてライブラリプログラムシステム3から送信された行列やベクトルなどのデータを受信する。
【0086】
なお、入出力処理部22Dは、ライブラリプログラムシステム3から受信したデータを、ユーザプログラム実行部21を介して入出力部11に転送し、ユーザに対して表示・出力してもよい。
【0087】
転送制御部23は、演算処理・制御処理抽出部22Aが抽出した演算処理、および、入出力処理抽出部22Cが抽出した入出力処理を、ライブラリプログラムシステム3に格納されているライブラリプログラムを利用して行うために、ライブラリプログラムシステム3に対してのデータの送受信に関する制御処理を行うものである。そのために、転送制御部23は、数値データ転送部23A、演算依頼部23B、および演算結果受信部23Cを備えている。
【0088】
数値データ転送部23A(入力値転送手段)は、ライブラリプログラムシステム3に演算処理を実行させる際に、演算の入力値となる数値データおよびそのデータ形式をライブラリプログラムシステム3に転送する処理を行う。ここで、転送されるデータには、入出力処理部22Dから送信される、数値データおよびそのデータ形式が含まれる。
【0089】
演算依頼部23B(演算依頼手段)は、ライブラリプログラムシステム3において行わせる演算内容の情報(演算依頼情報)をライブラリプログラムシステム3に転送する処理を行う。この演算依頼情報は、特定のライブラリプログラムの実行命令ではなく、数学の演算式そのものを表す文字列を含んでいる。
【0090】
演算結果受信部23C(演算結果受信手段)は、ライブラリプログラムシステム3におけるライブラリプログラムの実行結果をライブラリプログラムシステム3に対して要求するとともに、該実行結果をライブラリプログラムシステム3から受信する処理を行う。実行結果には行列やベクトルなどのデータが含まれる。そして、該実行結果をインタープリタ部22に送信する。
【0091】
記憶部14は、制御部13における演算処理、制御処理、入出力処理で用いられるデータを格納するとともに、制御部13のワークメモリとして機能する記憶手段である。なお、記憶部14は、主記憶機能に加えて、補助記憶機能を有するものであってもよい。また、記憶部14は、必ずしもユーザプログラムシステム2に備えられる必要はなく、外部記憶装置として、書き込み可能かつ読み取り可能な状態でユーザプログラムシステム2に接続される構成でもよい。
【0092】
この記憶部14は、ユーザプログラム格納部14A、数値データ格納部14B、および演算結果データ格納部14C、文字列格納部14Dを備えている。
【0093】
ユーザプログラム格納部14Aは、制御部13において実行されるユーザプログラムを格納する領域である。数値データ格納部14Bは、数値データ転送部23Aによって転送される数値データおよびそのデータ形式を格納する領域である。演算結果データ格納部14Cは、演算結果受信部23Cによって受信された実行結果を格納する領域である。文字列格納部14Dは、ユーザプログラムにおいて記述される制御文字列、演算文字列、入出力文字列を含む、あらかじめ定義される文字列を格納する領域である。
【0094】
なお、実際のメモリの利用に際しては、数値データ格納部14Bおよび演算結果データ格納部14Cは、両者が区別されることなく、変数や配列として記憶部14に記憶される。また、ライブラリプログラム演算に関係しないその他の演算に必要とされる数値データなども記憶部14に格納される。
【0095】
(ライブラリプログラムシステム)
一方、ライブラリプログラムシステム3は、ユーザプログラムシステム2からの依頼に応じて、ライブラリプログラムを実行するシステムである。そのために、ライブラリプログラムシステム3は、転送処理部31、制御部32、および記憶部33を備えている。
【0096】
転送処理部31は、ユーザプログラムシステム2との間でのデータの送受信を行うものである。
【0097】
制御部32は、ライブラリプログラムの演算処理を行う。そのために、制御部32は、ライブラリプログラム実行部42、および転送制御部41を備えている。
【0098】
ライブラリプログラム実行部42は、記憶部33に記憶されているライブラリプログラムを読み出して実行する。転送制御部41は、ユーザプログラムシステム2において実行されているユーザプログラムが、ライブラリプログラムシステム3による処理を利用するものである場合に、ユーザプログラムシステム2からの要求に応じて、該ユーザプログラムシステム2に対してのデータの送受信に関する制御処理を行う。この転送制御部41は、数値データ受信部41A、演算方法決定部41B、および演算結果送信部41Cを備えている。
【0099】
数値データ受信部41A(入力値受信手段)は、ユーザプログラムシステム2から、例えばライブラリプログラムの実行時に用いられる演算の入力値となる数値データおよびそのデータ形式を受信する処理を行う。
【0100】
なお、数値データ受信部41Aは、ライブラリプログラムの実行に用いないデータをユーザプログラムシステム2から受信してもよい。
【0101】
演算方法決定部41B(演算方法決定手段)は、ユーザプログラムシステム2から送られてきた演算依頼情報を解析することによって、利用するライブラリプログラム、およびその実行順序を決定する処理を行う。
【0102】
演算結果送信部41C(演算結果送信手段)は、ライブラリプログラム実行部42におけるライブラリプログラムの実行結果を、ユーザプログラムシステム2からの要求に応じてユーザプログラムシステム2へ送信する処理を行う。
【0103】
記憶部33は、制御部32における演算処理で用いられるデータを格納するとともに、制御部32のワークメモリとして機能する記憶手段である。なお、記憶部33は、主記憶機能に加えて、補助記憶機能を有するものであってもよい。また、記憶部33は、必ずしもライブラリプログラムシステム3に備えられる必要はなく、外部記憶装置として、書き込み可能かつ読み取り可能な状態でライブラリプログラムシステム3に接続される構成でもよい。
【0104】
この記憶部33は、ライブラリプログラム格納部33A、数値データ格納部33B、および演算結果データ格納部33Cを備えている。
【0105】
ライブラリプログラム格納部33Aは、制御部32において実行されるライブラリプログラムを格納する領域である。数値データ格納部33Bは、数値データ受信部41Aによって受信された数値データおよびそのデータ形式を格納する領域である。演算結果データ格納部33Cは、ライブラリプログラム実行部42によるライブラリプログラムの実行結果を格納する領域である。
【0106】
なお、実際のメモリの利用に際しては、数値データ格納部33Bおよび演算結果データ格納部33Cは、両者が区別されることなく、変数や配列として記憶部33に記憶される。また、ライブラリプログラム演算において一時的に用いられる中間データとしての変数や、数値データに対するディレクトリ構造を示す管理情報なども記憶部33に格納される。
【0107】
(演算処理システムにおける処理の流れ)
次に、上記した演算処理システム1における処理の流れについて、図2および図3を参照しながら以下に説明する。図2は、ユーザプログラムシステム2における処理の流れを示すフローチャートであり、図3は、ライブラリプログラムシステム3における処理の流れを示すフローチャートである。
【0108】
(ユーザプログラムシステムにおける処理の流れ)
まず、図2を参照しながら、ユーザプログラムシステム2における処理の流れについて説明する。まずステップ1(以降、S1のように称する)において、ユーザプログラムシステム2において、ユーザプログラム実行部21がユーザプログラムの実行を開始する。すなわち、例えば入出力部11においてユーザからの所定のユーザプログラムの実行指示が受け付けられると、この情報がユーザプログラム実行部21に伝達される。そして、ユーザプログラム実行部21は、指定されたユーザプログラムを、記憶部14のユーザプログラム格納部14Aから読み出し、該ユーザプログラムの実行を開始する。そして、インタープリタ部22が該ユーザプログラムの読み込みを行い、該ユーザプログラムに記載されている文字列を一般的な手法で解析する。
【0109】
そして、演算処理・制御処理抽出部22Aが、演算文字列を検出した場合において(S2においてYES)、上記検出した演算文字列が、ライブラリプログラムシステム3に対して数値データおよびそのデータ形式を転送することを示すものである場合(S3においてYES)には、数値データ転送部23Aが、該数値データおよびそのデータ形式に関する情報を、ライブラリプログラムシステム3に対して転送するように転送処理部12を制御する。この数値データおよびそのデータ形式に関する情報は、入出力部11によってユーザから入力されるものであってもよいし、実行されているユーザプログラムによって生成されるものであってもよい。これにより、数値データおよびそのデータ形式に関する情報が、転送処理部12によってライブラリプログラムシステム3へ転送される(S4)。また、数値データ転送部23Aは、記憶部14における数値データ格納部14Bに、転送した数値データおよびそのデータ形式に関する情報を格納する。
【0110】
また、上記検出した演算文字列が、ライブラリプログラムシステム3に演算処理を行わせることを示すものである場合(S5においてYES)には、演算依頼部23Bが、演算依頼内容を示す演算依頼情報をライブラリプログラムシステム3に対して転送するように転送処理部12を制御する。この演算依頼情報は、入出力部11によってユーザから入力されるものであってもよいし、実行されているユーザプログラムによって生成されるものであってもよい。これにより、演算依頼情報が、転送処理部12によってライブラリプログラムシステム3へ転送される(S6)。
【0111】
また、上記検出した演算文字列が、ライブラリプログラムシステム3において演算処理が行われた結果を要求することを示すものである場合(S7においてYES)には、演算結果受信部23Cは、結果要求情報を、ライブラリプログラムシステム3に対して転送するように転送処理部12を制御する。なお、転送されただけで演算が行われていない数値データ格納部33Bに格納されている数値データの転送を要求してもよい。この結果要求情報は、入出力部11によってユーザから入力されるものであってもよいし、実行されているユーザプログラムによって生成されるものであってもよい。これにより、結果要求情報が、転送処理部12によってライブラリプログラムシステム3へ転送される。その後、ライブラリプログラムシステム3から演算結果が転送処理部12において受信されると、演算結果受信部23Cは、受信した演算結果を、記憶部14における演算結果データ格納部14Cに格納する(S8)。
【0112】
次に、演算処理・制御処理抽出部22Aが、制御文字列を検出した場合(S9においてYES)には、ライブラリプログラムシステム3に処理を依頼せず、制御処理部22Bが上記検出した制御文字列に応じた制御処理(条件分岐、反復など)を実行する(S10)。
【0113】
次に、入出力処理抽出部22Cが、入出力文字列を検出した場合において(S11においてYES)、上記検出した入出力文字列が、行列やベクトルなどのデータをファイルから読み込む入力処理を示すものである場合(S12においてYES)には、上記検出した入出力文字列を数値データ転送部23Aが扱えるコードに変換し(S13)、その後、数値データ転送部23Aが、該数値データおよびそのデータ形式に関する情報を、ライブラリプログラムシステム3に対して転送するように転送処理部12を制御する。
【0114】
これにより、行列やベクトルなどの入力データに関する情報が、転送処理部12によってライブラリプログラムシステム3へ転送される(S14)。また、数値データ転送部23Aは、記憶部14における数値データ格納部14Bに、転送した数値データおよびそのデータ形式に関する情報を格納する。
【0115】
一方、上記検出した入出力文字列が、演算した結果である行列やベクトルなどのデータをファイルに保存する処理を示すものである場合(S15においてYES)には、上記検出した入出力文字列を演算結果受信部23Cが扱えるコードに変換し(S16)、その後、演算結果受信部23Cが、結果要求情報を、ライブラリプログラムシステム3に対して転送するように転送処理部12を制御する。なお、転送されただけで演算が行われていない数値データ格納部33Bに格納されている数値データの転送を要求してもよい。
【0116】
これにより、結果要求情報が、転送処理部12によってライブラリプログラムシステム3へ転送される。その後、ライブラリプログラムシステム3から演算結果が転送処理部12において受信されると、演算結果受信部23Cは、受信した演算結果を、記憶部14における演算結果データ格納部14Cに格納する(S17)。なお、受信した演算結果を、ユーザプログラム実行部21を介して入出力部11に転送し、ユーザに対して表示・出力してもよい。
【0117】
以上のS2、S9、およびS11のいずれの場合においてもNOである場合には、ユーザプログラム実行部21は、ユーザ定義処理、すなわち、ユーザプログラムにおけるその他の処理を行う(S18)。そして、S19において、ユーザプログラム実行部21は、該ユーザプログラムの実行を完了したか否かを判定する。ユーザプログラムの実行が完了していない場合(S18においてNO)には、S2からの処理に戻る。一方、ユーザプログラムの実行が完了したと判定された場合(S18においてYES)には、ユーザプログラムの処理が終了する。
【0118】
なお、S2、S9、およびS11の処理は、上記の順で行われることに限定されるものではなく、どの順序で行われてもよい。すなわち、S4〜S8、S10、S13およびS14、S16およびS17の処理は、該当するコードが実行される順序で行われればよい。
【0119】
なお、以上のようにユーザプログラムシステム2における処理が進むので、ユーザプログラムシステム2における処理は、ライブラリプログラムシステム3における処理とは非同期に進行する。
【0120】
(ライブラリプログラムシステムにおける処理の流れ)
次に、図3を参照しながら、ライブラリプログラムシステム3における処理の流れについて説明する。まずS21において、数値データ受信部41Aが、ユーザプログラムシステム2から数値データおよびそのデータ形式に関する情報を転送処理部31を介して受信したか否かを判定する。そして、数値データおよびそのデータ形式に関する情報が受信されたと判定された(S21においてYES)場合には、数値データ受信部41Aは、受信した数値データおよびそのデータ形式に関する情報を記憶部33における数値データ格納部33Bに格納する(S22)。
【0121】
次に、演算方法決定部41Bが、ユーザプログラムシステム2から演算依頼情報を転送処理部31を介して受信したか否かを判定する(S23)。そして、演算依頼情報が受信されたと判定された場合(S23においてYES)には、演算方法決定部41Bは、受信した演算依頼情報を解析することによって、利用するライブラリプログラムの種類、およびその実行順序を決定する処理を行う(S24)。
【0122】
次に、ライブラリプログラム実行部42は、演算方法決定部41Bによって決定されたライブラリプログラムの種類およびその実行順序に基づいて、ライブラリプログラムによる演算を実行する(S25)。ここで、ライブラリプログラム実行部42は、記憶部33におけるライブラリプログラム格納部33Aから必要とするライブラリプログラムを読み出すとともに、記憶部33における数値データ格納部33Bから入力値としての数値データおよびそのデータ形式に関する情報を読み出して、演算を実行する。その後、ライブラリプログラム実行部42は、演算結果データを記憶部33における演算結果データ格納部33Cに格納する(S26)。
【0123】
また、演算結果送信部41Cが、ユーザプログラムシステム2から演算結果の送信要求を転送処理部31を介して受信したか否かを判定する(S27)。そして、演算結果の送信要求が受信されたと判定された場合(S27においてYES)には、演算結果送信部41Cは、記憶部33における演算結果データ格納部33Cから演算結果データを読み出し、これを転送処理部31からユーザプログラムシステム2に対して送信する制御を行う。これにより、演算結果がライブラリプログラムシステム3からユーザプログラムシステム2に対して送信される(S28)。なお、数値データ格納部33Bに格納されている数値データに対する送信要求だった場合、演算結果送信部41Cは、記憶部33における数値データ格納部33Bから数値データおよびそのデータ形式を読み出し、これを転送処理部31からユーザプログラムシステム2に対して送信する制御を行うようになっていてもよい。
【0124】
以上のS21、S23、およびS27のいずれの場合においてもNOである場合には、S21からの処理に戻る。
【0125】
なお、S21、S23、およびS27の処理は、上記の順で行われることに限定されるものではなく、どの順序で行われてもよい。すなわち、S22、S24〜S26、およびS28の処理は、該当するコードが実行された順序で行われればよい。
【0126】
なお、以上のようにライブラリプログラムシステム3における処理が進むので、ライブラリプログラムシステム3における処理は、ユーザプログラムシステム2における処理とは非同期に進行する。
【0127】
(システム構成例1)
次に、図4を参照しながら、を演算処理システム1の具体的構成例について説明する。このシステム構成例1は、図4に示すように、ユーザプログラムシステム2およびライブラリプログラムシステム3の両方が、1つのコンピュータ1Aにおいて実行されるものとなっている。
【0128】
コンピュータ1Aは、演算手段としてのCPU(Central Processing Unit)、主記憶手段としてのRAM(Random Access Memory)、および、不揮発性記憶装置としてのROM(Read Only Memory)やハードディスクなどを備えた一般的なコンピュータである。そして、ユーザプログラムシステム2における制御部13の各機能ブロック、および、ライブラリプログラムシステム3における制御部32の各機能ブロックは、CPUがRAMに該当プログラムをハードディスクなどから読み出して実行することによって実現される。また、記憶部14は、RAM、およびハードディスクなどによって実現される。
【0129】
また、ユーザプログラムシステム2における転送処理部12、および、ライブラリプログラムシステム3における転送処理部31は、制御部13によるプログラムと、制御部32によるプログラムとの間でデータの転送処理、すなわちプロセス間通信を行う。また、入出力部11は、コンピュータ1Aが備えるキーボードやマウスなどの入力手段、および、表示手段としてのディスプレイ、印刷手段としてのプリンタなどによって実現される。
【0130】
なお、コンピュータ1Aが複数のプロセッサを有し、並列演算を行うことが可能な構成であってもよい。
【0131】
(システム構成例1における具体的動作例)
次に、システム構成例1における具体的動作例について説明する。ここでの動作例は、次のようなものである。ユーザプログラムシステム2におけるユーザプログラムにおいて、連立1次方程式Ax=bをCG(Conjugate Gradient)法により解くという命令が含まれており、この連立1次方程式Ax=bの演算がライブラリプログラムシステム3において行われる。詳しく説明すると、第1の行列データファイルに係数行列Aが格納され、同様に第2の行列データファイルにベクトルbが格納されている。そして、連立1次方程式Ax=bの解ベクトルxは、第3の行列データファイルに格納されるものとする。なお、上記第1の行列データファイル、第2の行列データファイル、第3の行列データファイルの格納形式は、それぞれ例えばMatrixMarket形式などであるが、これに限定されるものではない。
【0132】
以上の動作例における処理の流れは次のとおりである。まず、ライブラリプログラムシステム3における制御部32が動作可能状態に設定される。次に、ユーザプログラムシステム2における制御部13が、ユーザからの指示入力などに基づいて特定のユーザプログラムの実行を開始する。
【0133】
その後、ユーザプログラムの実行過程において、演算処理の入力値として用いられる数値データおよびそのデータ形式が生成される。本動作例では、数値データおよびそのデータ形式として、上記の係数行列Aおよびベクトルbが生成される。生成された係数行列Aおよびベクトルbは、数値データ格納部14Bに行列データファイルAおよび行列データファイルBとして格納される。
【0134】
その後、ユーザプログラムを読み込んだインタープリタ部22の入出力処理抽出部22Cがユーザプログラムから次のステートメントを抽出する。
load “A”, A
load “B”, b
上記ステートメントは、係数行列Aが格納された行列データファイルA、および、ベクトルbが格納された行列データファイルBを読み込む、という入力処理を示している。なお、「load」という命令は、特にこの文字列に限定されるものではなく、他の文字列によってこの命令を示すようになっていてもよい。
【0135】
上記のステートメントが入出力処理抽出部22Cによって抽出されると、入出力処理部22Dが、読み込んだ行列データファイルAおよび行列データファイルBを転送制御部23が処理可能な数値データおよびそのデータ形式に変換し、転送制御部23に対して該変換後のデータを転送する。
【0136】
そして、数値データ転送部23Aが、入出力処理部22Dから転送された数値データおよびそのデータ形式を、ライブラリプログラムシステム3に対して転送するように転送処理部12を制御する。これにより、行列データファイルAおよび行列データファイルBが、転送処理部12によってライブラリプログラムシステム3へ転送される。
【0137】
ライブラリプログラムシステム3では、数値データ受信部41Aが行列データファイルAおよび行列データファイルBを受信し、これを係数行列Aおよびベクトルbとして数値データ格納部33Bに格納する。
【0138】
次に、インタープリタ部22の演算処理・制御処理抽出部22Aが、ユーザプログラム中の、四則演算などの示す演算文字列を抽出すると、転送制御部23に対し、該抽出した演算文字列により演算される数値データおよび演算内容の情報の転送を指示する。
【0139】
そして、数値データ転送部23Aおよび演算依頼部23Bが、演算処理・制御処理抽出部22Aから転送された数値データおよび演算依頼内容の情報を、ライブラリプログラムシステム3に対して転送するように転送処理部12を制御する。これにより、演算処理を構成する数値データおよび演算依頼内容が、転送処理部12によってライブラリプログラムシステム3へ転送される。
【0140】
なお、ライブラリプログラムシステム3では、演算方法決定部41Bが、上記の演算依頼内容を受信し、受信した演算依頼内容の情報を解析することによって、利用するライブラリプログラムの種類、およびその実行順序を決定する処理を行う。具体的には、演算方法決定部41Bは、受信した演算依頼内容に基づいて、LU分解処理、前進後退代入処理などを行う。そして、演算方法決定部41Bは、例えば、定義されたAをプログラムに合う形に変換したA1(実際にはAをA1にコピー)を割り当てたり、中間変数としてx、IPを割り当てたりする処理を行う。なお、A1、IP、xはライブラリプログラムシステム3においてのみ用いられる変数である。そして、ライブラリプログラム実行部42は、演算方法決定部41Bによって決定された演算に基づいてライブラリプログラムを実行し、解xを導出する。導出された解は演算結果データとして、演算結果データ格納部33Cに格納される。
【0141】
次に、インタープリタ部22の演算処理・制御処理抽出部22Aが、ユーザプログラム中の、条件分岐、反復などなどの示す制御文字列を抽出すると、転送制御部23に対し、該抽出した制御文字列により制御処理の内容を制御処理部22Bに転送する。そして、制御処理部22Bは、上記制御処理の内容に従い、制御処理を実行する。
【0142】
例えば、インタープリタ部22の演算処理・制御処理抽出部22Aは、ユーザプログラムから次のステートメントを抽出する。
if (cond_expr1) {
stmt1;
} else if (cond_expr2) [
stmt2;
} else {
stmt3;
}
上記のステートメントは、条件分岐の制御処理を示している。ここで、cond_expr1およびcond_expr2は、比較演算子から成る条件式を表すものとする。また、stmt1およびstmt2およびstmt3は、任意の文字列とする。上記のステートメントにより、制御処理部22Bは、1)cond_expr1の条件式が満たされている場合はstmt1を実行し、2)cond_expr1の条件式が満たされておらず、かつ、cond_expr2の条件式が満たされている場合はstmt2を実行し、3)cond_expr1の条件式が満たされておらず、かつ、cond_expr2の条件式が満たされていない場合は、stmt3を実行する。なお、「if」という制御文字列は、特にこの文字列に限定されるものではなく、他の文字列によってこの制御を示すようになっていてもよい。
【0143】
また、例えば、インタープリタ部22の演算処理・制御処理抽出部22Aは、ユーザプログラムから次のステートメントを抽出する。
where (cond_expr){
stmt;
}
上記のステートメントは、反復の制御処理を示している。ここで、cond_exprは比較演算子から成る条件式を表すものとする。また、stmtは任意の文字列とする。上記のステートメントにより、制御処理部22Bは、cond_exprの条件式が満たされている限りstmtを実行する。
【0144】
さらに、インタープリタ部22の演算処理・制御処理抽出部22Aは、ユーザプログラムから次のステートメントを抽出してもよい。
continue
上記のステートメントにより、制御処理部22Bは、反復の制御処理を続行する。
【0145】
さらに、インタープリタ部22の演算処理・制御処理抽出部22Aは、ユーザプログラムから次のステートメントを抽出してもよい。
break
上記のステートメントにより、制御処理部22Bは、反復の制御処理を中断する。
【0146】
なお、「while」、「break」、「continue」という制御文字列は、特にこの文字列に限定されるものではなく、他の文字列によってこの制御を示すようになっていてもよい。
【0147】
次に、インタープリタ部22の入出力処理抽出部22Cがユーザプログラムから次のステートメントを抽出する。
save “X”, x
上記のステートメントは、ライブラリプログラムシステム3から、演算結果としての解xを受信し、この解xを行列データファイルXに格納する命令を示している。なお、「save」という命令は、特にこの文字列に限定されるものではなく、他の文字列によってこの命令を示すようになっていてもよい。
【0148】
なお、インタープリタ部22の入出力処理抽出部22Cは次のステートメントを抽出してもよい。
pprint a
上記のステートメントは、ライブラリプログラムシステム3から、演算結果としての式aの値を受信する命令を示している。なお、「pprint」という命令は、特にこの文字列に限定されるものではなく、他の文字列によってこの命令を示すようになっていてもよい。また、上記受信した値は入出力部11に表示・出力されてもよい。
【0149】
上記のステートメントが入出力処理抽出部22Cによって抽出されると、入出力処理部22Dが、転送制御部23が処理可能な命令に変換し、転送制御部23に対して該変換後の命令を転送する。
【0150】
そして、演算結果受信部23Cが、結果要求情報としての上記変換後の命令を、ライブラリプログラムシステム3に対して転送するように転送処理部12を制御する。これにより、結果要求情報が、転送処理部12によってライブラリプログラムシステム3へ転送される。
【0151】
ライブラリプログラムシステム3では、演算結果送信部41Cが上記結果要求情報を受信し、該結果要求情報によって要求された演算結果データを演算結果データ格納部33Cから読み出す。そして、演算結果送信部41Cは、読み出した演算結果データを転送処理部31からユーザプログラムシステム2に対して送信する制御を行う。これにより、演算結果がライブラリプログラムシステム3からユーザプログラムシステム2に対して送信される。なお、結果要求情報が受信された時点で、ライブラリプログラムシステム3において演算が完了していない場合には、演算が完了するまで演算結果データの送信は行われない。
【0152】
ユーザプログラムシステム2では、演算結果受信部23Cが、演算結果データをライブラリプログラムシステム3から受信すると、演算結果データとしての解xを行列データファイルとして演算結果データ格納部14Cに格納する。これにより、ライブラリプログラムシステム3を利用した演算が完了することになる。
【0153】
その後、ユーザプログラムの実行が完了すると、ライブラリプログラムシステム3において、数値データ格納部33Bおよび演算結果データ格納部33Cに格納されているデータがクリアされ、制御部32の動作が停止する。なお、ライブラリプログラムシステム3におけるデータのクリアおよび制御部32における動作の停止は、ユーザプログラムがライブラリプログラムシステム3を利用する必要がなくなった時点で行われてもよい。
【0154】
また、新たなユーザプログラムがユーザプログラムシステム2において実行されてもよい。このとき、ライブラリプログラムシステム3を経由して、前回のユーザプログラムから新たなユーザプログラムにデータの受け渡しが行われてもよい。
【0155】
(システム構成例2)
次に、図5を参照しながら、演算処理システム1の他の具体的構成例について説明する。このシステム構成例2は、図5に示すように、ユーザプログラムシステム2が実行されるコンピュータ1Bと、ライブラリプログラムシステム3が実行されるコンピュータ1Cとが通信ネットワークNを介して接続された構成となっている。
【0156】
コンピュータ1Bおよびコンピュータ1Cは、演算手段としてのCPU、主記憶手段としてのRAM、および、不揮発性記憶装置としてのROMやハードディスクなどを備えた一般的なコンピュータである。そして、ユーザプログラムシステム2における制御部13の各機能ブロック、および、ライブラリプログラムシステム3における制御部32の各機能ブロックは、CPUがRAMに該当プログラムをハードディスクなどから読み出して実行することによって実現される。また、記憶部14は、RAM、およびハードディスクなどによって実現される。
【0157】
また、ユーザプログラムシステム2における転送処理部12、および、ライブラリプログラムシステム3における転送処理部31は、通信ネットワークNを介しての通信を行う際の通信インターフェースとして機能することになる。また、入出力部11は、コンピュータ1Bが備えるキーボードやマウスなどの入力手段、および、表示手段としてのディスプレイ、印刷手段としてのプリンタなどによって実現される。
【0158】
なお、コンピュータ1Bおよびコンピュータ1Cがそれぞれ複数のプロセッサを有し、並列演算を行うことが可能な構成であってもよい。
【0159】
(システム構成例2における具体的動作例)
システム構成例2は、システム構成例1と比較して、ユーザプログラムシステム2とライブラリプログラムシステム3とがそれぞれ異なるコンピュータ上で動作する点が異なっているのみであり、基本的な動作はほぼ同様となっている。すなわち、システム構成例2における具体的動作例としては、上記したシステム構成例1における具体的動作例とほぼ同様である。異なる点としては、転送処理部12と転送処理部31との間のデータ転送が、通信ネットワークNを介して行われる点である。
【0160】
なお、ライブラリプログラムシステム3が実行されるコンピュータは1台に限られない。2台以上のコンピュータにてライブラリプログラムシステム3が実行されてもよい。
【0161】
また、上記では、基本的に、ユーザプログラムシステム2において実行されるユーザプログラムは、逐次型のプログラム、すなわち、シリアルに処理が行われるプログラムである場合を想定しているが、ユーザプログラムが並列型のプログラムであっても構わない。
【0162】
(付記事項)
本発明は上述した実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【産業上の利用可能性】
【0163】
本発明に係る演算処理システムは、例えば科学技術計算を行う際に、既存のライブラリプログラムを利用した演算を行うなどの用途に適用することが可能である。
【図面の簡単な説明】
【0164】
【図1】本発明の一実施形態に係る演算処理システムの概略構成を示すブロック図である。
【図2】図1に示した演算処理システムに含まれるユーザプログラムシステムにおける処理の流れを示すフローチャートである。
【図3】図1に示した演算処理システムに含まれるライブラリプログラムシステムにおける処理の流れを示すフローチャートである。
【図4】図1に示した演算処理システムに含まれるユーザプログラムシステムおよびライブラリプログラムシステムの両方が、1つのコンピュータにおいて実行される構成例を示すブロック図である。
【図5】図1に示した演算処理システムに含まれるユーザプログラムシステムが実行されるコンピュータと、ライブラリプログラムシステムが実行されるコンピュータとが通信ネットワークを介して接続された構成例を示すブロック図である。
【図6】従来の演算処理システムの概略構成を示すブロック図である。
【符号の説明】
【0165】
1 演算処理システム
2 ユーザプログラムシステム
3 ライブラリプログラムシステム
13 制御部
14 記憶部
14A ユーザプログラム格納部
14B 数値データ格納部
14C 演算結果データ格納部
14D 文字列格納部
21 ユーザプログラム実行部
22 インタープリタ部
22A 演算処理・制御処理抽出部(演算制御処理抽出手段)
22B 制御処理部(制御処理実行手段)
22C 入出力処理抽出部(入出力処理抽出手段)
22D 入出力処理部(入出力処理変換手段)
23 転送制御部
23A 数値データ転送部(入力値転送手段)
23B 演算依頼部(演算依頼手段)
23C 演算結果受信部(演算結果受信手段)
32 制御部
33 記憶部
33A ライブラリプログラム格納部
33B 数値データ格納部
33C 演算結果データ格納部
41 転送制御部
41A 数値データ受信部(入力値受信手段)
41B 演算方法決定部(演算方法決定手段)
41C 演算結果送信部(演算結果送信手段)
42 ライブラリプログラム実行部

【特許請求の範囲】
【請求項1】
ユーザプログラムを実行するユーザプログラムシステムと、上記ユーザプログラムにおいて利用されるライブラリプログラムを実行するライブラリプログラムシステムとを備えた演算処理システムにおいて、
上記ユーザプログラムシステムが、
上記ライブラリプログラムシステムを利用して実行する演算処理および上記ユーザプログラムシステムにて実行する制御処理を含む上記ユーザプログラムを解析し、上記演算処理を表す演算文字列および上記制御処理を表す制御文字列を抽出する演算制御処理抽出手段と、
上記抽出した演算文字列に基づいて、上記演算処理における演算の入力値に関する入力値情報を上記ライブラリプログラムシステムに転送する処理を行う入力値転送手段と、
上記抽出した演算文字列に基づいて、上記演算処理における演算の内容に関する演算依頼情報を該ライブラリプログラムシステムに転送する処理を行う演算依頼手段と、
上記抽出した演算文字列に基づいて、上記ライブラリプログラムシステムにおけるライブラリプログラムの実行結果を該ライブラリプログラムシステムから受信する処理を行う演算結果受信手段と、
上記抽出した制御文字列に基づいて、上記制御処理を実行する制御処理実行手段とを備え、
上記ライブラリプログラムシステムが、
上記ユーザプログラムシステムから送られた、上記入力値情報を受信する処理を行う入力値受信手段と、
上記ユーザプログラムシステムから送られた、上記演算依頼情報を解析することによって、利用するライブラリプログラムの種類、およびその実行順序を決定する処理を行う演算方法決定手段と、
上記ライブラリプログラムの実行結果を上記ユーザプログラムシステムへ送信する処理を行う演算結果送信手段とを備えていることを特徴とする演算処理システム。
【請求項2】
上記ユーザプログラムシステムが、
上記ライブラリプログラムシステムを利用して実行する入出力処理を含む上記ユーザプログラムを解析し、上記入出力処理を表す入出力文字列を抽出しする入出力処理抽出手段と、
上記入出力処理における入出力値に関する情報を上記ライブラリプログラムシステムにて処理可能な形式に変換する入出力処理変換手段とをさらに備え、
上記入力値転送手段が、上記変換後の上記入出力値に関する情報を上記入力値情報として上記ライブラリプログラムシステムに転送する処理を行うことを特徴とする請求項1に記載の演算処理システム。
【請求項3】
上記演算結果送信手段が、上記ライブラリプログラムシステムを利用して実行する入出力処理における出力値に関する出力値情報を上記実行結果として送信する処理を行い、
上記演算結果受信手段が、上記ライブラリプログラムシステムから上記出力値情報を上記実行結果として受信する処理を行うことを特徴とする請求項1に記載の演算処理システム。
【請求項4】
上記入力値転送手段が、上記入力値情報として、数値データおよびそのデータ形式を転送することを特徴とする請求項1に記載の演算処理システム。
【請求項5】
上記入力値受信手段が、受信した上記入力値情報を記憶部に格納するとともに、
上記演算方法決定手段が、ライブラリプログラムの実行の際に、上記記憶部に格納されている入力値情報のいずれを用いるかを決定することを特徴とする請求項1に記載の演算処理システム。
【請求項6】
上記演算依頼手段が、上記演算依頼情報として、数学の演算式そのものを表す文字列を転送することを特徴とする請求項1に記載の演算処理システム。
【請求項7】
上記ユーザプログラムシステム、および上記ライブラリプログラムシステムが、同一のコンピュータにおいて動作することを特徴とする請求項1に記載の演算処理システム。
【請求項8】
上記ユーザプログラムシステムが第1のコンピュータにおいて動作するとともに、上記ライブラリプログラムシステムが、上記第1のコンピュータと通信接続された別のコンピュータにおいて動作することを特徴とする請求項1に記載の演算処理システム。
【請求項9】
ユーザプログラムを実行するユーザプログラムシステムと、上記ユーザプログラムにおいて利用されるライブラリプログラムを実行するライブラリプログラムシステムとを備えた演算処理システムにおける演算処理方法において、
上記ユーザプログラムシステムにおける、
上記ライブラリプログラムシステムを利用して実行する演算処理および上記ユーザプログラムシステムにて実行する制御処理を含む上記ユーザプログラムを解析し、上記演算処理を表す演算文字列および上記制御処理を表す制御文字列を抽出する演算制御処理抽出ステップと、
上記抽出した演算文字列に基づいて、上記演算処理における演算の入力値に関する入力値情報を上記ライブラリプログラムシステムに転送する処理を行う入力値転送ステップと、
上記抽出した演算文字列に基づいて、上記演算処理における演算の内容に関する演算依頼情報を該ライブラリプログラムシステムに転送する処理を行う演算依頼ステップと、
上記抽出した演算文字列に基づいて、上記ライブラリプログラムシステムにおけるライブラリプログラムの実行結果を該ライブラリプログラムシステムから受信する処理を行う演算結果受信ステップと、
上記抽出した制御文字列に基づいて、上記制御処理を実行する制御処理実行ステップと、
上記ライブラリプログラムシステムにおける、
上記ユーザプログラムシステムから送られた、上記入力値情報を受信する処理を行う入力値受信ステップと、
上記ユーザプログラムシステムから送られた、上記演算依頼情報を解析することによって、利用するライブラリプログラムの種類、およびその実行順序を決定する処理を行う演算方法決定ステップと、
上記ライブラリプログラムの実行結果を上記ユーザプログラムシステムへ送信する処理を行う演算結果送信ステップとを含んでいることを特徴とする演算処理方法。
【請求項10】
請求項1に記載の演算処理システムが備えるユーザプログラムシステム。
【請求項11】
請求項1に記載の演算処理システムが備えるライブラリプログラムシステム。
【請求項12】
請求項10に記載のユーザプログラムシステムを動作させるプログラムであって、コンピュータを上記の各手段として機能させるためのプログラム。
【請求項13】
請求項11に記載のライブラリプログラムシステムを動作させるプログラムであって、コンピュータを上記の各手段として機能させるためのプログラム。
【請求項14】
請求項12または13に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2009−3555(P2009−3555A)
【公開日】平成21年1月8日(2009.1.8)
【国際特許分類】
【出願番号】特願2007−161627(P2007−161627)
【出願日】平成19年6月19日(2007.6.19)
【出願人】(503360115)独立行政法人科学技術振興機構 (1,734)
【Fターム(参考)】