(57)【特許請求の範囲】
【請求項１】
ユーザプログラムを実行するユーザプログラムシステムと、上記ユーザプログラムにおいて利用されるライブラリプログラムを実行するライブラリプログラムシステムとを備えた演算処理システムにおいて、
上記ユーザプログラムシステムが、
上記ライブラリプログラムシステムを利用して実行する演算処理および上記ユーザプログラムシステムにて上記演算処理の実行を制御する制御処理を含む上記ユーザプログラムを解析し、上記演算処理を表す演算文字列および上記演算処理の実行を制御するための分岐命令を表す制御文字列を抽出する、インタープリタの一部である演算制御処理抽出手段と、
上記抽出した演算文字列に基づいて、上記演算処理における演算の入力値に関する入力値情報を上記ライブラリプログラムシステムに転送する処理を行う入力値転送手段と、
上記抽出した演算文字列に基づいて、上記演算処理における演算の内容に関する演算依頼情報を該ライブラリプログラムシステムに転送する処理を行う演算依頼手段と、
上記抽出した演算文字列に基づいて、上記ライブラリプログラムシステムにおけるライブラリプログラムの実行結果を該ライブラリプログラムシステムから受信する処理を行う演算結果受信手段と、
上記抽出した制御文字列に基づいて、上記ライブラリプログラムを利用することなく上記制御処理を実行する、上記インタープリタの一部である制御処理実行手段と、
上記ライブラリプログラムシステムを利用して実行する入出力処理を含む上記ユーザプログラムを解析し、上記入出力処理を表す入出力文字列を抽出する入出力処理抽出手段と、
上記入出力処理における入出力値に関する情報を上記ライブラリプログラムシステムにて処理可能な形式に変換する入出力処理変換手段とを備え、
上記入力値転送手段が、上記変換後の上記入出力値に関する情報を上記入力値情報として上記ライブラリプログラムシステムに転送する処理を行い、
上記ライブラリプログラムシステムが、
上記ユーザプログラムシステムから送られた、上記入力値情報を受信する処理を行う入力値受信手段と、
上記ユーザプログラムシステムから送られた、上記演算依頼情報を解析することによって、利用するライブラリプログラムの種類、およびその実行順序を決定する処理を行う演算方法決定手段と、
上記ライブラリプログラムの実行結果を上記ユーザプログラムシステムへ送信する処理を行う演算結果送信手段とを備えていることを特徴とする演算処理システム。
【請求項２】
上記演算結果送信手段が、上記ライブラリプログラムシステムを利用して実行する入出力処理における出力値に関する出力値情報を上記実行結果として送信する処理を行い、
上記演算結果受信手段が、上記ライブラリプログラムシステムから上記出力値情報を上記実行結果として受信する処理を行うことを特徴とする請求項１に記載の演算処理システム。
【請求項３】
上記入力値転送手段が、上記入力値情報として、数値データおよびそのデータ形式を転送することを特徴とする請求項１に記載の演算処理システム。
【請求項４】
上記入力値受信手段が、受信した上記入力値情報を記憶部に格納するとともに、
上記演算方法決定手段が、ライブラリプログラムの実行の際に、上記記憶部に格納されている入力値情報のいずれを用いるかを決定することを特徴とする請求項１に記載の演算処理システム。
【請求項５】
上記演算依頼手段が、上記演算依頼情報として、数学の演算式そのものを表す文字列を転送することを特徴とする請求項１に記載の演算処理システム。
【請求項６】
上記ユーザプログラムシステム、および上記ライブラリプログラムシステムが、同一のコンピュータにおいて動作することを特徴とする請求項１に記載の演算処理システム。
【請求項７】
上記ユーザプログラムシステムが第１のコンピュータにおいて動作するとともに、上記ライブラリプログラムシステムが、上記第１のコンピュータと通信接続された別のコンピュータにおいて動作することを特徴とする請求項１に記載の演算処理システム。
【請求項８】
ユーザプログラムを実行するユーザプログラムシステムと、上記ユーザプログラムにおいて利用されるライブラリプログラムを実行するライブラリプログラムシステムとを備えた演算処理システムにおける演算処理方法において、
上記ユーザプログラムシステムにおける、
上記ライブラリプログラムシステムを利用して実行する演算処理および上記ユーザプログラムシステムにて上記演算処理の実行を制御する制御処理を含む上記ユーザプログラムを解析し、上記演算処理を表す演算文字列および上記演算処理の実行を制御するための分岐命令を表す制御文字列を抽出する、インタープリタにより実行される演算制御処理抽出ステップと、
上記抽出した演算文字列に基づいて、上記演算処理における演算の入力値に関する入力値情報を上記ライブラリプログラムシステムに転送する処理を行う入力値転送ステップと、
上記抽出した演算文字列に基づいて、上記演算処理における演算の内容に関する演算依頼情報を該ライブラリプログラムシステムに転送する処理を行う演算依頼ステップと、
上記抽出した演算文字列に基づいて、上記ライブラリプログラムシステムにおけるライブラリプログラムの実行結果を該ライブラリプログラムシステムから受信する処理を行う演算結果受信ステップと、
上記抽出した制御文字列に基づいて、上記ライブラリプログラムを利用することなく上記制御処理を実行する、上記インタープリタにより実行される制御処理実行ステップと、
上記ライブラリプログラムシステムを利用して実行する入出力処理を含む上記ユーザプログラムを解析し、上記入出力処理を表す入出力文字列を抽出する入出力処理抽出ステップと、
上記入出力処理における入出力値に関する情報を上記ライブラリプログラムシステムにて処理可能な形式に変換する入出力処理変換ステップとを含み、
上記入力値転送ステップにて、上記変換後の上記入出力値に関する情報を上記入力値情報として上記ライブラリプログラムシステムに転送する処理を行い、
上記ライブラリプログラムシステムにおける、
上記ユーザプログラムシステムから送られた、上記入力値情報を受信する処理を行う入力値受信ステップと、
上記ユーザプログラムシステムから送られた、上記演算依頼情報を解析することによって、利用するライブラリプログラムの種類、およびその実行順序を決定する処理を行う演算方法決定ステップと、
上記ライブラリプログラムの実行結果を上記ユーザプログラムシステムへ送信する処理を行う演算結果送信ステップとを含んでいることを特徴とする演算処理方法。
【請求項９】
請求項１に記載の演算処理システムが備えるユーザプログラムシステムを動作させるプログラムであって、コンピュータを上記ユーザプログラムシステムが備える各手段として機能させるためのプログラム。
【請求項１０】
請求項１に記載の演算処理システムが備えるライブラリプログラムシステムを動作させるプログラムであって、コンピュータを上記ライブラリプログラムシステムが備える各手段として機能させるためのプログラム。
【請求項１１】
請求項９または１０に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザプログラムを実行するユーザプログラムシステムと、上記ユーザプログラムにおいて利用されるライブラリプログラムを実行するライブラリプログラムシステムとを備えた演算処理システムに関するものである。
【背景技術】
【０００２】
従来、科学技術計算等の複雑かつ膨大な演算を行う場合などに、汎用の数値計算ライブラリの利用が広く行われている。汎用の数値計算ライブラリとは、例えば連立一次方程式を解く、行列の固有値を求める、スプライン補間する、微分方程式を解くなど、数値計算法のサブルーチン集のことである。
【０００３】
数値計算ライブラリを利用した演算は、基本的には、ユーザが生成し、利用するユーザプログラムが実行されるユーザプログラムシステムと、ライブラリプログラムが実行されるライブラリプログラムシステムとからなる演算処理システムによって実現される。ユーザは、ユーザプログラム中に、ライブラリプログラムの実行に関する命令を含めることにより、ライブラリプログラムを利用することになる。
【０００４】
以上のように、数値計算ライブラリを利用することによって、ユーザは、複雑な数値解析プログラムを自分で作成する必要がなくなる。よって、科学技術計算を行う上でのユーザのプログラミングの負担を軽減することができる。
【０００５】
次に、従来の演算処理システムを用いて、例えば連立１次方程式Ａｘ＝ｂを解く場合について説明する。この場合、ユーザプログラムは次のような命令列となる。
REAL *8 A(LDA,N),B(N)
（データ生成）
計算：ライブラリコール
CALL LU(LDA,N,A,IERR)
CALL SOLVE(LDA,N,A,B,IERR)
（結果の利用）
END
ここで、Aは２次元配列Ａに格納された行列であり、bは１次元配列Ｂに格納されたベクトルであるものとしている。
【０００６】
上記のように、ユーザプログラムは、ライブラリプログラムの実行命令ごとにデータを指定するようになっている。すなわち、ライブラリプログラムの選択、使用する順番、データ形式の選択、および中間結果などのデータの管理のすべてについてユーザプログラムが責任を負わなければならない。
【０００７】
また、ライブラリプログラムシステムにおけるライブラリプログラムが改良されたり新たに追加されたりした場合、ユーザプログラムのユーザは、これを考慮して、ユーザプログラムの内容を変更する必要が生じる。
【０００８】
また、ライブラリプログラムの実行命令には、データの形式についての指定も含まれているので、入力値を変更したい場合には、入力値を変更するだけでなく、データの形式に応じて実行命令自体も変更する必要が生じる。
【０００９】
そこで、ユーザプログラムのユーザが、ライブラリプログラムシステムにおける具体的な処理を意識することなく、より容易にライブラリプログラムを利用することを可能とする演算処理システムおよび演算手法が開示されている（特許文献４参照）。
【００１０】
特許文献４に開示されている演算処理システムについて、図６に基づいて概略を説明すると以下の通りである。
【００１１】
図６は、上記開示されている演算処理システム１０１の概略構成を示すブロック図である。同図に示すように、演算処理システム１０１は、ユーザプログラムシステム１０２、およびライブラリプログラムシステム１０３を備えた構成となっている。
【００１２】
ユーザプログラムシステム１０２は、ユーザが作成し、利用するユーザプログラムを実行するシステムである。このユーザプログラムシステム１０２は、入出力部１１１、転送処理部１１２、演算処理部１１３、および記憶部１１４を備えている。
【００１３】
入出力部１１１は、ユーザからの入力を受け付けるとともに、演算処理部１１３による演算結果をユーザに対して表示・出力するものである。転送処理部１１２は、ライブラリプログラムシステム１０３との間でのデータの送受信を行うものである。
【００１４】
演算処理部１１３は、ユーザプログラムの演算処理を行うものである。この演算処理部１１３は、ユーザプログラム実行部１２１、および転送制御部１２２を備えている。
【００１５】
ユーザプログラム実行部１２１は、記憶部１１４に記憶されているユーザプログラムを読み出して実行するものである。転送制御部１２２は、ユーザプログラム実行部１２１において実行されているユーザプログラムが、ライブラリプログラムシステム１０３に格納されているライブラリプログラムを利用する場合に、ライブラリプログラムシステム１０３に対してのデータの送受信に関する制御処理を行うものである。この転送制御部１２２は、数値データ転送部１２２Ａ、演算依頼部１２２Ｂ、および演算結果受信部１２２Ｃを備えている。
【００１６】
数値データ転送部１２２Ａは、ライブラリプログラムシステム１０３に演算処理を実行させる際に、演算の入力値となる数値データおよびそのデータ形式をライブラリプログラムシステム１０３に転送する処理を行う。演算依頼部１２２Ｂは、ライブラリプログラムシステム１０３において行わせる演算内容の情報をライブラリプログラムシステム１０３に転送する処理を行う。この演算依頼情報は、特定のライブラリプログラムの実行命令ではなく、数学の演算式そのものを表す文字列を含んでいる。演算結果受信部１２２Ｃは、ライブラリプログラムシステム１０３におけるライブラリプログラムの実行結果をライブラリプログラムシステム１０３に対して要求するとともに、該実行結果をライブラリプログラムシステム１０３から受信する処理を行う。
【００１７】
記憶部１１４は、演算処理部１１３における演算処理で用いられるデータを格納するとともに、演算処理部１１３のワークメモリとして機能する記憶手段である。この記憶部１４は、ユーザプログラム格納部１４Ａ、数値データ格納部１４Ｂ、および演算結果データ格納部１４Ｃを備えている。ユーザプログラム格納部１４Ａは、演算処理部１３において実行されるユーザプログラムを格納する領域である。数値データ格納部１４Ｂは、数値データ転送部２２Ａによって転送される数値データおよびそのデータ形式を格納する領域である。演算結果データ格納部１４Ｃは、演算結果受信部２２Ｃによって受信された実行結果を格納する領域である。なお、実際のメモリの利用に際しては、数値データ格納部１４Ｂおよび演算結果データ格納部１４Ｃは、両者が区別されることなく、変数や配列として記憶部１４に記憶される。また、ライブラリプログラム演算に関係しないその他の演算に必要とされる数値データなども記憶部１４に格納される。
【００１８】
一方、ライブラリプログラムシステム１０３は、ユーザプログラムシステム１０２からの依頼に応じて、ライブラリプログラムを実行するシステムである。このライブラリプログラムシステム１０３は、転送処理部１３１、演算処理部１３２、および記憶部１３３を備えている。
【００１９】
転送処理部１３１は、ユーザプログラムシステム１０２との間でのデータの送受信を行うものである。
【００２０】
演算処理部１３２は、ライブラリプログラムの演算処理を行う。この演算処理部１３２は、ライブラリプログラム実行部１４２、および転送制御部１４１を備えている。
【００２１】
ライブラリプログラム実行部１４２は、記憶部１３３に記憶されているライブラリプログラムを読み出して実行する。転送制御部１４１は、ユーザプログラムシステム１０２において実行されているユーザプログラムが、ライブラリプログラムシステム１０３による処理を利用するものである場合に、ユーザプログラムシステム１０２からの要求に応じて、該ユーザプログラムシステム１０２に対してのデータの送受信に関する制御処理を行う。この転送制御部１４１は、数値データ受信部１４１Ａ、演算方法決定部１４１Ｂ、および演算結果送信部１４１Ｃを備えている。
【００２２】
数値データ受信部１４１Ａは、ユーザプログラムシステム１０２から、例えばライブラリプログラムの実行時に用いられる演算の入力値となる数値データおよびそのデータ形式を受信する処理を行う。
【００２３】
演算方法決定部１４１Ｂは、ユーザプログラムシステム１０２から送られてきた演算依頼情報を解析することによって、利用するライブラリプログラム、およびその実行順序を決定する処理を行う。演算結果送信部１４１Ｃは、ライブラリプログラム実行部１４２におけるライブラリプログラムの実行結果を、ユーザプログラムシステム１０２からの要求に応じてユーザプログラムシステム１０２へ送信する処理を行う。
【００２４】
記憶部１３３は、演算処理部１３２における演算処理で用いられるデータを格納するとともに、演算処理部１３２のワークメモリとして機能する記憶手段である。
【００２５】
この記憶部３３は、ライブラリプログラム格納部３３Ａ、数値データ格納部３３Ｂ、および演算結果データ格納部３３Ｃを備えている。ライブラリプログラム格納部３３Ａは、演算処理部３２において実行されるライブラリプログラムを格納する領域である。数値データ格納部３３Ｂは、数値データ転送部４１Ａによって受信された数値データおよびそのデータ形式を格納する領域である。演算結果データ格納部３３Ｃは、ライブラリプログラム実行部４２によるライブラリプログラムの実行結果を格納する領域である。なお、実際のメモリの利用に際しては、数値データ格納部３３Ｂおよび演算結果データ格納部３３Ｃは、両者が区別されることなく、変数や配列として記憶部３３に記憶される。また、ライブラリプログラム演算において一時的に用いられる中間データとしての変数や、数値データに対するディレクトリ構造を示す管理情報なども記憶部３３に格納される。
【００２６】
次に、演算処理システム１０１における動作例について説明する。ここでは、ユーザプログラムシステム１０２におけるユーザプログラムにおいて、連立１次方程式Ａｘ＝ｂを解くという命令が含まれており、この連立１次方程式Ａｘ＝ｂの演算がライブラリプログラムシステム１０３において行われる例を挙げて説明する。
【００２７】
ここで、Ａは係数行列であり、倍精度実数型の２次元配列に格納されるものとする。また、ｂはベクトルであり、倍精度実数型の１次元配列に格納されるものとする。また、ｘは解ベクトルであり、倍精度実数型の１次元配列に格納されるものとする。そして、係数行列Ａおよびベクトルｂは、ユーザプログラムの実行過程においてユーザプログラム実行部１２１により生成され、数値データ格納部１１４Ｂに配列A1および配列b1として格納されるものとする。
【００２８】
まず、ユーザプログラムがユーザからの指示入力などに基づいて実行され、ユーザプログラム実行部１２１が、ユーザプログラムにおける次のステートメントを実行するものとする。
SILC_PUT('Ａ',&A1)
SILC_PUT('ｂ',&b1)
上記ステートメントは、ライブラリプログラムシステム１０３に対して、係数行列Ａが格納された配列A1、および、ベクトルｂが格納された配列b1を送信する、という命令を示している。上記のステートメントがユーザプログラム実行部１２１によって実行されると、数値データ転送部１２２Ａは、配列A1および配列b1を、ライブラリプログラムシステム１０３に対して転送するように転送処理部１１２を制御する。これにより、配列A1および配列b1が、転送処理部１１２によってライブラリプログラムシステム１０３へ転送される。ライブラリプログラムシステム１０３では、数値データ受信部１４１Ａが配列A1および配列b1を受信し、これを係数行列Ａおよびベクトルｂとして数値データ格納部１３３Ｂに格納する。
【００２９】
次に、ユーザプログラム実行部１２１は、ユーザプログラムにおける次のステートメントを実行するものとする。
SILC_EXEC('ｘ=Ａ\ｂ')
上記のステートメントは、ライブラリプログラムシステム１０３に対して、演算依頼情報として、連立１次方程式Ａｘ＝ｂを解くことを指示する命令を示している。この命令によって、ライブラリプログラムシステム３において演算が実行される。
【００３０】
その後、ユーザプログラム実行部１２１は、ユーザプログラムにおける次のステートメントを実行するものとする。
SILC_GET(&x,'ｘ')
上記のステートメントは、ライブラリプログラムシステム１０３から、演算結果としての解ベクトルｘを受信する命令を示している。
【００３１】
上記のステートメントが実行されると、演算結果受信部１２２Ｃは、結果要求情報としての上記ステートメントを、ライブラリプログラムシステム１０３に対して転送するように転送処理部１１２を制御する。これにより、結果要求情報が、転送処理部１１２によってライブラリプログラムシステム１０３へ転送される。演算結果受信部１２２Ｃが、演算結果データをライブラリプログラムシステム１０３から受信すると、演算結果データとしての解ベクトルｘを演算結果データ格納部１１４Ｃに格納する。これにより、ライブラリプログラムシステム１０３を利用した演算が完了する。
【００３２】
以上のように、特許文献４に開示されている演算処理システムによれば、入力値情報の転送処理、演算内容の情報の転送処理、および演算結果の転送処理がそれぞれ別々に行われるので、ユーザプログラムを、各処理に関する命令をそれぞれ分離した状態で構成することができる。したがって、ユーザプログラムを細分化することが可能となるので、入力値の変更や演算内容の変更などをより容易に行うことが可能となる。
【００３３】
さらに、上記演算処理システムによれば、ユーザプログラムシステム側では、数学の演算式そのものを表す文字列をライブラリプログラムシステムに対して転送すればよいので、演算式をどのように解くべきかなどを考慮する必要がない。
【００３４】
さらに、上記演算処理システムによれば、ライブラリプログラムシステムにおいて実行される演算に関しては、ユーザプログラムシステムは関与する必要がないので、ユーザプログラムシステムにおけるユーザプログラムのサイズを小さくすることが可能となるとともに、ユーザプログラムシステムにおけるメモリ使用量も小さくすることが可能となる。
【特許文献１】特開平９−１２８３５２号公報（１９９７年５月１６日公開）
【特許文献２】特開平１１−３９２７１号公報（１９９９年２月１２日公開）
【特許文献３】米国特許出願公開第２００５／０１７２２５９号明細書（２００５年８月４日公開）
【特許文献４】国際公開第２００６／０５１９０２パンフレット（公開日：平成１８年(２００６)５月１８日）
【発明の開示】
【発明が解決しようとする課題】
【００３５】
しかしながら、特許文献４に開示されている演算処理システムまたは演算処理手法において、条件分岐や反復などの制御構文を処理する場合は、ユーザプログラムを作成するユーザが、あらかじめ上記制御を含む処理が記述された関数を定義し、該定義された関数をライブラリプログラムシステムに渡しておく必要があった。そのため、ユーザプログラムを作成するユーザが、上記制御構文を含む任意の計算処理をユーザプログラムにて記述することができないという問題があった。
【００３６】
本発明は、上記の問題点に鑑みてなされたものであり、その目的は、ユーザが、制御処理を含む任意の計算処理を、計算環境に依存しないユーザプログラムに記述することを可能とし、より容易にライブラリプログラムを利用することができる演算処理システム、演算処理方法、ユーザプログラムシステム、ライブラリプログラムシステム、プログラム、および、プログラムを記録したコンピュータ読み取り可能な記録媒体を提供することにある。
【課題を解決するための手段】
【００３７】
上記課題を解決するために、本発明に係る演算処理システムは、ユーザプログラムを実行するユーザプログラムシステムと、上記ユーザプログラムにおいて利用されるライブラリプログラムを実行するライブラリプログラムシステムとを備えた演算処理システムにおいて、上記ユーザプログラムシステムが、上記ライブラリプログラムシステムを利用して実行する演算処理および上記ユーザプログラムシステムにて実行する制御処理を含む上記ユーザプログラムを解析し、上記演算処理を表す演算文字列および上記制御処理を表す制御文字列を抽出する演算制御処理抽出手段と、上記抽出した演算文字列に基づいて、上記演算処理における演算の入力値に関する入力値情報を上記ライブラリプログラムシステムに転送する処理を行う入力値転送手段と、上記抽出した演算文字列に基づいて、上記演算処理における演算の内容に関する演算依頼情報を該ライブラリプログラムシステムに転送する処理を行う演算依頼手段と、上記抽出した演算文字列に基づいて、上記ライブラリプログラムシステムにおけるライブラリプログラムの実行結果を該ライブラリプログラムシステムから受信する処理を行う演算結果受信手段と、上記抽出した制御文字列に基づいて、上記制御処理を実行する制御処理実行手段とを備え、上記ライブラリプログラムシステムが、上記ユーザプログラムシステムから送られた、上記入力値情報を受信する処理を行う入力値受信手段と、上記ユーザプログラムシステムから送られた、上記演算依頼情報を解析することによって、利用するライブラリプログラムの種類、およびその実行順序を決定する処理を行う演算方法決定手段と、上記ライブラリプログラムの実行結果を上記ユーザプログラムシステムへ送信する処理を行う演算結果送信手段とを備えていることを特徴としている。
【００３８】
また、本発明に係る演算処理方法は、ユーザプログラムを実行するユーザプログラムシステムと、上記ユーザプログラムにおいて利用されるライブラリプログラムを実行するライブラリプログラムシステムとを備えた演算処理システムにおける演算処理方法において、上記ユーザプログラムシステムにおける、上記ライブラリプログラムシステムを利用して実行する演算処理および上記ユーザプログラムシステムにて実行する制御処理を含む上記ユーザプログラムを解析し、上記演算処理を表す演算文字列および上記制御処理を表す制御文字列を抽出する演算制御処理抽出ステップと、上記抽出した演算文字列に基づいて、上記演算処理における演算の入力値に関する入力値情報を上記ライブラリプログラムシステムに転送する処理を行う入力値転送ステップと、上記抽出した演算文字列に基づいて、上記演算処理における演算の内容に関する演算依頼情報を該ライブラリプログラムシステムに転送する処理を行う演算依頼ステップと、上記抽出した演算文字列に基づいて、上記ライブラリプログラムシステムにおけるライブラリプログラムの実行結果を該ライブラリプログラムシステムから受信する処理を行う演算結果受信ステップと、上記抽出した制御文字列に基づいて、上記制御処理を実行する制御処理実行ステップと、上記ライブラリプログラムシステムにおける、上記ユーザプログラムシステムから送られた、上記入力値情報を受信する処理を行う入力値受信ステップと、上記ユーザプログラムシステムから送られた、上記演算依頼情報を解析することによって、利用するライブラリプログラムの種類、およびその実行順序を決定する処理を行う演算方法決定ステップと、上記ライブラリプログラムの実行結果を上記ユーザプログラムシステムへ送信する処理を行う演算結果送信ステップとを含むことを特徴としている。
【００３９】
上記の構成および方法によれば、ユーザプログラムシステムにおいてユーザプログラムを実行するとき、ライブラリプログラムシステムを利用して実行する演算処理と、ユーザプログラムシステムにて実行する条件分岐や反復などの制御処理とをそれぞれ分離して抽出することができる。
【００４０】
そして、１）上記抽出した演算処理をライブラリプログラムを利用して実行するために、次の処理が行われる。すなわち、ます、演算の入力値に関する入力値情報がユーザプログラムシステムからライブラリプログラムシステムへ転送される。次に、演算内容の情報がユーザプログラムシステムからライブラリプログラムシステムへ転送され、ライブラリプログラムシステムにおいて利用するライブラリプログラムの種類、およびその実行順序が決定される。そして、ユーザプログラムシステムからの要求に応じて、実行結果がライブラリプログラムシステムからユーザプログラムシステムへ転送される。
【００４１】
そして、２）上記抽出した制御処理は、上記演算処理とは独立して、ユーザプログラムシステムにて実行することができる。
【００４２】
よって、演算処理と制御処理とをユーザが明示的に分離して演算処理システムに与える必要がなく、制御処理と演算処理とが混在したユーザプログラムを実行することが可能となる。特に、ユーザが、あらかじめ上記制御を含む処理が記述された関数を定義し、該定義された関数をライブラリプログラムシステムに渡しておく必要がなくなる。
【００４３】
したがって、ユーザにとって、ライブラリプログラムシステムに渡しておく関数に関する知識が不要となり、ユーザプログラムに制御処理を記述することができるため、より容易にライブラリプログラムを利用することが可能となるという効果を奏する。
【００４４】
さらに、従来個別のライブラリで完結する処理しか実行できなかった分散環境向けライブラリ呼び出しシステムにおいても、制御処理を含む演算処理を記述したユーザプログラムを実行することができることから、演算処理システムがチューリングマシンと等価な記述力を与えることができるという効果を奏する。
【００４５】
そのため、任意の計算処理を計算環境に依存せず実行することが可能となるという効果を奏する。
【００４６】
さらに、本発明に係る演算処理システムは、上記の構成において、上記ユーザプログラムシステムが、上記ライブラリプログラムシステムを利用して実行する入出力処理を含む上記ユーザプログラムを解析し、上記入出力処理を表す入出力文字列を抽出しする入出力処理抽出手段と、上記入出力処理における入出力値に関する情報を上記ライブラリプログラムシステムにて処理可能な形式に変換する入出力処理変換手段とをさらに備え、上記入力値転送手段が、上記変換後の上記入出力値に関する情報を上記入力値情報として上記ライブラリプログラムシステムに転送する処理を行う構成としてもよい。
【００４７】
上記の構成によれば、さらに、ユーザプログラムシステムにおいてユーザプログラムを実行するとき、入出力処理を他の処理と分離して抽出することができる。そして、上記抽出した入出力処理において入力したデータを、ライブラリプログラムシステムにて処理可能な形式に変換して、ライブラリプログラムシステムに渡すことができる。
【００４８】
よって、あらかじめライブラリプログラムシステムにて処理可能な形式でユーザプログラムを記述する必要が無いため記述を簡潔にすることができ、また、ユーザプログラムが使用するメモリ空間を使用することなく入力処理を行うことができる。
【００４９】
したがって、行列やベクトルなどのデータ量が多いデータを演算の入力とする場合であっても、ユーザプログラムのメモリ使用量を小さくすることができるという効果を奏する。
【００５０】
さらに、本発明に係る演算処理システムは、上記の構成において、上記演算結果送信手段が、上記ライブラリプログラムシステムを利用して実行する入出力処理における出力値に関する出力値情報を上記実行結果として送信する処理を行い、上記演算結果受信手段が、上記ライブラリプログラムシステムから上記出力値情報を上記実行結果として受信する処理を行う構成としてもよい。
【００５１】
上記の構成によれば、さらに、上記抽出した入出力処理において出力すべきデータをライブラリプログラムシステムから受信することができる。
【００５２】
よって、ユーザプログラムのメモリ空間を使用することなく出力処理を実行することができる。
【００５３】
したがって、演算処理の結果が、多くのメモリ空間を使用する行列データやベクトルデータなどであったとしても、ユーザプログラムのメモリ使用量を小さくすることができるという効果を奏する。
【００５４】
さらに、本発明に係る演算処理システムは、上記の構成において、上記入力値転送手段が、上記入力値情報として、数値データおよびそのデータ形式を転送する構成としてもよい。
【００５５】
上記の構成によれば、演算処理および入力処理の入力値情報として数値データおよびそのデータ形式がライブラリプログラムシステムに転送されることになる。よって、演算処理や入出力処理にて異なったデータ形式を扱うユーザプログラムを組み合わせたりすることが容易に可能となる。
【００５６】
さらに、本発明に係る演算処理システムは、上記の構成において、上記入力値受信手段が、受信した上記入力値情報を記憶部に格納するとともに、上記演算方法決定手段が、ライブラリプログラムの実行の際に、上記記憶部に格納されている入力値情報のいずれを用いるかを決定する構成としてもよい。
【００５７】
上記の構成によれば、演算処理および入力処理の入力値情報の転送処理と演算内容の情報の転送処理とが分離していても、両者の関係を適切に組み合わせてライブラリプログラムでの演算を行うことが可能となる。
【００５８】
さらに、本発明に係る演算処理システムは、上記の構成において、上記演算依頼手段が、上記演算依頼情報として、数学の演算式そのものを表す文字列を転送する構成としてもよい。
【００５９】
上記の構成によれば、ユーザプログラムシステム側では、数学の演算式そのものを表す文字列をライブラリプログラムシステムに対して転送すればよいので、演算処理および入力処理にて入力する値をどのように演算式で解くべきかなどを考慮する必要がない。よって、ユーザプログラムのユーザは、一般的な数学の演算式を考慮するだけで演算を行うプログラミングを記述することが可能となる。
【００６０】
さらに、本発明に係る演算処理システムは、上記の構成において、上記ユーザプログラムシステム、および上記ライブラリプログラムシステムが、同一のコンピュータにおいて動作する構成としてもよい。
【００６１】
上記の構成によれば、１つのコンピュータにおいてユーザプログラムシステムとライブラリプログラムシステムとを構築することによって、上記のような演算処理システムを実現することができる。なお、１つのコンピュータが複数の演算処理装置（例えばＣＰＵなど）を備え、メモリを共有している構成であってもよい。
【００６２】
さらに、本発明に係る演算処理システムは、上記の構成において、上記ユーザプログラムシステムが第１のコンピュータにおいて動作するとともに、上記ライブラリプログラムシステムが、上記第１のコンピュータと通信接続された別のコンピュータにおいて動作する構成としてもよい。
【００６３】
上記の構成によれば、ユーザプログラムシステムが動作するコンピュータと、ライブラリプログラムシステムが動作するコンピュータとを別々に構築することによって、上記のような演算処理システムを実現することができる。したがって、ユーザプログラムの実行とライブラリプログラムの実行とを並列に行うことが可能となる。
【００６４】
なお、上記ユーザプログラムシステムおよび上記ライブラリプログラムシステムは、コンピュータによって実現してもよく、この場合には、コンピュータを上記各手段として動作させることにより、上記ユーザプログラムシステムおよび上記ライブラリプログラムシステムをコンピュータにて実現させる上記ユーザプログラムシステムおよび上記ライブラリプログラムシステムの制御プログラム、およびそれを記録したコンピュータ読み取り可能な記録媒体も、本発明の範疇に入る。
【発明の効果】
【００６５】
以上のように、本発明に係る演算処理システムは、ユーザプログラムを実行するユーザプログラムシステムと、上記ユーザプログラムにおいて利用されるライブラリプログラムを実行するライブラリプログラムシステムとを備えた演算処理システムにおいて、上記ユーザプログラムシステムが、上記ライブラリプログラムシステムを利用して実行する演算処理および上記ユーザプログラムシステムにて実行する制御処理を含む上記ユーザプログラムを解析し、上記演算処理を表す演算文字列および上記制御処理を表す制御文字列を抽出する演算制御処理抽出手段と、上記抽出した演算文字列に基づいて、上記演算処理における演算の入力値に関する入力値情報を上記ライブラリプログラムシステムに転送する処理を行う入力値転送手段と、上記抽出した演算文字列に基づいて、上記演算処理における演算の内容に関する演算依頼情報を該ライブラリプログラムシステムに転送する処理を行う演算依頼手段と、上記抽出した演算文字列に基づいて、上記ライブラリプログラムシステムにおけるライブラリプログラムの実行結果を該ライブラリプログラムシステムから受信する処理を行う演算結果受信手段と、上記抽出した制御文字列に基づいて、上記制御処理を実行する制御処理実行手段とを備え、上記ライブラリプログラムシステムが、上記ユーザプログラムシステムから送られた、上記入力値情報を受信する処理を行う入力値受信手段と、上記ユーザプログラムシステムから送られた、上記演算依頼情報を解析することによって、利用するライブラリプログラムの種類、およびその実行順序を決定する処理を行う演算方法決定手段と、上記ライブラリプログラムの実行結果を上記ユーザプログラムシステムへ送信する処理を行う演算結果送信手段とを備えている。
【００６６】
また、本発明に係る演算処理方法は、ユーザプログラムを実行するユーザプログラムシステムと、上記ユーザプログラムにおいて利用されるライブラリプログラムを実行するライブラリプログラムシステムとを備えた演算処理システムにおける演算処理方法において、上記ユーザプログラムシステムにおける、上記ライブラリプログラムシステムを利用して実行する演算処理および上記ユーザプログラムシステムにて実行する制御処理を含む上記ユーザプログラムを解析し、上記演算処理を表す演算文字列および上記制御処理を表す制御文字列を抽出する演算制御処理抽出ステップと、上記抽出した演算文字列に基づいて、上記演算処理における演算の入力値に関する入力値情報を上記ライブラリプログラムシステムに転送する処理を行う入力値転送ステップと、上記抽出した演算文字列に基づいて、上記演算処理における演算の内容に関する演算依頼情報を該ライブラリプログラムシステムに転送する処理を行う演算依頼ステップと、上記抽出した演算文字列に基づいて、上記ライブラリプログラムシステムにおけるライブラリプログラムの実行結果を該ライブラリプログラムシステムから受信する処理を行う演算結果受信ステップと、上記抽出した制御文字列に基づいて、上記制御処理を実行する制御処理実行ステップと、上記ライブラリプログラムシステムにおける、上記ユーザプログラムシステムから送られた、上記入力値情報を受信する処理を行う入力値受信ステップと、上記ユーザプログラムシステムから送られた、上記演算依頼情報を解析することによって、利用するライブラリプログラムの種類、およびその実行順序を決定する処理を行う演算方法決定ステップと、上記ライブラリプログラムの実行結果を上記ユーザプログラムシステムへ送信する処理を行う演算結果送信ステップとを含んでいる。
【００６７】
よって、演算処理と制御処理とをユーザが明示的に分離して演算処理システムに与える必要がなく、制御処理と演算処理とが混在したユーザプログラムを実行することが可能となる。特に、ユーザが、あらかじめ上記制御を含む処理が記述された関数を定義し、該定義された関数をライブラリプログラムシステムに渡しておく必要がなくなる。
【００６８】
したがって、ユーザにとって、ライブラリプログラムシステムに渡しておく関数に関する知識が不要となり、ユーザプログラムに制御処理を記述することができるため、より容易にライブラリプログラムを利用することが可能となるという効果を奏する。
【発明を実施するための最良の形態】
【００６９】
本発明の一実施形態について図１から図５に基づいて説明すると以下の通りである。
【００７０】
（演算処理システムの構成）
図１を参照しながら、演算処理システム１の構成について説明する。図１は、本実施形態に係る演算処理システム１の概略構成を示すブロック図である。図１に示すように、演算処理システム１は、ユーザプログラムシステム２、およびライブラリプログラムシステム３を備えて構成される。また、図１に示すように、ユーザプログラムシステム２とライブラリプログラムシステム３とは通信可能に接続されている。
【００７１】
（ユーザプログラムシステム）
ユーザプログラムシステム２は、ユーザが作成し、利用するユーザプログラムを実行するシステムである。ここで、上記ユーザプログラムは、演算処理を表す文字列（以下、演算文字列と称する）（例えば”+”などの四則演算や、”=”などの代入）を含んでいる。また、上記ユーザプログラムは、条件分岐や反復などの制御処理を表す文字列（以下、制御文字列と称する）（例えば”if”や”while”など）を含んでいる。また、上記ユーザプログラムは、所定ファイルからの行列やベクトルなどのデータ読み込み、および、行列やベクトルなどのデータの所定ファイルへの保存といった入出力処理を表す文字列（以下、入出力文字列と称する）を含んでいる。
【００７２】
なお、制御文字列、演算文字列、入出力文字列はあらかじめ定義されている文字列であり、他の文字列とそれぞれ識別可能である。
【００７３】
また、上記演算処理および上記入出力処理は、ライブラリプログラムシステム３を利用して行われるものであり、上記制御処理はユーザプログラムシステム２で行われるものである。
【００７４】
ユーザプログラムシステム２は、上記ユーザプログラムを実行するために、入出力部１１、転送処理部１２、制御部１３、および記憶部１４を備えて構成される。
【００７５】
入出力部１１は、ユーザからの入力を受け付けるとともに、制御部１３による演算結果または入出力処理をユーザに対して表示・出力するものである。転送処理部１２は、ライブラリプログラムシステム３との間でのデータの送受信を行うものである。
【００７６】
制御部１３は、上述した演算処理、制御処理、入出力処理を行うものである。そのために、制御部１３は、ユーザプログラム実行部２１、インタープリタ部２２、および転送制御部２３を備えている。
【００７７】
ユーザプログラム実行部２１は、記憶部１４に記憶されているユーザプログラムを読み出して実行するものである。
【００７８】
インタープリタ部２２は、ユーザプログラム実行部２１において実行されているユーザプログラムを読み込み、制御処理と演算処理とをそれぞれ抽出する。そして、該制御処理を行うとともに、該演算処理を行うために、転送制御部２３を制御する。また、インタープリタ部２２は、上記読み込んだユーザプログラムから入出力処理を抽出し、該入出力処理を行うために、転送制御部２３を制御してもよい。
【００７９】
そのために、インタープリタ部２２は、演算処理・制御処理抽出部２２Ａ、制御処理部２２Ｂ、入出力処理抽出部２２Ｃ、入出力処理部２２Ｄを備えて構成される。なお、ライブラリプログラムシステム３を利用した入出力処理を行わない場合は、入出力処理抽出部２２Ｃ、入出力処理部２２Ｄを備えなくてもよい。
【００８０】
演算処理・制御処理抽出部２２Ａ（演算制御処理抽出手段）は、上記読み込んだユーザプログラムを解析し、あらかじめ記憶部１４に記憶されている演算文字列または制御文字列を検出する。そして、該検出された演算文字列により実行される演算処理と、該検出された制御文字列により実行される制御処理とをそれぞれ分けて抽出する。
【００８１】
そして、該抽出した演算処理をライブラリプログラムシステム３に格納されているライブラリプログラムを利用して行うために、転送制御部２３に対し、数値データの転送、演算内容の情報の転送を指示し、また、転送制御部２３から演算結果の受信を行う。また、該抽出した制御処理の内容を制御処理部２２Ｂに転送する。
【００８２】
制御処理部２２Ｂ（制御処理実行手段）は、演算処理・制御処理抽出部２２Ａが抽出した制御処理の内容を実行するものである。
【００８３】
入出力処理抽出部２２Ｃ（入出力処理抽出手段）は、上記読み込んだユーザプログラムを解析し、あらかじめ記憶部１４に記憶されている入出力文字列を検出する。そして、該検出された入出力文字列により実行される入出力処理を抽出する。また、該抽出した入出力処理の内容を入出力処理部２２Ｄに転送する。
【００８４】
入出力処理部２２Ｄ（入出力処理変換手段）は、入出力処理抽出部２２Ｃが抽出した入出力処理の内容を実行するものである。このとき、入出力処理部２２Ｄは、所定ファイルから読み込んだ行列やベクトルなどのデータを、転送制御部２３を介してライブラリプログラムシステム３に転送する。また、ライブラリプログラムシステム３で演算処理された行列やベクトルなどのデータを転送制御部２３を介して受信し、所定ファイルに保存する。
【００８５】
そのため、入出力処理部２２Ｄは、所定ファイルから読み込んだ行列やベクトルなどを転送制御部２３が処理可能な数値データおよびそのデータ形式に変換し、転送制御部２３に対して該変換後のデータを転送する。また、入出力処理部２２Ｄは、ライブラリプログラムシステム３で演算処理された行列やベクトルなどのデータをライブラリプログラムシステム３に対して要求することを転送制御部２３に対して指示し、該要求に応じてライブラリプログラムシステム３から送信された行列やベクトルなどのデータを受信する。
【００８６】
なお、入出力処理部２２Ｄは、ライブラリプログラムシステム３から受信したデータを、ユーザプログラム実行部２１を介して入出力部１１に転送し、ユーザに対して表示・出力してもよい。
【００８７】
転送制御部２３は、演算処理・制御処理抽出部２２Ａが抽出した演算処理、および、入出力処理抽出部２２Ｃが抽出した入出力処理を、ライブラリプログラムシステム３に格納されているライブラリプログラムを利用して行うために、ライブラリプログラムシステム３に対してのデータの送受信に関する制御処理を行うものである。そのために、転送制御部２３は、数値データ転送部２３Ａ、演算依頼部２３Ｂ、および演算結果受信部２３Ｃを備えている。
【００８８】
数値データ転送部２３Ａ（入力値転送手段）は、ライブラリプログラムシステム３に演算処理を実行させる際に、演算の入力値となる数値データおよびそのデータ形式をライブラリプログラムシステム３に転送する処理を行う。ここで、転送されるデータには、入出力処理部２２Ｄから送信される、数値データおよびそのデータ形式が含まれる。
【００８９】
演算依頼部２３Ｂ（演算依頼手段）は、ライブラリプログラムシステム３において行わせる演算内容の情報（演算依頼情報）をライブラリプログラムシステム３に転送する処理を行う。この演算依頼情報は、特定のライブラリプログラムの実行命令ではなく、数学の演算式そのものを表す文字列を含んでいる。
【００９０】
演算結果受信部２３Ｃ（演算結果受信手段）は、ライブラリプログラムシステム３におけるライブラリプログラムの実行結果をライブラリプログラムシステム３に対して要求するとともに、該実行結果をライブラリプログラムシステム３から受信する処理を行う。該実行結果には行列やベクトルなどのデータが含まれる。そして、該実行結果をインタープリタ部２２に送信する。
【００９１】
記憶部１４は、制御部１３における演算処理、制御処理、入出力処理で用いられるデータを格納するとともに、制御部１３のワークメモリとして機能する記憶手段である。なお、記憶部１４は、主記憶機能に加えて、補助記憶機能を有するものであってもよい。また、記憶部１４は、必ずしもユーザプログラムシステム２に備えられる必要はなく、外部記憶装置として、書き込み可能かつ読み取り可能な状態でユーザプログラムシステム２に接続される構成でもよい。
【００９２】
この記憶部１４は、ユーザプログラム格納部１４Ａ、数値データ格納部１４Ｂ、および演算結果データ格納部１４Ｃ、文字列格納部１４Ｄを備えている。
【００９３】
ユーザプログラム格納部１４Ａは、制御部１３において実行されるユーザプログラムを格納する領域である。数値データ格納部１４Ｂは、数値データ転送部２３Ａによって転送される数値データおよびそのデータ形式を格納する領域である。演算結果データ格納部１４Ｃは、演算結果受信部２３Ｃによって受信された実行結果を格納する領域である。文字列格納部１４Ｄは、ユーザプログラムにおいて記述される制御文字列、演算文字列、入出力文字列を含む、あらかじめ定義される文字列を格納する領域である。
【００９４】
なお、実際のメモリの利用に際しては、数値データ格納部１４Ｂおよび演算結果データ格納部１４Ｃは、両者が区別されることなく、変数や配列として記憶部１４に記憶される。また、ライブラリプログラム演算に関係しないその他の演算に必要とされる数値データなども記憶部１４に格納される。
【００９５】
（ライブラリプログラムシステム）
一方、ライブラリプログラムシステム３は、ユーザプログラムシステム２からの依頼に応じて、ライブラリプログラムを実行するシステムである。そのために、ライブラリプログラムシステム３は、転送処理部３１、制御部３２、および記憶部３３を備えている。
【００９６】
転送処理部３１は、ユーザプログラムシステム２との間でのデータの送受信を行うものである。
【００９７】
制御部３２は、ライブラリプログラムの演算処理を行う。そのために、制御部３２は、ライブラリプログラム実行部４２、および転送制御部４１を備えている。
【００９８】
ライブラリプログラム実行部４２は、記憶部３３に記憶されているライブラリプログラムを読み出して実行する。転送制御部４１は、ユーザプログラムシステム２において実行されているユーザプログラムが、ライブラリプログラムシステム３による処理を利用するものである場合に、ユーザプログラムシステム２からの要求に応じて、該ユーザプログラムシステム２に対してのデータの送受信に関する制御処理を行う。この転送制御部４１は、数値データ受信部４１Ａ、演算方法決定部４１Ｂ、および演算結果送信部４１Ｃを備えている。
【００９９】
数値データ受信部４１Ａ（入力値受信手段）は、ユーザプログラムシステム２から、例えばライブラリプログラムの実行時に用いられる演算の入力値となる数値データおよびそのデータ形式を受信する処理を行う。
【０１００】
なお、数値データ受信部４１Ａは、ライブラリプログラムの実行に用いないデータをユーザプログラムシステム２から受信してもよい。
【０１０１】
演算方法決定部４１Ｂ（演算方法決定手段）は、ユーザプログラムシステム２から送られてきた演算依頼情報を解析することによって、利用するライブラリプログラム、およびその実行順序を決定する処理を行う。
【０１０２】
演算結果送信部４１Ｃ（演算結果送信手段）は、ライブラリプログラム実行部４２におけるライブラリプログラムの実行結果を、ユーザプログラムシステム２からの要求に応じてユーザプログラムシステム２へ送信する処理を行う。
【０１０３】
記憶部３３は、制御部３２における演算処理で用いられるデータを格納するとともに、制御部３２のワークメモリとして機能する記憶手段である。なお、記憶部３３は、主記憶機能に加えて、補助記憶機能を有するものであってもよい。また、記憶部３３は、必ずしもライブラリプログラムシステム３に備えられる必要はなく、外部記憶装置として、書き込み可能かつ読み取り可能な状態でライブラリプログラムシステム３に接続される構成でもよい。
【０１０４】
この記憶部３３は、ライブラリプログラム格納部３３Ａ、数値データ格納部３３Ｂ、および演算結果データ格納部３３Ｃを備えている。
【０１０５】
ライブラリプログラム格納部３３Ａは、制御部３２において実行されるライブラリプログラムを格納する領域である。数値データ格納部３３Ｂは、数値データ受信部４１Ａによって受信された数値データおよびそのデータ形式を格納する領域である。演算結果データ格納部３３Ｃは、ライブラリプログラム実行部４２によるライブラリプログラムの実行結果を格納する領域である。
【０１０６】
なお、実際のメモリの利用に際しては、数値データ格納部３３Ｂおよび演算結果データ格納部３３Ｃは、両者が区別されることなく、変数や配列として記憶部３３に記憶される。また、ライブラリプログラム演算において一時的に用いられる中間データとしての変数や、数値データに対するディレクトリ構造を示す管理情報なども記憶部３３に格納される。
【０１０７】
（演算処理システムにおける処理の流れ）
次に、上記した演算処理システム１における処理の流れについて、図２および図３を参照しながら以下に説明する。図２は、ユーザプログラムシステム２における処理の流れを示すフローチャートであり、図３は、ライブラリプログラムシステム３における処理の流れを示すフローチャートである。
【０１０８】
（ユーザプログラムシステムにおける処理の流れ）
まず、図２を参照しながら、ユーザプログラムシステム２における処理の流れについて説明する。まずステップ１（以降、Ｓ１のように称する）において、ユーザプログラムシステム２において、ユーザプログラム実行部２１がユーザプログラムの実行を開始する。すなわち、例えば入出力部１１においてユーザからの所定のユーザプログラムの実行指示が受け付けられると、この情報がユーザプログラム実行部２１に伝達される。そして、ユーザプログラム実行部２１は、指定されたユーザプログラムを、記憶部１４のユーザプログラム格納部１４Ａから読み出し、該ユーザプログラムの実行を開始する。そして、インタープリタ部２２が該ユーザプログラムの読み込みを行い、該ユーザプログラムに記載されている文字列を一般的な手法で解析する。
【０１０９】
そして、演算処理・制御処理抽出部２２Ａが、演算文字列を検出した場合において（Ｓ２においてＹＥＳ）、上記検出した演算文字列が、ライブラリプログラムシステム３に対して数値データおよびそのデータ形式を転送することを示すものである場合（Ｓ３においてＹＥＳ）には、数値データ転送部２３Ａが、該数値データおよびそのデータ形式に関する情報を、ライブラリプログラムシステム３に対して転送するように転送処理部１２を制御する。この数値データおよびそのデータ形式に関する情報は、入出力部１１によってユーザから入力されるものであってもよいし、実行されているユーザプログラムによって生成されるものであってもよい。これにより、数値データおよびそのデータ形式に関する情報が、転送処理部１２によってライブラリプログラムシステム３へ転送される（Ｓ４）。また、数値データ転送部２３Ａは、記憶部１４における数値データ格納部１４Ｂに、転送した数値データおよびそのデータ形式に関する情報を格納する。
【０１１０】
また、上記検出した演算文字列が、ライブラリプログラムシステム３に演算処理を行わせることを示すものである場合（Ｓ５においてＹＥＳ）には、演算依頼部２３Ｂが、演算依頼内容を示す演算依頼情報をライブラリプログラムシステム３に対して転送するように転送処理部１２を制御する。この演算依頼情報は、入出力部１１によってユーザから入力されるものであってもよいし、実行されているユーザプログラムによって生成されるものであってもよい。これにより、演算依頼情報が、転送処理部１２によってライブラリプログラムシステム３へ転送される（Ｓ６）。
【０１１１】
また、上記検出した演算文字列が、ライブラリプログラムシステム３において演算処理が行われた結果を要求することを示すものである場合（Ｓ７においてＹＥＳ）には、演算結果受信部２３Ｃは、結果要求情報を、ライブラリプログラムシステム３に対して転送するように転送処理部１２を制御する。なお、転送されただけで演算が行われていない数値データ格納部３３Ｂに格納されている数値データの転送を要求してもよい。この結果要求情報は、入出力部１１によってユーザから入力されるものであってもよいし、実行されているユーザプログラムによって生成されるものであってもよい。これにより、結果要求情報が、転送処理部１２によってライブラリプログラムシステム３へ転送される。その後、ライブラリプログラムシステム３から演算結果が転送処理部１２において受信されると、演算結果受信部２３Ｃは、受信した演算結果を、記憶部１４における演算結果データ格納部１４Ｃに格納する（Ｓ８）。
【０１１２】
次に、演算処理・制御処理抽出部２２Ａが、制御文字列を検出した場合（Ｓ９においてＹＥＳ）には、ライブラリプログラムシステム３に処理を依頼せず、制御処理部２２Ｂが上記検出した制御文字列に応じた制御処理（条件分岐、反復など）を実行する（Ｓ１０）。
【０１１３】
次に、入出力処理抽出部２２Ｃが、入出力文字列を検出した場合において（Ｓ１１においてＹＥＳ）、上記検出した入出力文字列が、行列やベクトルなどのデータをファイルから読み込む入力処理を示すものである場合（Ｓ１２においてＹＥＳ）には、上記検出した入出力文字列を数値データ転送部２３Ａが扱えるコードに変換し（Ｓ１３）、その後、数値データ転送部２３Ａが、該数値データおよびそのデータ形式に関する情報を、ライブラリプログラムシステム３に対して転送するように転送処理部１２を制御する。
【０１１４】
これにより、行列やベクトルなどの入力データに関する情報が、転送処理部１２によってライブラリプログラムシステム３へ転送される（Ｓ１４）。また、数値データ転送部２３Ａは、記憶部１４における数値データ格納部１４Ｂに、転送した数値データおよびそのデータ形式に関する情報を格納する。
【０１１５】
一方、上記検出した入出力文字列が、演算した結果である行列やベクトルなどのデータをファイルに保存する処理を示すものである場合（Ｓ１５においてＹＥＳ）には、上記検出した入出力文字列を演算結果受信部２３Ｃが扱えるコードに変換し（Ｓ１６）、その後、演算結果受信部２３Ｃが、結果要求情報を、ライブラリプログラムシステム３に対して転送するように転送処理部１２を制御する。なお、転送されただけで演算が行われていない数値データ格納部３３Ｂに格納されている数値データの転送を要求してもよい。
【０１１６】
これにより、結果要求情報が、転送処理部１２によってライブラリプログラムシステム３へ転送される。その後、ライブラリプログラムシステム３から演算結果が転送処理部１２において受信されると、演算結果受信部２３Ｃは、受信した演算結果を、記憶部１４における演算結果データ格納部１４Ｃに格納する（Ｓ１７）。なお、受信した演算結果を、ユーザプログラム実行部２１を介して入出力部１１に転送し、ユーザに対して表示・出力してもよい。
【０１１７】
以上のＳ２、Ｓ９、およびＳ１１のいずれの場合においてもＮＯである場合には、ユーザプログラム実行部２１は、ユーザ定義処理、すなわち、ユーザプログラムにおけるその他の処理を行う（Ｓ１８）。そして、Ｓ１９において、ユーザプログラム実行部２１は、該ユーザプログラムの実行を完了したか否かを判定する。ユーザプログラムの実行が完了していない場合（Ｓ１８においてＮＯ）には、Ｓ２からの処理に戻る。一方、ユーザプログラムの実行が完了したと判定された場合（Ｓ１８においてＹＥＳ）には、ユーザプログラムの処理が終了する。
【０１１８】
なお、Ｓ２、Ｓ９、およびＳ１１の処理は、上記の順で行われることに限定されるものではなく、どの順序で行われてもよい。すなわち、Ｓ４〜Ｓ８、Ｓ１０、Ｓ１３およびＳ１４、Ｓ１６およびＳ１７の処理は、該当するコードが実行される順序で行われればよい。
【０１１９】
なお、以上のようにユーザプログラムシステム２における処理が進むので、ユーザプログラムシステム２における処理は、ライブラリプログラムシステム３における処理とは非同期に進行する。
【０１２０】
（ライブラリプログラムシステムにおける処理の流れ）
次に、図３を参照しながら、ライブラリプログラムシステム３における処理の流れについて説明する。まずＳ２１において、数値データ受信部４１Ａが、ユーザプログラムシステム２から数値データおよびそのデータ形式に関する情報を転送処理部３１を介して受信したか否かを判定する。そして、数値データおよびそのデータ形式に関する情報が受信されたと判定された（Ｓ２１においてＹＥＳ）場合には、数値データ受信部４１Ａは、受信した数値データおよびそのデータ形式に関する情報を記憶部３３における数値データ格納部３３Ｂに格納する（Ｓ２２）。
【０１２１】
次に、演算方法決定部４１Ｂが、ユーザプログラムシステム２から演算依頼情報を転送処理部３１を介して受信したか否かを判定する（Ｓ２３）。そして、演算依頼情報が受信されたと判定された場合（Ｓ２３においてＹＥＳ）には、演算方法決定部４１Ｂは、受信した演算依頼情報を解析することによって、利用するライブラリプログラムの種類、およびその実行順序を決定する処理を行う（Ｓ２４）。
【０１２２】
次に、ライブラリプログラム実行部４２は、演算方法決定部４１Ｂによって決定されたライブラリプログラムの種類およびその実行順序に基づいて、ライブラリプログラムによる演算を実行する（Ｓ２５）。ここで、ライブラリプログラム実行部４２は、記憶部３３におけるライブラリプログラム格納部３３Ａから必要とするライブラリプログラムを読み出すとともに、記憶部３３における数値データ格納部３３Ｂから入力値としての数値データおよびそのデータ形式に関する情報を読み出して、演算を実行する。その後、ライブラリプログラム実行部４２は、演算結果データを記憶部３３における演算結果データ格納部３３Ｃに格納する（Ｓ２６）。
【０１２３】
また、演算結果送信部４１Ｃが、ユーザプログラムシステム２から演算結果の送信要求を転送処理部３１を介して受信したか否かを判定する（Ｓ２７）。そして、演算結果の送信要求が受信されたと判定された場合（Ｓ２７においてＹＥＳ）には、演算結果送信部４１Ｃは、記憶部３３における演算結果データ格納部３３Ｃから演算結果データを読み出し、これを転送処理部３１からユーザプログラムシステム２に対して送信する制御を行う。これにより、演算結果がライブラリプログラムシステム３からユーザプログラムシステム２に対して送信される（Ｓ２８）。なお、数値データ格納部３３Ｂに格納されている数値データに対する送信要求だった場合、演算結果送信部４１Ｃは、記憶部３３における数値データ格納部３３Ｂから数値データおよびそのデータ形式を読み出し、これを転送処理部３１からユーザプログラムシステム２に対して送信する制御を行うようになっていてもよい。
【０１２４】
以上のＳ２１、Ｓ２３、およびＳ２７のいずれの場合においてもＮＯである場合には、Ｓ２１からの処理に戻る。
【０１２５】
なお、Ｓ２１、Ｓ２３、およびＳ２７の処理は、上記の順で行われることに限定されるものではなく、どの順序で行われてもよい。すなわち、Ｓ２２、Ｓ２４〜Ｓ２６、およびＳ２８の処理は、該当するコードが実行された順序で行われればよい。
【０１２６】
なお、以上のようにライブラリプログラムシステム３における処理が進むので、ライブラリプログラムシステム３における処理は、ユーザプログラムシステム２における処理とは非同期に進行する。
【０１２７】
（システム構成例１）
次に、図４を参照しながら、を演算処理システム１の具体的構成例について説明する。このシステム構成例１は、図４に示すように、ユーザプログラムシステム２およびライブラリプログラムシステム３の両方が、１つのコンピュータ１Ａにおいて実行されるものとなっている。
【０１２８】
コンピュータ１Ａは、演算手段としてのＣＰＵ（Central Processing Unit）、主記憶手段としてのＲＡＭ（Random Access Memory）、および、不揮発性記憶装置としてのＲＯＭ（Read Only Memory）やハードディスクなどを備えた一般的なコンピュータである。そして、ユーザプログラムシステム２における制御部１３の各機能ブロック、および、ライブラリプログラムシステム３における制御部３２の各機能ブロックは、ＣＰＵがＲＡＭに該当プログラムをハードディスクなどから読み出して実行することによって実現される。また、記憶部１４は、ＲＡＭ、およびハードディスクなどによって実現される。
【０１２９】
また、ユーザプログラムシステム２における転送処理部１２、および、ライブラリプログラムシステム３における転送処理部３１は、制御部１３によるプログラムと、制御部３２によるプログラムとの間でデータの転送処理、すなわちプロセス間通信を行う。また、入出力部１１は、コンピュータ１Ａが備えるキーボードやマウスなどの入力手段、および、表示手段としてのディスプレイ、印刷手段としてのプリンタなどによって実現される。
【０１３０】
なお、コンピュータ１Ａが複数のプロセッサを有し、並列演算を行うことが可能な構成であってもよい。
【０１３１】
（システム構成例１における具体的動作例）
次に、システム構成例１における具体的動作例について説明する。ここでの動作例は、次のようなものである。ユーザプログラムシステム２におけるユーザプログラムにおいて、連立１次方程式Ａｘ＝ｂをＣＧ（Conjugate Gradient）法により解くという命令が含まれており、この連立１次方程式Ａｘ＝ｂの演算がライブラリプログラムシステム３において行われる。詳しく説明すると、第１の行列データファイルに係数行列Ａが格納され、同様に第２の行列データファイルにベクトルｂが格納されている。そして、連立１次方程式Ａｘ＝ｂの解ベクトルｘは、第３の行列データファイルに格納されるものとする。なお、上記第１の行列データファイル、第２の行列データファイル、第３の行列データファイルの格納形式は、それぞれ例えばMatrixMarket形式などであるが、これに限定されるものではない。
【０１３２】
以上の動作例における処理の流れは次のとおりである。まず、ライブラリプログラムシステム３における制御部３２が動作可能状態に設定される。次に、ユーザプログラムシステム２における制御部１３が、ユーザからの指示入力などに基づいて特定のユーザプログラムの実行を開始する。
【０１３３】
その後、ユーザプログラムの実行過程において、演算処理の入力値として用いられる数値データおよびそのデータ形式が生成される。本動作例では、数値データおよびそのデータ形式として、上記の係数行列Ａおよびベクトルｂが生成される。生成された係数行列Ａおよびベクトルｂは、数値データ格納部１４Ｂに行列データファイルAおよび行列データファイルBとして格納される。
【０１３４】
その後、ユーザプログラムを読み込んだインタープリタ部２２の入出力処理抽出部２２Ｃがユーザプログラムから次のステートメントを抽出する。
load “A”, Ａ
load “B”, ｂ
上記ステートメントは、係数行列Ａが格納された行列データファイルA、および、ベクトルｂが格納された行列データファイルBを読み込む、という入力処理を示している。なお、「load」という命令は、特にこの文字列に限定されるものではなく、他の文字列によってこの命令を示すようになっていてもよい。
【０１３５】
上記のステートメントが入出力処理抽出部２２Ｃによって抽出されると、入出力処理部２２Ｄが、読み込んだ行列データファイルAおよび行列データファイルBを転送制御部２３が処理可能な数値データおよびそのデータ形式に変換し、転送制御部２３に対して該変換後のデータを転送する。
【０１３６】
そして、数値データ転送部２３Ａが、入出力処理部２２Ｄから転送された数値データおよびそのデータ形式を、ライブラリプログラムシステム３に対して転送するように転送処理部１２を制御する。これにより、行列データファイルAおよび行列データファイルBが、転送処理部１２によってライブラリプログラムシステム３へ転送される。
【０１３７】
ライブラリプログラムシステム３では、数値データ受信部４１Ａが行列データファイルAおよび行列データファイルBを受信し、これを係数行列Ａおよびベクトルｂとして数値データ格納部３３Ｂに格納する。
【０１３８】
次に、インタープリタ部２２の演算処理・制御処理抽出部２２Ａが、ユーザプログラム中の、四則演算などの示す演算文字列を抽出すると、転送制御部２３に対し、該抽出した演算文字列により演算される数値データおよび演算内容の情報の転送を指示する。
【０１３９】
そして、数値データ転送部２３Ａおよび演算依頼部２３Ｂが、演算処理・制御処理抽出部２２Ａから転送された数値データおよび演算依頼内容の情報を、ライブラリプログラムシステム３に対して転送するように転送処理部１２を制御する。これにより、演算処理を構成する数値データおよび演算依頼内容が、転送処理部１２によってライブラリプログラムシステム３へ転送される。
【０１４０】
なお、ライブラリプログラムシステム３では、演算方法決定部４１Ｂが、上記の演算依頼内容を受信し、受信した演算依頼内容の情報を解析することによって、利用するライブラリプログラムの種類、およびその実行順序を決定する処理を行う。具体的には、演算方法決定部４１Ｂは、受信した演算依頼内容に基づいて、ＬＵ分解処理、前進後退代入処理などを行う。そして、演算方法決定部４１Ｂは、例えば、定義されたＡをプログラムに合う形に変換したＡ１（実際にはＡをＡ１にコピー）を割り当てたり、中間変数としてｘ、ＩＰを割り当てたりする処理を行う。なお、Ａ１、ＩＰ、ｘはライブラリプログラムシステム３においてのみ用いられる変数である。そして、ライブラリプログラム実行部４２は、演算方法決定部４１Ｂによって決定された演算に基づいてライブラリプログラムを実行し、解ｘを導出する。導出された解は演算結果データとして、演算結果データ格納部３３Ｃに格納される。
【０１４１】
次に、インタープリタ部２２の演算処理・制御処理抽出部２２Ａが、ユーザプログラム中の、条件分岐、反復などなどの示す制御文字列を抽出すると、転送制御部２３に対し、該抽出した制御文字列により制御処理の内容を制御処理部２２Ｂに転送する。そして、制御処理部２２Ｂは、上記制御処理の内容に従い、制御処理を実行する。
【０１４２】
例えば、インタープリタ部２２の演算処理・制御処理抽出部２２Ａは、ユーザプログラムから次のステートメントを抽出する。
if (cond_expr1) {
stmt1;
} else if (cond_expr2) [
stmt2;
} else {
stmt3;
}
上記のステートメントは、条件分岐の制御処理を示している。ここで、cond_expr1およびcond_expr2は、比較演算子から成る条件式を表すものとする。また、stmt1およびstmt2およびstmt3は、任意の文字列とする。上記のステートメントにより、制御処理部２２Ｂは、１）cond_expr1の条件式が満たされている場合はstmt1を実行し、２）cond_expr1の条件式が満たされておらず、かつ、cond_expr2の条件式が満たされている場合はstmt2を実行し、３）cond_expr1の条件式が満たされておらず、かつ、cond_expr2の条件式が満たされていない場合は、stmt3を実行する。なお、「if」という制御文字列は、特にこの文字列に限定されるものではなく、他の文字列によってこの制御を示すようになっていてもよい。
【０１４３】
また、例えば、インタープリタ部２２の演算処理・制御処理抽出部２２Ａは、ユーザプログラムから次のステートメントを抽出する。
where (cond_expr){
stmt;
}
上記のステートメントは、反復の制御処理を示している。ここで、cond_exprは比較演算子から成る条件式を表すものとする。また、stmtは任意の文字列とする。上記のステートメントにより、制御処理部２２Ｂは、cond_exprの条件式が満たされている限りstmtを実行する。
【０１４４】
さらに、インタープリタ部２２の演算処理・制御処理抽出部２２Ａは、ユーザプログラムから次のステートメントを抽出してもよい。
continue
上記のステートメントにより、制御処理部２２Ｂは、反復の制御処理を続行する。
【０１４５】
さらに、インタープリタ部２２の演算処理・制御処理抽出部２２Ａは、ユーザプログラムから次のステートメントを抽出してもよい。
break
上記のステートメントにより、制御処理部２２Ｂは、反復の制御処理を中断する。
【０１４６】
なお、「while」、「break」、「continue」という制御文字列は、特にこの文字列に限定されるものではなく、他の文字列によってこの制御を示すようになっていてもよい。
【０１４７】
次に、インタープリタ部２２の入出力処理抽出部２２Ｃがユーザプログラムから次のステートメントを抽出する。
save “X”, x
上記のステートメントは、ライブラリプログラムシステム３から、演算結果としての解ｘを受信し、この解ｘを行列データファイルXに格納する命令を示している。なお、「save」という命令は、特にこの文字列に限定されるものではなく、他の文字列によってこの命令を示すようになっていてもよい。
【０１４８】
なお、インタープリタ部２２の入出力処理抽出部２２Ｃは次のステートメントを抽出してもよい。
pprint a
上記のステートメントは、ライブラリプログラムシステム３から、演算結果としての式aの値を受信する命令を示している。なお、「pprint」という命令は、特にこの文字列に限定されるものではなく、他の文字列によってこの命令を示すようになっていてもよい。また、上記受信した値は入出力部１１に表示・出力されてもよい。
【０１４９】
上記のステートメントが入出力処理抽出部２２Ｃによって抽出されると、入出力処理部２２Ｄが、転送制御部２３が処理可能な命令に変換し、転送制御部２３に対して該変換後の命令を転送する。
【０１５０】
そして、演算結果受信部２３Ｃが、結果要求情報としての上記変換後の命令を、ライブラリプログラムシステム３に対して転送するように転送処理部１２を制御する。これにより、結果要求情報が、転送処理部１２によってライブラリプログラムシステム３へ転送される。
【０１５１】
ライブラリプログラムシステム３では、演算結果送信部４１Ｃが上記結果要求情報を受信し、該結果要求情報によって要求された演算結果データを演算結果データ格納部３３Ｃから読み出す。そして、演算結果送信部４１Ｃは、読み出した演算結果データを転送処理部３１からユーザプログラムシステム２に対して送信する制御を行う。これにより、演算結果がライブラリプログラムシステム３からユーザプログラムシステム２に対して送信される。なお、結果要求情報が受信された時点で、ライブラリプログラムシステム３において演算が完了していない場合には、演算が完了するまで演算結果データの送信は行われない。
【０１５２】
ユーザプログラムシステム２では、演算結果受信部２３Ｃが、演算結果データをライブラリプログラムシステム３から受信すると、演算結果データとしての解ｘを行列データファイルとして演算結果データ格納部１４Ｃに格納する。これにより、ライブラリプログラムシステム３を利用した演算が完了することになる。
【０１５３】
その後、ユーザプログラムの実行が完了すると、ライブラリプログラムシステム３において、数値データ格納部３３Ｂおよび演算結果データ格納部３３Ｃに格納されているデータがクリアされ、制御部３２の動作が停止する。なお、ライブラリプログラムシステム３におけるデータのクリアおよび制御部３２における動作の停止は、ユーザプログラムがライブラリプログラムシステム３を利用する必要がなくなった時点で行われてもよい。
【０１５４】
また、新たなユーザプログラムがユーザプログラムシステム２において実行されてもよい。このとき、ライブラリプログラムシステム３を経由して、前回のユーザプログラムから新たなユーザプログラムにデータの受け渡しが行われてもよい。
【０１５５】
（システム構成例２）
次に、図５を参照しながら、演算処理システム１の他の具体的構成例について説明する。このシステム構成例２は、図５に示すように、ユーザプログラムシステム２が実行されるコンピュータ１Ｂと、ライブラリプログラムシステム３が実行されるコンピュータ１Ｃとが通信ネットワークＮを介して接続された構成となっている。
【０１５６】
コンピュータ１Ｂおよびコンピュータ１Ｃは、演算手段としてのＣＰＵ、主記憶手段としてのＲＡＭ、および、不揮発性記憶装置としてのＲＯＭやハードディスクなどを備えた一般的なコンピュータである。そして、ユーザプログラムシステム２における制御部１３の各機能ブロック、および、ライブラリプログラムシステム３における制御部３２の各機能ブロックは、ＣＰＵがＲＡＭに該当プログラムをハードディスクなどから読み出して実行することによって実現される。また、記憶部１４は、ＲＡＭ、およびハードディスクなどによって実現される。
【０１５７】
また、ユーザプログラムシステム２における転送処理部１２、および、ライブラリプログラムシステム３における転送処理部３１は、通信ネットワークＮを介しての通信を行う際の通信インターフェースとして機能することになる。また、入出力部１１は、コンピュータ１Ｂが備えるキーボードやマウスなどの入力手段、および、表示手段としてのディスプレイ、印刷手段としてのプリンタなどによって実現される。
【０１５８】
なお、コンピュータ１Ｂおよびコンピュータ１Ｃがそれぞれ複数のプロセッサを有し、並列演算を行うことが可能な構成であってもよい。
【０１５９】
（システム構成例２における具体的動作例）
システム構成例２は、システム構成例１と比較して、ユーザプログラムシステム２とライブラリプログラムシステム３とがそれぞれ異なるコンピュータ上で動作する点が異なっているのみであり、基本的な動作はほぼ同様となっている。すなわち、システム構成例２における具体的動作例としては、上記したシステム構成例１における具体的動作例とほぼ同様である。異なる点としては、転送処理部１２と転送処理部３１との間のデータ転送が、通信ネットワークＮを介して行われる点である。
【０１６０】
なお、ライブラリプログラムシステム３が実行されるコンピュータは１台に限られない。２台以上のコンピュータにてライブラリプログラムシステム３が実行されてもよい。
【０１６１】
また、上記では、基本的に、ユーザプログラムシステム２において実行されるユーザプログラムは、逐次型のプログラム、すなわち、シリアルに処理が行われるプログラムである場合を想定しているが、ユーザプログラムが並列型のプログラムであっても構わない。
【０１６２】
（付記事項）
本発明は上述した実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【産業上の利用可能性】
【０１６３】
本発明に係る演算処理システムは、例えば科学技術計算を行う際に、既存のライブラリプログラムを利用した演算を行うなどの用途に適用することが可能である。
【図面の簡単な説明】
【０１６４】
【図１】本発明の一実施形態に係る演算処理システムの概略構成を示すブロック図である。
【図２】図１に示した演算処理システムに含まれるユーザプログラムシステムにおける処理の流れを示すフローチャートである。
【図３】図１に示した演算処理システムに含まれるライブラリプログラムシステムにおける処理の流れを示すフローチャートである。
【図４】図１に示した演算処理システムに含まれるユーザプログラムシステムおよびライブラリプログラムシステムの両方が、１つのコンピュータにおいて実行される構成例を示すブロック図である。
【図５】図１に示した演算処理システムに含まれるユーザプログラムシステムが実行されるコンピュータと、ライブラリプログラムシステムが実行されるコンピュータとが通信ネットワークを介して接続された構成例を示すブロック図である。
【図６】従来の演算処理システムの概略構成を示すブロック図である。
【符号の説明】
【０１６５】
１    演算処理システム
２    ユーザプログラムシステム
３    ライブラリプログラムシステム
１３    制御部
１４    記憶部
１４Ａ  ユーザプログラム格納部
１４Ｂ  数値データ格納部
１４Ｃ  演算結果データ格納部
１４Ｄ  文字列格納部
２１    ユーザプログラム実行部
２２    インタープリタ部
２２Ａ  演算処理・制御処理抽出部（演算制御処理抽出手段）
２２Ｂ  制御処理部（制御処理実行手段）
２２Ｃ  入出力処理抽出部（入出力処理抽出手段）
２２Ｄ  入出力処理部（入出力処理変換手段）
２３    転送制御部
２３Ａ  数値データ転送部（入力値転送手段）
２３Ｂ  演算依頼部（演算依頼手段）
２３Ｃ  演算結果受信部（演算結果受信手段）
３２    制御部
３３    記憶部
３３Ａ  ライブラリプログラム格納部
３３Ｂ  数値データ格納部
３３Ｃ  演算結果データ格納部
４１    転送制御部
４１Ａ  数値データ受信部（入力値受信手段）
４１Ｂ  演算方法決定部（演算方法決定手段）
４１Ｃ  演算結果送信部（演算結果送信手段）
４２    ライブラリプログラム実行部
【図１】
0005265886.tif 000002
【図２】
0005265886.tif 000003
【図３】
0005265886.tif 000004
【図４】
0005265886.tif 000005
【図５】
0005265886.tif 000006
【図６】
0005265886.tif 000007