(57)【特許請求の範囲】
【請求項１】
ユーザプログラムを実行するユーザプログラムシステムと、上記ユーザプログラムにおいて利用されるライブラリプログラムを実行するライブラリプログラムシステムとを備えた演算処理システムにおける演算処理方法において、
上記ユーザプログラムシステムが、上記ライブラリプログラムシステムに、演算処理の対象となる処理対象データを転送する第１転送ステップと、
上記ユーザプログラムシステムが、上記ライブラリプログラムシステムから上記処理対象データを演算処理した結果を示す処理結果データを受け取る第２転送ステップと、
上記第１および第２転送ステップの間に、これらのステップとは独立して実施される演算指示ステップおよび演算処理ステップとを含み、
上記演算指示ステップでは、上記ユーザプログラムシステムが、上記演算処理の内容を、上記第１および第２転送ステップを実施するためのプログラムを記述したプログラム言語と、上記ライブラリプログラムを記述したプログラム言語とのいずれからも独立した文法で記述された文字列によって、上記ライブラリプログラムシステムへ指示すると共に、
上記演算処理ステップでは、上記ライブラリプログラムシステムが、上記文字列を解析して、上記演算処理の際に利用するライブラリプログラムの種類、および、その実行順序を決定すると共に、当該決定されたライブラリプログラムを、上記決定された実行順序にて実行することによって、上記処理対象データを演算処理することを特徴とする演算処理方法。
【請求項２】
ユーザプログラムを実行するユーザプログラムシステムと、上記ユーザプログラムにおいて利用されるライブラリプログラムを実行するライブラリプログラムシステムとを備えた演算処理システムにおいて、
上記ユーザプログラムシステムには、上記ライブラリプログラムシステムに、演算処理の対象となる処理対象データを転送する第１転送手段と、上記ライブラリプログラムシステムから上記処理対象データを演算処理した結果を示す処理結果データを受け取る第２転送手段と、当該処理対象データおよび処理結果データの転送とは独立して、上記演算処理の内容を、上記処理対象データおよび処理結果データの転送処理を実施するためのプログラムを記述したプログラム言語と、上記ライブラリプログラムを記述したプログラム言語とのいずれからも独立した文法で記述された文字列により上記ライブラリプログラムシステムへ指示する演算依頼手段とが設けられ、
上記ライブラリプログラムシステムには、上記文字列を解析して、上記演算処理の際に利用するライブラリプログラムの種類、および、その実行順序を決定すると共に、当該決定されたライブラリプログラムを、上記決定された実行順序にて実行することによって、上記処理対象データを演算処理する演算処理手段が設けられていることを特徴とする演算処理システム。
【請求項３】
ユーザプログラムを実行するユーザプログラムシステムと、上記ユーザプログラムにおいて利用されるライブラリプログラムを実行するライブラリプログラムシステムとを備えた演算処理システムにおいて、
上記ユーザプログラムシステムが、
上記ライブラリプログラムシステムに演算を行わせる処理が上記ユーザプログラムによって行われる際に、演算の入力値に関する入力値情報を上記ライブラリプログラムシステムに転送する処理を行う入力値転送手段と、
上記ライブラリプログラムシステムにおいて演算処理を行わせる演算内容の情報としての演算依頼情報を該ライブラリプログラムシステムに転送する処理を行う演算依頼手段と、
上記ライブラリプログラムシステムにおけるライブラリプログラムの実行結果を該ライブラリプログラムシステムから受信する処理を行う演算結果受信手段とを備え、
上記ライブラリプログラムシステムが、
上記ユーザプログラムシステムから、ライブラリプログラムの実行時に用いられる演算の入力値に関する入力値情報を受信する処理を行う入力値受信手段と、
上記ユーザプログラムシステムから送られてきた演算依頼情報を解析することによって、利用するライブラリプログラムの種類、およびその実行順序を決定する処理を行う演算方法決定手段と、
ライブラリプログラムの実行結果を上記ユーザプログラムシステムへ送信する処理を行う演算結果送信手段とを備え、
上記演算依頼情報が、上記入力値情報およびライブラリプログラムの実行結果の転送処理を実施するためのプログラムを記述したプログラム言語と、上記ライブラリプログラムを記述したプログラム言語とのいずれからも独立した文法で記述された文字列であることを特徴とする演算処理システム。
【請求項４】
上記入力値転送手段が、上記入力値情報として、数値データおよびそのデータ形式を転送することを特徴とする請求項３記載の演算処理システム。
【請求項５】
上記入力値受信手段が、受信した入力値情報を記憶部に格納するとともに、
上記演算方法決定手段が、ライブラリプログラムの実行の際に、上記記憶部に格納されているどの入力値情報を用いるかを決定することを特徴とする請求項３記載の演算処理システム。
【請求項６】
上記演算依頼手段が、演算内容の情報として、数学の演算式そのものを表す文字列を転送することを特徴とする請求項３記載の演算処理システム。
【請求項７】
上記ユーザプログラムシステム、および上記ライブラリプログラムシステムが、同一のコンピュータにおいて動作することを特徴とする請求項２または３記載の演算処理システム。
【請求項８】
上記ユーザプログラムシステムが第１のコンピュータにおいて動作するとともに、上記ライブラリプログラムシステムが、上記第１のコンピュータと通信接続された別のコンピュータにおいて動作することを特徴とする請求項２または３記載の演算処理システム。
【請求項９】
上記ライブラリプログラムシステムが動作するコンピュータが複数存在することを特徴とする請求項８記載の演算処理システム。
【請求項１０】
上記ユーザプログラムシステムが第１のコンピュータにおいて動作するとともに、上記ライブラリプログラムシステムが、上記第１のコンピュータと通信接続された別の複数のコンピュータにおいて動作し、
上記入力値転送手段および上記演算依頼手段が、上記入力値情報および上記演算内容の情報を、ライブラリプログラムシステムが動作する１つのコンピュータに対して転送するとともに、
上記入力値情報および上記演算内容の情報を受信したライブラリプログラムシステムにおける上記演算方法決定手段が、演算処理の分担を決定し、他のコンピュータにおける分担分の処理内容を転送する処理を行うことを特徴とする請求項３記載の演算処理システム。
【請求項１１】
上記ユーザプログラムシステムが第１のコンピュータにおいて動作するとともに、上記ライブラリプログラムシステムが、上記第１のコンピュータと通信接続された別の複数のコンピュータにおいて動作し、
上記入力値転送手段および上記演算依頼手段が、上記入力値情報および上記演算内容の情報を、ライブラリプログラムシステムが動作する１つのコンピュータに対して転送し、
上記入力値情報および上記演算内容の情報を受信したライブラリプログラムシステムにおける上記演算方法決定手段が、演算処理の分担を決定し、この分担方法の結果をユーザプログラムシステムに送信し、
上記演算依頼手段が、受信した分担方法の結果に基づいて、各コンピュータに対して演算依頼情報を転送するとともに、上記入力値転送手段が、上記演算の分担方法に基づいて各コンピュータに対して入力値情報を転送することを特徴とする請求項３記載の演算処理システム。
【請求項１２】
ユーザプログラムを実行するユーザプログラムシステムと、上記ユーザプログラムにおいて利用されるライブラリプログラムを実行するライブラリプログラムシステムとを備えた演算処理システムにおける演算処理方法において、
上記ユーザプログラムシステムにおける、
上記ライブラリプログラムシステムに演算を行わせる処理が上記ユーザプログラムによって行われる際に、演算の入力値に関する入力値情報を上記ライブラリプログラムシステムに転送する処理を行う入力値転送ステップと、
上記ライブラリプログラムシステムにおいて演算処理を行わせる演算内容の情報としての演算依頼情報を該ライブラリプログラムシステムに転送する処理を行う演算依頼ステップと、
上記ライブラリプログラムシステムにおけるライブラリプログラムの実行結果を該ライブラリプログラムシステムから受信する処理を行う演算結果受信ステップと、
上記ライブラリプログラムシステムにおける、
上記ユーザプログラムシステムから、ライブラリプログラムの実行時に用いられる演算の入力値に関する入力値情報を受信する処理を行う数値データ受信ステップと、
上記ユーザプログラムシステムから送られてきた演算依頼情報を解析することによって、利用するライブラリプログラムの種類、およびその実行順序を決定する処理を行う演算方法決定ステップと、
ライブラリプログラムの実行結果を上記ユーザプログラムシステムへ送信する処理を行う演算結果送信ステップとを有し、
上記演算依頼情報が、上記入力値情報およびライブラリプログラムの実行結果の転送処理を実施するためのプログラムを記述したプログラム言語と、上記ライブラリプログラムを記述したプログラム言語とのいずれからも独立した文法で記述された文字列であることを特徴とする演算処理方法。
【請求項１３】
請求項２または３記載の演算処理システムが備えるユーザプログラムシステム。
【請求項１４】
請求項２または３記載の演算処理システムが備えるライブラリプログラムシステム。
【請求項１５】
請求項１３記載のユーザプログラムシステムが備える各手段が有する機能をコンピュータに実行させることを特徴とするコンピュータ読み取り可能なプログラム。
【請求項１６】
請求項１５記載のプログラムを記録した記録媒体。
【請求項１７】
請求項１４記載のライブラリプログラムシステムが備える各手段が有する機能をコンピュータに実行させることを特徴とするコンピュータ読み取り可能なプログラム。
【請求項１８】
請求項１７記載のプログラムを記録した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、ユーザプログラムを実行するユーザプログラムシステムと、上記ユーザプログラムにおいて利用されるライブラリプログラムを実行するライブラリプログラムシステムとを備えた演算処理システムに関するものである。
【背景技術】
【０００２】  従来、科学技術計算等の複雑かつ膨大な演算を行う場合などに、汎用の数値計算ライブラリの利用が広く行われている。汎用の数値計算ライブラリとは、例えば連立一次方程式を解く、行列の固有値を求める、スプライン補間する、微分方程式を解くなど、数値計算法のサブルーチン集のことである。【０００３】  数値計算ライブラリを利用した演算は、基本的には、ユーザが生成し、利用するユーザプログラムが実行されるユーザプログラムシステムと、ライブラリプログラムが実行されるライブラリプログラムシステムとからなる演算処理システムによって実現される。ユーザは、ユーザプログラム中に、ライブラリプログラムの実行に関する命令を含めることにより、ライブラリプログラムを利用することになる。【０００４】  以上のように、数値計算ライブラリを利用することによって、ユーザは、複雑な数値解析プログラムを自分で作成する必要がなくなる。よって、科学技術計算を行う上でのユーザのプログラミングの負担を軽減することができる。【０００５】  従来の演算処理システムを用いて、例えば連立１次方程式Ａｘ＝ｂを解く場合には、ユーザプログラムは次のような命令列となる。
ＲＥＡＬ＊８Ａ（ＬＤＡ，Ｎ），Ｂ（Ｎ）
（データ生成）
計算：ライブラリコール
ＣＡＬＬ  ＬＵ（ＬＤＡ，Ｎ，Ａ，ＩＥＲＲ）
ＣＡＬＬ  ＳＯＬＶＥ（ＬＤＡ，Ｎ，Ａ，Ｂ，ＩＥＲＲ）
（結果の利用）
ＥＮＤ
ここで、Ａは２次元配列Ａに格納された行列であり、ｂは１次元配列Ｂに格納されたベクトルであるものとしている。【０００６】  上記のように、ユーザプログラムは、ライブラリプログラムの実行命令ごとにデータを指定するようになっている。すなわち、ライブラリプログラムの選択、使用する順番、データ形式の選択、および中間結果などのデータの管理のすべてについてユーザプログラムが責任を負わなければならない。【０００７】  また、ライブラリプログラムシステムにおけるライブラリプログラムが改良されたり新たに追加されたりした場合、ユーザプログラムのユーザは、これを考慮して、ユーザプログラムの内容を変更する必要が生じる。【０００８】  また、ライブラリプログラムの実行命令には、データの形式についての指定も含まれているので、入力値を変更したい場合には、入力値を変更するだけでなく、データの形式に応じて実行命令自体も変更する必要が生じる。【０００９】  ここで、特許文献１（特開平９−１２８３５２号公報；公開日：１９９７年５月１６日）には、「並列計算機上でユーザプログラムを一台の親プロセッサで実行し、ライブラリルーチン内部のみを複数の子プロセッサで実行する際に、子プロセッサは、最初に一回だけ起動して無限ループで待たせておき、ライブラリコール時に親プロセッサから通信で指令と実行に必要なデータを送って並列実行を行わせた後、再び実行前と同じ状態、すなわち，無限ループで親プロセッサからの通信待ち状態にする」構成が記載されている。これにより、ライブラリが複数回コールされる場合に子プロセッサ起動のオーバーヘッドが削減でき，並列計算機上でのライブラリコールを高速化できる。【００１０】  また、特許文献２（特開平１１−０３９２７１号公報；公開日：１９９９年２月１２日）には、「ユーザが解こうとするデータのサイズに応じて、ライブラリに格納されたサブルーチンの中から最適なサブルーチンを選択して割り当てる」構成が記載されている。【００１１】  さらに、非特許文献１（ＧｒｉｄＲＰＣ  Ｔｕｔｏｒｉａｌ；ｈｔｔｐ：／／ｎｉｎｆ．ａｐｇｒｉｄ．ｏｒｇ／ｐａｐｅｒｓ／ｇｒｉｄｒｐｃ＿ｔｕｔｏｒｉａｌ／ｇｒｉｄｒｐｃ＿ｔｕｔｏｒｉａｌ＿ｅ．ｈｔｍｌ）および２（ＯｍｎｉＲＰＣ：ａ  Ｇｒｉｄ  ＲＰＣ  ｓｙｓｔｅｍ  ｆｏｒ  Ｐａｒａｌｌｅｌ  Ｐｒｏｇｒａｍｍｉｎｇ；ｈｔｔｐ：／／ｗｗｗ．ｏｍｎｉ．ｈｐｃｃ．ｊｐ／ＯｍｎｉＲＰＣ／ｉｎｄｅｘ．ｈｔｍｌ．ｊａ）には、グリッドＲＰＣ（Ｒｅｍｏｔｅ  Ｐｒｏｃｅｄｕｒｅ  Ｃａｌｌ）システムが記載されている。【００１２】  また、特許文献３（特開２０００−２３１４７８号公報；公開日：２０００年８月２２日）には、「基本となるデータ処理を表す計算式や、当該計算式に必要なデータの抽出元と計算結果の移行先、および上記データの処理条件に関する各種仕様情報を定義するための仕様情報定義部と、定義された仕様情報に基づいて、抽出元からデータを取り込んで計算を行い、その結果を移行先に移行することを実現するためのプログラムを生成するプログラム生成部とを設け、元の基本的な計算式を含む仕様情報を要求に合わせて表形式で定義するだけで、その仕様情報に従ったデータ処理を実現す���ためのプログラムを自動的に生成することができるようにした」構成が記載されている。【００１３】  さらに、特許文献４（特開２００２−０７３５７８号公報；公開日：２００２年３月１２日）には、「クライアントコンピュータから発行されたリクエストを中継するプロクシコンピュータを備え、該プロクシコンピュータ内には、クライアントコンピュータから発行されたリクエストの種類と転送すべきサーバオブジェクトの対応関係を予め定義した転送先リストと、クライアントコンピュータから発行されたリクエストの種類に応じて前記転送先リストに示されたサーバオブジェクトに対しリクエストを転送するリクエスト転送手段と、サーバオブジェクトから返送された結果を元のクライアントコンピュータに転送する結果転送手段とを備える」構成が記載されている。また、特許文献５（特開２００４−１０２５０７号公報；公開日：２００４年４月２日）に記載のシステムでは、通信モジュールの受付部が第１のオブジェクトから第２のオブジェクトへの通信要求及び送信データを受け付けると、通信決定部は、ネットワーク装置への問い合わせを行い、ネットワーク装置から第２のオブジェクトに対応する通信プロトコル及びアドレス情報を受け取り、これを使用するものと決定している。さらに、通信部は、上記通信決定部で決定した通信プロトコル及びアドレス情報に従い、送信データを送信する。これによって、第１および第２のオブジェクトの間のオブジェクト間通信を実現している。
【発明の開示】
【００１４】  本発明の目的は、ユーザプログラムのユーザが、ライブラリプログラムシステムにおける具体的な処理を意識することなく、より容易にライブラリプログラムを利用することを可能とする演算処理システム、演算処理方法、ユーザプログラムシステム、ライブラリプログラムシステム、プログラム、および、プログラムを記録した記録媒体を提供することにある。
【００１５】  本発明に係る演算処理方法は、ユーザプログラムを実行するユーザプログラムシステムと、上記ユーザプログラムにおいて利用されるライブラリプログラムを実行するライブラリプログラムシステムとを備えた演算処理システムにおける演算処理方法において、上記ユーザプログラムシステムが、上記ライブラリプログラムシステムに、演算処理の対象となる処理対象データを転送する第１転送ステップと、上記ユーザプログラムシステムが、上記ライブラリプログラムシステムから上記処理対象データを演算処理した結果を示す処理結果データを受け取る第２転送ステップと、上記第１および第２転送ステップの間に、これらのステップとは独立して実施される演算指示ステップおよび演算処理ステップとを含み、上記演算指示ステップでは、上記ユーザプログラムシステムが、上記演算処理の内容を、文字列によって、上記ライブラリプログラムシステムへ指示すると共に、上記演算処理ステップでは、上記ライブラリプログラムシステムが、上記文字列を解析して、上記演算処理の際に利用するライブラリプログラムの種類、および、その実行順序を決定すると共に、当該決定されたライブラリプログラムを、上記決定された実行順序にて実行することによって、上記処理対象データを演算処理している。
【００１６】  また、本発明に係る演算処理方法は、ユーザプログラムを実行するユーザプログラムシステムと、上記ユーザプログラムにおいて利用されるライブラリプログラムを実行するライブラリプログラムシステムとを備えた演算処理システムにおける演算処理方法において、上記ユーザプログラムシステムにおける、上記ライブラリプログラムシステムに演算を行わせる処理が上記ユーザプログラムによって行われる際に、演算の入力値に関する入力値情報を上記ライブラリプログラムシステムに転送する処理を行う入力値転送ステップと、上記ライブラリプログラムシステムにおいて演算処理を行わせる演算内容の情報としての演算依頼情報を該ライブラリプログラムシステムに転送する処理を行う演算依頼ステップと、上記ライブラリプログラムシステムにおけるライブラリプログラムの実行結果を該ライブラリプログラムシステムから受信する処理を行う演算結果受信ステップと、上記ライブラリプログラムシステムにおける、上記ユーザプログラムシステムから、ライブラリプログラムの実行時に用いられる演算の入力値に関する入力値情報を受信する処理を行う数値データ受信ステップと、上記ユーザプログラムシステムから送られてきた演算依頼情報を解析することによって、利用するライブラリプログラムの種類、およびその実行順序を決定する処理を行う演算方法決定ステップと、ライブラリプログラムの実行結果を上記ユーザプログラムシステムへ送信する処理を行う演算結果送信ステップとを有していることを特徴としている。
【００１７】  上記の構成によれば、ユーザプログラムシステムにおいてユーザプログラムが実行され、ライブラリプログラムの利用が行われた際に、次の３つの処理が行われることになる。まず、演算の入力値に関する入力値情報（あるいは処理対象データ）がユーザプログラムシステムからライブラリプログラムシステムへ転送される。また、例えば、演算内容の情報をユーザプログラムシステムからライブラリプログラムシステムへ転送するなどして、ユーザプログラムシステムからライブラリプログラムシステムへ演算処理の内容が指示され、ライブラリプログラムシステムにおいて、上記演算処理の際に利用するライブラリプログラムの種類、および、その実行順序が決定される。そして、例えば、ユーザプログラムシステムからの要求に応じるなどして、実行結果（あるいは処理結果データ）がライブラリプログラムシステムからユーザプログラムシステムへ転送される。
【００１８】  このように、入力値情報の転送処理（処理対象データの転送処理）、演算内容の情報の転送処理（演算内容を指示する処理）、および、演算結果の転送処理（処理結果データの転送処理）がそれぞれ別々に行われるので、ユーザプログラムを、各処理に関する命令をそれぞれ分離した状態で構成できる。したがって、ユーザプログラムを細分化できるので、入力値（処理対象データ）や演算内容などをより容易に変更できる。また、ユーザプログラムが細分化されることによって、エラーが発生した場合にも、問題の発生箇所が認識されやすくするという効果もある。
【００１９】  また、ライブラリプログラムシステムでは、指示された演算内容が解析されて、利用するライブラリプログラムの種類、および、その実行順序が決定され、これに基づいてライブラリプログラムの実行が行われる。よって、ユーザプログラムシステムは、ライブラリプログラムシステムに対して単にどのような演算処理を行わせるかについて指示するだけでよく、どのライブラリプログラムを利用するかを指示する必要がない。したがって、ユーザプログラムでは、ライブラリプログラムシステムにおける具体的な処理を考慮する必要がないので、ユーザプログラムのユーザは、ライブラリプログラムシステムにおける処理の詳細に関する知識を必要とせずに、より容易にライブラリプログラムを利用できる。
【００２０】  また、ライブラリプログラムシステムにおいて演算依頼情報（あるいは演算内容を示す文字列）が解析されて、適切なライブラリプログラムが実行されるようになっているので、ライブラリプログラムシステムは、ユーザプログラムがどのようなプログラム言語によって記述されていても対応できる。
【００２１】  また、ライブラリプログラムが改良されたり、新たなライブラリプログラムが追加されたりしたとしても、ユーザプログラム側では、これを一切認識する必要がなく、ライブラリプログラムシステム側で自動的に適切なライブラリプログラムが利用される。すなわち、ライブラリプログラムシステムが変更されたとしても、ユーザプログラムを変更することなく対応できる。また、このようなシステムを導入した際にも、今まで使っていたライブラリプログラムをそのまま利用できる。
【００２２】  また、ライブラリプログラムシステムにおいて実行される演算に関しては、ユーザプログラムシステムは関与する必要がない。したがって、ユーザプログラムシステムにおけるユーザプログラムのサイズを削減できると共に、ユーザプログラムシステムにおけるメモリ使用量も削減できる。
【００２３】  本発明のさらに他の目的、特徴、および優れた点は、以下に示す記載によって十分わかるであろう。また、本発明の利益は、添付図面を参照した次の説明で明白になるであろう。
【図面の簡単な説明】
【００２４】
【図１】本発明の一実施形態に係る演算処理システムの概略構成を示すブロック図である。
【図２】ユーザプログラムシステムにおける処理の流れを示すフローチャートである。
【図３】ライブラリプログラムシステムにおける処理の流れを示すフローチャートである。
【図４】ユーザプログラムシステムおよびライブラリプログラムシステムの両方が、１つのコンピュータにおいて実行される構成例を示すブロック図である。
【図５】ユーザプログラムシステムが実行されるコンピュータと、ライブラリプログラムシステムが実行されるコンピュータとが通信ネットワークを介して接続された構成例を示すブロック図である。
【図６】ユーザプログラムシステムが実行されるコンピュータと、ライブラリプログラムシステムが実行される複数のコンピュータとが通信ネットワークを介して接続された構成例を示すブロック図である。
【図７】ユーザプログラムシステムが実行されるコンピュータと、ライブラリプログラムシステムが実行される複数のコンピュータとが通信ネットワークを介して接続された別の構成例を示すブロック図である。
【図８】ユーザプログラムシステムおよびライブラリプログラムシステムの両方が、それぞれ複数存在する構成例を示すブロック図である。
【図９】ユーザプログラムシステムとライブラリプログラムシステムとの間における、データシーケンス例を示す図面である。
【符号の説明】
【００２５】  １    演算処理システム
２    ユーザプログラムシステム
３    ライブラリプログラムシステム
１３    演算処理部
１４    記憶部
１４Ａ  ユーザプログラム格納部
１４Ｂ  数値データ格納部
１４Ｃ  演算結果データ格納部
２１    ユーザプログラム実行部
２２    転送制御部
２２Ａ  数値データ転送部（入力値転送手段；第１転送手段）
２２Ｂ  演算依頼部（演算依頼手段）
２２Ｃ  演算結果受信部（演算結果受信手段；第２転送手段）
３２    演算処理部（演算処理手段）
３３    記憶部
３３Ａ  ライブラリプログラム格納部
３３Ｂ  数値データ格納部
３３Ｃ  演算結果データ格納部
４１    転送制御部
４２    ライブラリプログラム実行部
４１Ａ  数値データ受信部（入力値受信手段）
４１Ｂ  演算方法決定部（演算方法決定手段）
４１Ｃ  演算結果送信部（演算結果送信手段）
【発明を実施するための最良の形態】
【００２６】  本発明の一実施形態について図１ないし図７に基づいて説明すると以下の通りである。【００２７】  （演算処理システムの構成）
図１は、本実施形態に係る演算処理システム１の概略構成を示すブロック図である。同図に示すように、演算処理システム１は、ユーザプログラムシステム２、およびライブラリプログラムシステム３を備えた構成となっている。【００２８】  ユーザプログラムシステム２は、ユーザが作成し、利用するユーザプログラムを実行するシステムである。このユーザプログラムシステム２は、入出力部１１、転送処理部１２、演算処理部１３、および記憶部１４を備えている。【００２９】  入出力部１１は、ユーザからの入力を受け付けるとともに、演算処理部１３による演算結果をユーザに対して表示・出力するものである。転送処理部１２は、ライブラリプログラムシステム３との間でのデータの送受信を行うものである。【００３０】  演算処理部１３は、ユーザプログラムの演算処理を行うものである。この演算処理部１３は、ユーザプログラム実行部２１、および転送制御部２２を備えている。【００３１】  ユーザプログラム実行部２１は、記憶部１４に記憶されているユーザプログラムを読み出して実行するものである。転送制御部２２は、ユーザプログラム実行部２１において実行されているユーザプログラムが、ライブラリプログラムシステム３に格納されているライブラリプログラムを利用する場合に、ライブラリプログラムシステム３に対してのデータの送受信に関する制御処理を行うものである。この転送制御部２２は、数値データ転送部（入力値転送手段）２２Ａ、演算依頼部（演算依頼手段）２２Ｂ、および演算結果受信部（演算結果受信手段）２２Ｃを備えている。【００３２】  数値データ転送部２２Ａは、ライブラリプログラムシステム３に演算処理を実行させる際に、演算の入力値となる数値データおよびそのデータ形式をライブラリプログラムシステム３に転送する処理を行う。演算依頼部２２Ｂは、ライブラリプログラムシステム３において行わせる演算内容の情報（演算依頼情報）をライブラリプログラムシステム３に転送する処理を行う。この演算依頼情報は、特定のライブラリプログラムの実行命令ではなく、数学の演算式そのものを表す文字列を含んでいる。演算結果受信部２２Ｃは、ライブラリプログラムシステム３におけるライブラリプログラムの実行結果をライブラリプログラムシステム３に対して要求するとともに、該実行結果をライブラリプログラムシステム３から受信する処理を行う。【００３３】  記憶部１４は、演算処理部１３における演算処理で用いられるデータを格納するとともに、演算処理部１３のワークメモリとして機能する記憶手段である。なお、記憶部１４は、主記憶機能に加えて、補助記憶機能を有するものであってもよく、また、外部に補助記憶装置を備える構成であっても構わない。この記憶部１４は、ユーザプログラム格納部１４Ａ、数値データ格納部１４Ｂ、および演算結果データ格納部１４Ｃを備えている。【００３４】  ユーザプログラム格納部１４Ａは、演算処理部１３において実行されるユーザプログラムを格納する領域である。数値データ格納部１４Ｂは、数値データ転送部２２Ａによって転送される数値データおよびそのデータ形式を格納する領域である。演算結果データ格納部１４Ｃは、演算結果受信部２２Ｃによって受信され���実行結果を格納する領域である。なお、実際のメモリの利用に際しては、数値データ格納部１４Ｂおよび演算結果データ格納部１４Ｃは、両者が区別されることなく、変数や配列として記憶部１４に記憶される。また、ライブラリプログラム演算に関係しないその他の演算に必要とされる数値データなども記憶部１４に格納される。【００３５】  一方、ライブラリプログラムシステム３は、ユーザプログラムシステム２からの依頼に応じて、ライブラリプログラムを実行するシステムである。このライブラリプログラムシステム３は、転送処理部３１、演算処理部３２、および記憶部３３を備えている。【００３６】  転送処理部３１は、ユーザプログラムシステム２との間でのデータの送受信を行うものである。【００３７】  演算処理部３２は、ライブラリプログラムの演算処理を行う。この演算処理部３２は、ライブラリプログラム実行部４２、および転送制御部４１を備えている。【００３８】  ライブラリプログラム実行部４２は、記憶部３３に記憶されているライブラリプログラムを読み出して実行する。転送制御部４１は、ユーザプログラムシステム２において実行されているユーザプログラムが、ライブラリプログラムシステム３による処理を利用するものである場合に、ユーザプログラムシステム２からの要求に応じて、該ユーザプログラムシステム２に対してのデータの送受信に関する制御処理を行う。この転送制御部４１は、数値データ受信部（入力値受信手段）４１Ａ、演算方法決定部（演算方法決定手段）４１Ｂ、および演算結果送信部（演算結果送信手段）４１Ｃを備えている。【００３９】  数値データ受信部４１Ａは、ユーザプログラムシステム２から、例えばライブラリプログラムの実行時に用いられる演算の入力値となる数値データおよびそのデータ形式を受信する処理を行う。なお、数値データ受信部４１Ａは、ライブラリプログラムの実行に用いないデータをユーザプログラムシステム２から受信してもよい。【００４０】  演算方法決定部４１Ｂは、ユーザプログラムシステム２から送られてきた演算依頼情報を解析することによって、利用するライブラリプログラム、およびその実行順序を決定する処理を行う。演算結果送信部４１Ｃは、ライブラリプログラム実行部４２におけるライブラリプログラムの実行結果を、ユーザプログラムシステム２からの要求に応じてユーザプログラムシステム２へ送信する処理を行う。【００４１】  記憶部３３は、演算処理部３２における演算処理で用いられるデータを格納するとともに、演算処理部３２のワークメモリとして機能する記憶手段である。なお、記憶部３３は、主記憶機能に加えて、補助記憶機能を有するものであってもよく、また、外部に補助記憶装置を備える構成であっても構わない。この記憶部３３は、ライブラリプログラム格納部３３Ａ、数値データ格納部３３Ｂ、および演算結果データ格納部３３Ｃを備えている。【００４２】  ライブラリプログラム格納部３３Ａは、演算処理部３２において実行されるライブラリプログラムを格納する領域である。数値データ格納部３３Ｂは、数値データ転送部４１Ａによって受信された数値データおよびそのデータ形式を格納する領域である。演算結果データ格納部３３Ｃは、ライブラリプログラム実行部４２によるライブラリプログラムの実行結果を格納する領域である。なお、実際のメモリの利用に際しては、数値データ格納部３３Ｂおよび演算結果データ格納部３３Ｃは、両者が区別されることなく、変数や配列として記憶部３３に記憶される。また、ライブラリプログラム演算において一時的に用いられる中間データとしての変数や、数値データに対するディレクトリ構造を示す管理情報なども記憶部３３に格納される。【００４３】  （演算処理システムにおける処理の流れ）
次に、上記した演算処理システム１における処理の流れについて、図２および図３を参照しながら以下に説明する。図２は、ユーザプログラムシステム２における処理の流れを示すフローチャートであり、図３は、ライブラリプログラムシステム３における処理の流れを示すフローチャートである。【００４４】  （ユーザプログラムシステムにおける処理の流れ）
まず、図２を参照しながら、ユーザプログラムシステム２における処理の流れについて説明する。まずステップ１（以降、Ｓ１のように称する）において、ユーザプログラムシステム２において、ユーザプログラム実行部２１がユーザプログラムの実行を開始する。すなわち、例えば入出力部１１においてユーザからの所定のユーザプログラムの実行指示が受け付けられると、この情報がユーザプログラム実行部２１に伝達される。そして、ユーザプログラム実行部２１は、指定されたユーザプログラムを、記憶部１４のユーザプログラム格納部１４Ａから読み出し、該ユーザプログラムの実行を開始する。【００４５】  その後、ユーザプログラム実行部２１は、該ユーザプログラムのコードを順次実行する。そして、ユーザプログラム実行部２１が、ライブラリプログラムシステム３に対して数値データおよびそのデータ形式を転送することを示すコードを実行した場合（Ｓ２においてＹＥＳ）には、数値データ転送部２２Ａが、該数値データおよびそのデータ形式に関する情報を、ライブラリプログラムシステム３に対して転送するように転送処理部１２を制御する。この数値データおよびそのデータ形式に関する情報は、入出力部１１によってユーザから入力されるものであってもよいし、実行されているユーザプログラムによって生成されるものであってもよい。これにより、数値データおよびそのデータ形式に関する情報が、転送処理部１２によってライブラリプログラムシステム３へ転送される（Ｓ３）。また、数値データ転送部２２Ａは、記憶部１４における数値データ格納部１４Ｂに、転送した数値データおよびそのデータ形式に関する情報を格納する。【００４６】  また、ユーザプログラム実行部２１が、ライブラリプログラムシステム３において演算処理を行わせるコードを実行した場合（Ｓ４においてＹＥＳ）には、演算依頼部２２Ｂが、演算依頼内容を示す演算依頼情報をライブラリプログラムシステム３に対して転送するように転送処理部１２を制御する。この演算依頼情報は、入出力部１１によってユーザから入力されるものであってもよいし、実行されているユーザプログラムによって生成されるものであってもよい。これにより、演算依頼情報が、転送処理部１２によってライブラリプログラムシステム３へ転送される（Ｓ５）。【００４７】  また、ユーザプログラム実行部２１が、ライブラリプログラムシステム３において演算処理が行われた結果を要求することを示すコードを実行した場合（Ｓ６においてＹＥＳ）には、演算結果受信部２２Ｃは、結果要求情報を、ライブラリプログラムシステム３に対して転送するように転送処理部１２を制御する。なお、転送されただけで演算が行われていない数値データ格納部３３Ｂに格納されている数値データの転送を要求してもよい。この結果要求情報は、入出力部１１によってユーザから入力されるものであってもよいし、実行されているユーザプログラムによって生成されるものであってもよい。これにより、結果要求情報が、転送処理部１２によってライブラリプログラムシステム３へ転送される。その後、ライブラリプログラムシステム３から演算結果が転送処理部１２において受信されると、演算結果受信部２２Ｃは、受信した演算結果を、記憶部１４における演算結果データ格納部１４Ｃに格納する（Ｓ７）。【００４８】  以上のＳ２、Ｓ４、およびＳ６のいずれの場合においてもＮＯである場合には、ユーザプログラム実行部２１は、ユーザ定義処理、すなわち、ユーザプログラムにおけるその他の処理を行うことになる（Ｓ８）。そして、Ｓ９において、ユーザプログラム実行部２１は、該ユーザプログラムの実行を完了したか否かを判定する。Ｓ９においてＮＯ、すなわち、ユーザプログラムの実行が完了していない場合は、Ｓ２からの処理に戻ることになる。一方、ユーザプログラムの実行が完了したと判定された場合（Ｓ９においてＹＥＳ）には、ユーザプログラムの処理が終了する。【００４９】  なお、Ｓ２、Ｓ４、Ｓ６、およびＳ８の処理は、上記の順で行われることに限定されるものではなく、どの順序で行われてもよい。すなわち、Ｓ３、Ｓ５、Ｓ７、およびＳ８の処理は、該当するコードが実行された順序で行われればよい。【００５０】  以上のように、ユーザプログラムシステム２における処理は、ライブラリプログラムシステム３における処理とは非同期に進行する。【００５１】  （ライブラリプログラムシステムにおける処理の流れ）
次に、図３を参照しながら、ライブラリプログラムシステム３における処理の流れについて説明する。まずＳ１１において、数値データ受信部４１Ａが、ユーザプログラムシステム２から数値データおよびそのデータ形式に関する情報を転送処理部３１を介して受信したか否かを判定する。Ｓ１１においてＹＥＳ、すなわち、数値データおよびそのデータ形式に関する情報が受信されたと判定された場合には、数値データ受信部４１Ａは、受信した数値データおよびそのデータ形式に関する情報を記憶部３３における数値データ格納部３３Ｂに格納する（Ｓ１２）。【００５２】  また、Ｓ１３において、演算方法決定部４１Ｂが、ユーザプログラムシステム２から演算依頼情報を転送処理部３１を介して受信したか否かを判定する。Ｓ１３においてＹＥＳ、すなわち、演算依頼情報が受信されたと判定された場合には、演算方法決定部４１Ｂは、受信した演算依頼情報を解析することによって、利用するライブラリプログラムの種類、およびその実行順序を決定する処理を行う（Ｓ１４）。【００５３】  次に、Ｓ１５において、ライブラリプログラム実行部４２は、演算方法決定部４１Ｂによって決定されたライブラリプログラムの種類およびその実行順序に基づいて、ライブラリプログラムによる演算を実行する。ここで、ライブラリプログラム実行部４２は、記憶部３３におけるライブラリプログラム格納部３３Ａから必要とするライブラリプログラムを読み出すとともに、記憶部３における数値データ格納部３３Ｂから入力値としての数値データおよびそのデータ形式に関する情報を読み出して、演算を実行する。その後、Ｓ１６において、ライブラリプログラム実行部４２は、演算結果データを記憶部３３における演算結果データ格納部３３Ｃに格納する。【００５４】  また、Ｓ１７において、演算結果送信部４１Ｃが、ユーザプログラムシステム２から演算結果の送信要求を転送処理部３１を介して受信したか否かを判定する。Ｓ１７においてＹＥＳ、すなわち、演算結果の送信要求が受信されたと判定された場合には、演算結果送信部４１Ｃは、記憶部３３における演算結果データ格納部３３Ｃから演算結果データを読み出し、これを転送処理部３１からユーザプログラムシステム２に対して送信する制御を行う。これにより、演算結果がライブラリプログラムシステム３からユーザプログラムシステム２に対して送信される（Ｓ１８）。なお、数値データ格納部３３Ｂに格納されている数値データに対する送信要求だった場合、演算結果送信部４１Ｃは、記憶部３３における数値データ格納部３３Ｂから数値データおよびそのデータ形式を読み出し、これを転送処理部３１からユーザプログラムシステム２に対して送信する制御を行うようになっていてもよい。【００５５】  なお、Ｓ１１、Ｓ１３、およびＳ１７の処理は、上記の順で行われることに限定されるものではなく、どの順序で行われてもよい。すなわち、Ｓ１２、Ｓ１４〜Ｓ１６、およびＳ１８の処理は、該当するコードが実行された順序で行われればよい。【００５６】  ここで、比較対象として、上述した従来の演算処理システムについて簡単に説明する。当該従来の演算処理システムを用いた構成、すなわち、ユーザプログラムがライブラリプ��グラムの実行命令毎にデータを指定する構成では、ユーザプログラムは、ライブラリプログラムの選択、データを記述する順番、データ形式の選択、および中間結果などのデータの管理のすべてについてユーザプログラムが責任を負わなければならない。したがって、従来の演算処理システムでは、ユーザプログラムが肥大化する傾向にあり、分散並列用ライブラリの作成も困難になってしまう。【００５７】  このように、従来の演算処理システムでは、ライブラリプログラムの呼び出し方法が個々のライブラリプログラムに依存している一方で、データの格納形式は、ユーザプログラムに依存している。したがって、ユーザは、以下のようなユーザプログラム、すなわち、所望の演算処理が可能なライブラリプログラムに適切な方法でデータを格納し、当該ライブラリプログラムに適切な呼び出し方法で呼び出すユーザプログラムを生成する必要がある。さらに、従来の演算処理システムでは、Ｒｅｖｅｒｓｅ  Ｃｏｍｍｕｎｉｃａｔｉｏｎを用いて、下位のサブプログラムをユーザが提供する必要も生じる。また、多くのライブラリプログラムシステムでは、使用可能な作業領域が予め決められるので、ユーザプログラムは、当該与えられた作業領域を使用して、上記形式でデータを格納する必要がある。なお、上記データ格納形式は、演算処理の内容だけではなく、ライブラリプログラムを記述したプログラム言語にも依存していることが多いため、多くの場合、演算処理の内容が類似しているライブラリプログラムであっても、それぞれを記述したプログラム言語が互いに異なっていれば、上記データ格納形式も互いに異なることがある。【００５８】  また、ライブラリプログラムシステムにおけるライブラリプログラムが改良されたり新たに追加されたりした場合、ユーザプログラムのユーザは、これを考慮して、ユーザプログラムの内容を変更する必要が生じる。【００５９】  さらに、ライブラリプログラムの実行命令には、データの形式についての指定も含まれているので、入力値を変更したい場合には、入力値を変更するだけでなく、データの形式に応じて実行命令自体も変更する必要が生じる。【００６０】  このように、従来の演算処理システムでは、ユーザプログラムは、ソースレベルでライブラリプログラムに依存しており、ライブラリプログラムを変更するためには、ユーザプログラムを多くの箇所で変更する必要がある。【００６１】  これに対して、本実施形態に係る演算処理システム１では、上述したように、ユーザプログラムシステム２が、上記ライブラリプログラムシステム３に、演算処理の対象となる処理対象データとしての数値データ、および、そのデータ形式を転送する第１転送ステップ（Ｓ３）と、上記ユーザプログラムシステム２が、上記ライブラリプログラムシステム３から、上記処理対象データを演算処理した結果を示す処理結果データとしての数値データ、および、そのデータ形式を受け取る第２転送ステップ（Ｓ１８）とが実施されている。さらに、上記第１転送ステップおよび第２転送ステップの間には、これらのステップとは独立して実施される演算指示ステップ（Ｓ５）および演算処理ステップ（Ｓ１４〜Ｓ１６）が実施されている。【００６２】  さらに、上記Ｓ５にて、上記ユーザプログラムシステム２がライブラリプログラムシステム３へ送信する演算依頼情報には、上記演算処理の内容を示す文字列（例えば、数学の演算式そのものを示す文字列など）が含まれており、また、上記Ｓ１４〜Ｓ１６において、上記ライブラリプログラムシステム３は、上記文字列を含む演算依頼情報を解析して、上記演算処理の際に利用するライブラリプログラムの種類、および、その実行順序を決定すると共に、当該決定されたライブラリプログラムを、上記決定された実行順序にて実行することによって、上記処理対象データを演算処理している。【００６３】  このように、本実施形態に係る演算処理システム１では、図９に示すように、処理対象データの転送処理（数値データの転送処理）Ｐ１と、演算処理の内容を指示する処理（演算依頼情報の転送処理）Ｐ２と、処理結果データの転送処理（演算結果の転送処理）Ｐ３とが、それぞれ別々に行われるので、ユーザプログラムを、各処理に関する命令をそれぞれ分離した状態で構成できる。【００６４】  したがって、ユーザプログラムを細分化できるので、処理対象データの変更や演算内容の変更などをより容易に行うことができる。また、ユーザプログラムが細分化されることによって、エラーが発生した場合にも、問題の発生箇所が認識されやすくできる。【００６５】  なお、図９中、破線で示したように、本実施形態に係るライブラリシステム３は、処理対象データの転送および演算処理の内容の指示を受け付けた場合、ユーザプログラムシステム２へのアクノリッジ（ＯＫ）を返すと共に、ユーザプログラムシステム２からの演算結果の要求に応じて、上記処理結果データの転送処理を開始している。なお、エラーが発生した場合、ライブラリシステム３は、ユーザプログラムシステム２にエラーを返している。【００６６】  さらに、ライブラリプログラムシステム３では、演算処理の内容を示す文字列が解析されて、利用するライブラリプログラムの種類、および、その実行順序が決定され、これに基づいてライブラリプログラムの実行が行われる。【００６７】  よって、演算内容を指示する際、ユーザプログラムシステム２は、ライブラリプログラムシステム３に対して、単に演算内容を示す文字列を送信するだけでよく、どのライブラリプログラムを利用するかを指示する必要がない。【００６８】  さらに、ライブラリプログラムシステムにおいて実行される演算に関しては、ユーザプログラムシステムは関与する必要がない。したがって、ライブラリプログラムが実行されるメモリ空間とは異なったメモリ空間で実行されるユーザプログラムのサイズを小さくできると共に、ユーザプログラムシステムにおけるメモリ使用量も小さくできる。【００６９】  また、上記のようにして、ライブラリプログラムシステム３がライブラリプログラムの種類、および、その実行順序を決定しているので、演算内容の情報を示す文字列は、以下の各プログラム言語、すなわち、ユーザプログラムのうち、処理対象データおよび処理結果データのの転送処理を実施するためのプログラムを記述するプログラム言語と、ライブラリプログラムを記述したプログラム言語とのいずれからも独立した自由な文法で記述できる。【００７０】  ��れらの結果、処理対象データの転送処理と、演算処理の内容を指示する処理と、処理結果データの転送処理とのうちの１つが、他の処理に依存する度合いを低くすることができる。また、演算処理の内容を指示する処理が、実際にライブラリプログラムシステム３で行われる演算処理に依存する度合いも低くすることができる。これにより、上記各処理のいずれが変更されても、その変更が他の処理に影響しにくくなり、より容易にライブラリプログラムを利用できる。【００７１】  より詳細には、上記のようにして、ライブラリプログラムシステム３がライブラリプログラムの種類、および、その実行順序を決定しているので、ユーザプログラムでは、ライブラリプログラムシステム３における具体的な処理を考慮する必要がない。したがって、ユーザプログラムのユーザは、ライブラリプログラムシステム３における処理の詳細に関する知識を必要とせずに、より容易にライブラリプログラムを利用できる。【００７２】  また、ライブラリプログラムが改良されたり、新たなライブラリプログラムが追加されたりしたとしても、ライブラリプログラムシステム３側で自動的に適切なライブラリプログラムが選択される。加えて、ライブラリプログラムシステム３のハードウェア構成が変更され、使用可能なプロセッサの数が増えたとしても、ライブラリプログラムシステム３は、その数に応じた適切なライブラリプログラムを自動的に選択できる。【００７３】  このように、ライブラリプログラムシステム３が変更されたとしても、ユーザプログラムを変更することなく対応できる。この結果、ユーザプログラム側では、ライブラリプログラムの改良や変更などを一切認識する必要がなく、より容易にライブラリプログラムを利用できる。また、このようなシステムを導入した際にも、今まで使っていたライブラリプログラムをそのまま利用できる。【００７４】  このように、ライブラリプログラムシステム３のハードウェア構成およびライブラリプログラムのバージョンアップが容易なので、ライブラリプログラムシステム３に比較的容易に新技術を導入できる。新技術導入の一例としては、ライブラリプログラムに新アルゴリズムを採用すること、ライブラリプログラムの精度を拡張したり、精度を保証したりすること、ライブラリプログラムのフォルトトレラント化または自動的な性能最適化、あるいは、分散並列処理可能なライブラリプログラムの実現などが挙げられる。【００７５】  さらに、上記各プログラム言語が変更されても、ユーザプログラムのユーザは、上記演算内容を示す文字列を変更することなく、ライブラリプログラムシステムに演算処理を依頼でき、より容易にライブラリプログラムを利用できる。【００７６】  さらに、本実施形態に係るライブラリプログラムシステム３は、上記文字列（演算依頼情報）の解析結果に加えて、処理対象データ（数値データ）と共に送信されるデータ形式をも参照して、上記演算処理に利用するライブラリプログラム、当該ライブラリプログラムの挙動、および、各ライブラリプログラムの実行順序を決定している。ここで、データ構造としては、例えば、処理対象データの型、あるいは、処理対象データが配列の場合における配列要素の数および配列の次��などが挙げられる。なお、ライブラリプログラムシステム３は、ユーザプログラムシステム２から受け取ったデータ形式を参照する代わりに、処理対象データのデータ構造を解析して、処理対象データのデータ構造を取得し、その解析結果を参照してもよい。【００７７】  この構成では、処理対象データのデータ形式は、入力値情報として、ライブラリプログラムシステム３に転送されるか、あるいは、ライブラリプログラムシステム３が処理対象データのデータ構造を解析するかすることによって取得しており、演算内容の情報には、数値データのデータ形式に関する情報を含める必要がない。【００７８】  また、上記処理対象データのデータ形式が変化した場合、上記演算処理の内容を示す文字列（演算依頼情報）を変更しなくても、データ形式の変化に応じて、上記演算処理に利用するライブラリプログラム、当該ライブラリプログラムの挙動、あるいは、各ライブラリプログラムの実行順序が変更される。【００７９】  したがって、異なったデータ形式を扱うユーザプログラムを組み合わせたりすることが容易に可能となる。また、上記処理対象データのデータ構造が変化した場合に、それに応じて、ライブラリプログラムシステムへの演算処理の指示が変更される構成と比較して、処理対象データの変更や演算内容の変更などをより容易に行うことができる。【００８０】  （システム構成例１）
次に、演算処理システム１の具体的構成例について説明する。このシステム構成例１は、図４に示すように、ユーザプログラムシステム２およびライブラリプログラムシステム３の両方が、１つのコンピュータ１Ａにおいて実行されるものとなっている。【００８１】  コンピュータ１Ａは、演算手段としてのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、主記憶手段としてのＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、および、不揮発性記憶装置としてのＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やハードディスクなどを備えた一般的なコンピュータである。そして、ユーザプログラムシステム２における演算処理部１３の各機能ブロック、および、ライブラリプログラムシステム３における演算処理部３２の各機能ブロックは、ＣＰＵがＲＡＭに該当プログラムをハードディスクなどから読み出して実行することによって実現される。また、記憶部１４は、ＲＡＭ、およびハードディスクなどによって実現される。【００８２】  また、ユーザプログラムシステム２における転送処理部１２、および、ライブラリプログラムシステム３における転送処理部３１は、演算処理部１３によるプログラムと、演算処理部３２によるプログラムとの間でデータの転送処理、すなわちプロセス間通信を行う。また、入出力部１１は、コンピュータ１Ａが備えるキーボードやマウスなどの入力手段、および、表示手段としてのディスプレイ、印刷手段としてのプリンタなどによって実現される。【００８３】  なお、コンピュータ１Ａが複数のプロセッサを有し、並列演算を行うことが可能な構成であってもよい。【００８４】  （システム構成例１における具体的動作例）
次に、システム構成例１における具体的動作例について説明する。ここでの動作例は、次のようなものである。ユーザプログラムシステム２におけるユーザプログラムにおいて、連立１次方程式Ａｘ＝ｂを解くという命令が含まれており、この連立１次方程式Ａｘ＝ｂの演算がライブラリプログラムシステム３において行われる。詳しく説明すると、Ａ（ＬＤＡ，Ｎ）で宣言された倍精度実数型の２次元配列に係数行列Ａが格納され、Ｂ（Ｎ）で宣言された倍精度実数型の１次元配列にベクトルｂが格納される。そして、連立１次方程式Ａｘ＝ｂの解ベクトルｘは、ＳＯＬ（Ｎ）で宣言された倍精度実数型の１次元配列に格納される。【００８５】  以上の動作例における処理の流れは次のとおりである。まず、ライブラリプログラムシステム３における演算処理部３２が動作可能状態に設定される。次に、ユーザプログラムシステム２における演算処理部１３が、ユーザからの指示入力などに基づいて特定のユーザプログラムの実行を開始する。【００８６】  その後、ユーザプログラムの実行過程において、ライブラリプログラムシステム３に実行させる演算処理の入力値として用いられる数値データおよびそのデータ形式が生成される。本動作例では、数値データおよびそのデータ形式として、上記の係数行列Ａおよびベクトルｂが生成される。生成された係数行列Ａおよびベクトルｂは、数値データ格納部１４Ｂに配列Ａおよび配列Ｂとして格納される。【００８７】  その後、ユーザプログラム実行部２１は、ユーザプログラム中の次のステートメントを実行する。
ＣＡＬＬ  ＰＵＴ（’Ａ’，ＬＤＡ，Ｎ，Ａ，ＩＥＥＲ）
ＣＡＬＬ  ＰＵＴ（’ｂ’，Ｎ，Ｂ，ＩＥＲＲ）
上記のステートメントは、ライブラリプログラムシステム３に対して、係数行列Ａが格納された配列Ａ、および、ベクトルｂが格納された配列Ｂを送信する、という命令を示している。なお、「ＰＵＴ」という命令は、特にこの文字列に限定されるものではなく、他の文字列によってこの命令を示すようになっていてもよい。【００８８】  上記のステートメントがユーザプログラム実行部２１によって実行されると、数値データ転送部２２Ａは、配列Ａおよび配列Ｂを、ライブラリプログラムシステム３に対して転送するように転送処理部１２を制御する。これにより、配列Ａおよび配列Ｂが、転送処理部１２によってライブラリプログラムシステム３へ転送される。【００８９】  ライブラリプログラムシステム３では、数値データ受信部４１Ａが配列Ａおよび配列Ｂを受信し、これを係数行列Ａおよびベクトルｂとして数値データ格納部３３Ｂに格納する。【００９０】  次に、ユーザプログラム実行部２１は、ユーザプログラム中の次のステートメントを実行する。
ＣＡＬＬ  ＳＩＬＣ（’ｘ＝Ａ￥ｂ’）
上記のステートメントは、ライブラリプログラムシステム３に対して、演算依頼情報として、連立１次方程式Ａｘ＝ｂを解くことを指示する命令を示している。なお、「ＳＩＬＣ」という命令は、特にこの文字列に限定されるものではなく、他の文字列によってこの命令を示すようになっていてもよい。この命令によって、ライブラリプログラムシステム３において演算が実行されるが、ユーザプログラムシステム２は、ライブラリプログラムシステム３における演算の終了を待たずに次のステートメントに移行する。【００９１】  ライブラリプログラムシステム３では、演算方法決定部４１Ｂが、上記の演算依頼情報を受信し、受信した演算依頼情報を解析することによって、利用するライブラリプログラムの種類、およびその実行順序を決定する処理を行う。【００９２】  具体的には、演算方法決定部４１Ｂは、上記の演算依頼情報として、例えば、演算子とオペランドとからなる文字列が与えられた場合、文字列の解析によって、演算子とオペランドとを特定し、オペランドの型、および、演算子の種類から、利用するライブラリプログラムを決定する。一例として、演算方法決定部４１Ｂは、依頼を受け付け可能なオペランドの型と演算子の種類との組み合わせの全てについて、組み合わせと、その組み合わせの場合に利用するライブラリプログラム（またはライブラリプログラムの組み合わせ）との対応関係を記憶しておき、依頼されたオペランドの型と演算子の種類との組み合わせに対応するライブラリプログラム（またはライブラリプログラムの組み合わせ）を、利用するライブラリプログラムとして決定する。なお、上記ライブラリプログラムシステム３には、上記対応関係を変更するためのＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）が用意されており、例えば、ライブラリプログラムのバージョンアップ時などに、ライブラリプログラムシステム３のユーザ（運用者）から対応関係変更指示を受け取ると、ライブラリプログラムシステム３は、指示に応じて、対応関係を変更できる。【００９３】  また、文字列に複数の演算子が含まれている場合、演算方法決定部４１Ｂは、文字列の解析によって、各演算子の実行順序を決定し、それをライブラリプログラムの実行順序として決定する。さらに、上記演算方法決定部４１Ｂは、例えば、上記のように種類および実行順序が決定された各ライブラリプログラムを実行するためのステートメントを生成し、当該ステートメントをライブラリプログラム実行部４２へ与えるなどして、ライブラリプログラム実行部４２に、当該決定されたライブラリプログラムの実行を指示する。なお、どちらが先でもかまわない演算であって、しかも、ライブラリプログラムシステム３が複数のプロセッサを備えていると判断した場合、演算方法決定部４１Ｂは、各演算に対応するライブラリプログラムの並列実行を、各プロセッサへ指示してもよい。【００９４】  さらに、上記演算方法決定部４１Ｂは、例えば、各ライブラリプログラムの実行終了時に、各ライブラリプログラムを実行する部材（例えば、ライブラリプログラム実行部４２など）によって設定されるフラグを監視するなどして、各ライブラリプログラムの実行終了を監視し、各ライブラリプログラムの実行が終了しているか否かに応じて、次に実行するライブラリプログラムを決定してもよい。これにより、例えば、ライブラリプログラムシステム３、あるいは、そのプロセッサ毎に、ライブラリプログラムを実行する部材の性能が異なっており、予め、ライブラリプログラムの実行に要する時間を決定できない場合であっても、何ら支障なく、次に実行するライブラリプログラムを適切に決定できる。【００９５】  例えば、上記のように、演算依頼情報として’ｘ＝Ａ￥ｂ’を受信した場合、演算方法決定部４１Ｂは、受信した演算依頼情報（’ｘ＝Ａ￥ｂ’）に基づいて、次のステートメントを生成する。
ＣＡＬＬ  ＬＵ（ＬＤＡ，Ｎ，Ａ１，ＩＰ，ＩＥＲＲ）
ｘ←ｂ
ＣＡＬＬ  ＳＯＬＶＥ（ＬＤＡ，Ｎ，Ａ１，ＩＰ，ｘ，ＩＥＲＲ）
上記ステートメントの１行目はＬＵ分解処理を示しており、２行目は代入処理を示しており、３行目は前進後退代入処理を示している。このステートメントにおいて、演算方法決定部４１Ｂは、例えば、定義されたＡをプログラムに合う形に変換したＡ１（実際にはＡをＡ１にコピー）を割り当てたり、中間変数としてｘ、ＩＰを割り当てたりする処理を行う。なお、Ａ１、ＩＰ、ｘはライブラリプログラムシステム３においてのみ用いられる変数である。【００９６】  ライブラリプログラム実行部４２は、演算方法決定部４１Ｂによって決定された演算に基づいてライブラリプログラムを実行し、解ｘを導出する。導出された解は演算結果データとして、演算結果データ格納部３３Ｃに格納される。【００９７】  その後、ユーザプログラムシステム２において、ユーザプログラム実行部２１は、ユーザプログラム中の次のステートメントを実行する。
ＣＡＬＬ  ＧＥＴ（’ｘ’，Ｎ，ＳＯＬ，ＩＥＲＲ）
上記のステートメントは、ライブラリプログラムシステム３から、演算結果としての解ｘを受信し、この解ｘを配列ＳＯＬに格納する命令を示している。なお、「ＧＥＴ」という命令は、特にこの文字列に限定されるものではなく、他の文字列によってこの命令を示すようになっていてもよい。【００９８】  上記のステートメントが実行されると、演算結果受信部２２Ｃは、結果要求情報としての上記ステートメントを、ライブラリプログラムシステム３に対して転送するように転送処理部１２を制御する。これにより、結果要求情報が、転送処理部１２によってライブラリプログラムシステム３へ転送される。【００９９】  ライブラリプログラムシステム３では、演算結果送信部４１Ｃが上記結果要求情報を受信し、該結果要求情報によって要求された演算結果データを演算結果データ格納部３３Ｃから読み出す。そして、演算結果送信部４１Ｃは、読み出した演算結果データを転送処理部３１からユーザプログラムシステム２に対して送信する制御を行う。これにより、演算結果がライブラリプログラムシステム３からユーザプログラムシステム２に対して送信される。なお、結果要求情報が受信された時点で、ライブラリプログラムシステム３において演算が完了していない場合には、演算が完了するまで演算結果データの送信は行われない。【０１００】  ユーザプログラムシステム２では、演算結果受信部２２Ｃが、演算結果データをライブラリプログラムシステム３から受信すると、演算結果データとしての解ｘを配列ＳＯＬとして演算結果データ格納部１４Ｃに格納する。これにより、ライブラリプログラムシステム３を利用した演算が完了することになる。【０１０１】  その後、ユーザプログラムの実行が完了すると、ライブラリプログラムシステム３において、数値データ格納部３３Ｂおよび演算結果データ格納部３３Ｃに格納されているデータがクリアされ、演算処理部３２の動作が停止する。なお、ライブラリプログラムシステム３におけるデータのクリアおよび演算処理部３２における動作の停止は、ユーザプログラムがライブラリプログラムシステム３を利用する必要がなくなった時点で行われてもよい。【０１０２】  また、新たなユーザプログラムがユーザプログラムシステム２において実行されてもよい。このとき、ライブラリプログラムシステム３を経由して、前回のユーザプログラムから新たなユーザプログラムにデータの受け渡しが行われてもよい。【０１０３】  なお、ユーザ演算依頼情報の命令として、
ＣＡＬＬ  ＳＩＬＣ（’Ｚ＝Ｘ＋Ｙ；Ｃ＝Ａ−Ｂ’）
というステートメントをユーザプログラムに記述することも可能である。この場合、例えばライブラリプログラムシステム３において並列演算が可能ならば、「Ｚ＝Ｘ＋Ｙ」に関する演算と、「Ｃ＝Ａ−Ｂ」に関する演算を並列に行うことが可能となる。また、ユーザプログラムシステム２側では、上記の２つの演算がライブラリプログラムシステム３において終わっていなくても、次の命令を実行することが可能である。すなわち、この場合には、３つの処理が並列に行われることになり、処理の高速化を実現することができる。また、このような並列処理は、ユーザプログラムにおいて特別に意識されることなく実行されることになる。【０１０４】  なお、上記では、一例として、演算依頼情報が、数式を示す文字列の場合について説明したが、これに限るものではない。数式以外に、例えば、制御構文を示す文字列など、他の文字列が含まれていてもよい。また、演算依頼情報は、数式以外の文字列（テキストベース）であってもよいし、文字列以外のデータであってもよい。いずれの場合であっても、演算依頼情報が演算内容の情報であれば、上記と同様に、「ライブラリプログラムシステム３がライブラリプログラムの種類、および、その実行順序を決定しているため、ユーザプログラムでは、ライブラリプログラムシステムにおける具体的な処理を考慮する必要がない」などの効果が得られる。【０１０５】  ただし、文字列は、ユーザが理解しやすく、編集しやすいため、演算依頼情報は、文字列を含んでいる方が望ましい。特に、数式は、広く使用されているため、新たな文法を定義する場合と異なって、ユーザが、その意味を理解しやすく、編集しやすい。したがって、演算依頼情報は、少なくとも数式を示す文字列を含んでいることが特に好ましい。【０１０６】  なお、文字列で記述したとしても、上述したように、演算内容の情報を示す文字列を、以下の各プログラム言語、すなわち、ユーザプログラムのうち、処理対象データおよび処理結果データの転送処理を実施するためのプログラムを記述するプログラム言語と、ライブラリプログラムを記述したプログラム言語とのいずれからも独立した自由な文法で記述できる。したがって、上記各プログラム言語が変更されても、ユーザプログラムのユーザは、上記演算内容の情報を示す文字列を変更することなく、ライブラリプログラムシステムに演算処理を依頼でき、より容易にライブラリプログラムを利用できる。【０１０７】  また、基本的には、利用されるライブラリプログラムがライブラリプログラムシステム３にて決定されるが、ユーザプログラムからの演算依頼情報に、利用するライブラリプログラムを指定する情報が含まれている場合、ライブラリプログラムシステム３は、指定されたライブラリプログラムを利用してもよい。この場合は、ユーザは、特定の処理については、特定のライブラリプログラムを利用させることができ、より適切な処理をライブラリプログラムシステム３に指示できる。なお、この場合であっても、演算依頼情報に上記ライブラリプログラムを指定する情報が含まれていないときに、ライブラリプログラムシステム３が、演算処理時に利用されるライブラリプログラムを決定できれば、同様の効果が得られる。【���１０８】  （システム構成例２）
次に、演算処理システム１の他の具体的構成例について説明する。このシステム構成例２は、図５に示すように、ユーザプログラムシステム２が実行されるコンピュータ１Ｂと、ライブラリプログラムシステム３が実行されるコンピュータ１Ｃとが通信ネットワークＮを介して接続された構成となっている。【０１０９】  コンピュータ１Ｂおよびコンピュータ１Ｃは、演算手段としてのＣＰＵ、主記憶手段としてのＲＡＭ、および、不揮発性記憶装置としてのＲＯＭやハードディスクなどを備えた一般的なコンピュータである。そして、ユーザプログラムシステム２における演算処理部１３の各機能ブロック、および、ライブラリプログラムシステム３における演算処理部３２の各機能ブロックは、ＣＰＵがＲＡＭに該当プログラムをハードディスクなどから読み出して実行することによって実現される。また、記憶部１４は、ＲＡＭ、およびハードディスクなどによって実現される。【０１１０】  また、ユーザプログラムシステム２における転送処理部１２、および、ライブラリプログラムシステム３における転送処理部３１は、通信ネットワークＮを介しての通信を行う際の通信インターフェースとして機能することになる。また、入出力部１１は、コンピュータ１Ｂが備えるキーボードやマウスなどの入力手段、および、表示手段としてのディスプレイ、印刷手段としてのプリンタなどによって実現される。【０１１１】  なお、コンピュータ１Ｂおよびコンピュータ１Ｃがそれぞれ複数のプロセッサを有し、並列演算を行うことが可能な構成であってもよい。【０１１２】  （システム構成例２における具体的動作例）
システム構成例２は、システム構成例１と比較して、ユーザプログラムシステム２とライブラリプログラムシステム３とがそれぞれ異なるコンピュータ上で動作する点が異なっているのみであり、基本的な動作はほぼ同様となっている。すなわち、システム構成例２における具体的動作例としては、上記したシステム構成例１における具体的動作例とほぼ同様である。異なる点としては、転送処理部１２と転送処理部３１との間のデータ転送が、通信ネットワークＮを介して行われる点である。【０１１３】  （システム構成例３）
次に演算処理システム１のさらに他の具体的構成例について説明する。このシステム構成例３は、図６および図７に示すように、ユーザプログラムシステム２が実行されるコンピュータ１Ｂと、ライブラリプログラムシステム３が実行されるコンピュータ１Ｃおよびコンピュータ１Ｄとが通信ネットワークＮを介して接続された構成となっている。すなわち、システム構成例２と異なる点としては、ライブラリプログラムシステム３が実行されるコンピュータが２台存在する点である。なお、図６および図７に示す構成例では、ライブラリプログラムシステム３が実行されるコンピュータが２台となっているが、３台以上であっても構わない。【０１１４】  コンピュータ１Ｂ、コンピュータ１Ｃ、およびコンピュータ１Ｄは、演算手段としてのＣＰＵ、主記憶手段としてのＲＡＭ、および、不揮発性記憶装置としてのＲＯＭやハードディスクなどを備えた一般的なコンピュータである。そして、ユーザプログラムシステム２における演算処理部１３の各機能ブロック、および、ライブラリプログラムシステム３における演算処理部３２の各機能ブロックは、ＣＰＵがＲＡＭに該当プログラムをハードディスクなどから読み出して実行することによって実現される。また、記憶部１４は、ＲＡＭ、およびハードディスクなどによって実現される。【０１１５】  また、ユーザプログラムシステム２における転送処理部１２、および、ライブラリプログラムシステム３における転送処理部３１は、通信ネットワークＮを介しての通信を行う際の通信インターフェースとして機能することになる。また、入出力部１１は、コンピュータ１Ｂが備えるキーボードやマウスなどの入力手段、および、表示手段としてのディスプレイ、印刷手段としてのプリンタなどによって実現される。【０１１６】  なお、コンピュータ１Ｂ、コンピュータ１Ｃ、およびコンピュータ１Ｄがそれぞれ複数のプロセッサを有し、並列演算を行うことが可能な構成であってもよい。【０１１７】  また、このシステム構成例３は、コンピュータ１Ｂと、コンピュータ１Ｃおよび１Ｄとの距離が比較的近く、コンピュータ１Ｃおよび１Ｄにおける演算速度が均質である場合には、並列コンピュータ、ＳＭＰ（Ｓｙｍｍｅｔｒｉｃ  Ｍｕｌｔｉｐｒｏｃｅｓｓｏｒ）、クラスタコンピュータなどによって実現され、コンピュータ１Ｂと、コンピュータ１Ｃおよび１Ｄとの距離が比較的遠く、コンピュータ１Ｃおよび１Ｄにおける演算速度が均質でない場合には、グリッドコンピューティングなどによって実現されるものである。【０１１８】  （システム構成例３における具体的動作例）
システム構成例３は、システム構成例２と比較して、ユーザプログラムシステム２が利用するライブラリプログラムシステム３が複数存在する点である。すなわち、システム構成例３は、ユーザプログラムに利用されるライブラリプログラムを、複数のライブラリプログラムシステム３によって分担して実行することが可能となっている。したがって、システム構成例３の場合、各ライブラリプログラムシステム３に対してどのように処理を割り振るかについて考慮する必要がある。ここで、システム構成例３では、１つのライブラリプログラムシステム３において処理の割り振り方法が決定される。そして、ユーザプログラムシステム２の挙動として、次の２つの方法が挙げられる。１つ目の方法は、ユーザプログラムシステム２が、１つのライブラリプログラムシステム３に対して通信を行う方法であり、２つ目の方法は、ユーザプログラムシステム２が、１つのライブラリプログラムシステム３に対して割り振り方法を問い合わせて、その結果に基づいて複数のライブラリプログラムシステム３…に対して通信を行う方法である。【０１１９】  まず、ユーザプログラムシステム２が、１つのライブラリプログラムシステム３に対して通信を行う方法について説明する。この場合、図６に示すように、ユーザプログラムシステム２は、コンピュータ１Ｃにおけるライブラリプログラムシステム３に対して、ライブラリプログラムシステム３に数値データおよびそのデータ形式の転送を行う。そして、コンピュータ１Ｃにおけるライブラリプログラムシステム３が、コンピュータ１Ｄにおけるライブラリプログラムシステム３とどのように処理を分担するかを決定し、コンピュータ１Ｄでの演算で必要な数値データおよびそのデータ形式をコンピュータ１Ｄに転送する。次に、ユーザプログラムシステム２は、コンピュータ１Ｃにおけるライブラリプログラムシステム３に対して、ライブラリプログラムを利用する演算の依頼を行う。コンピュータ１Ｃにおけるライブラリプログラムシステム３は、コンピュータ１Ｄにおけるライブラリプログラムシステム３とどのように処理を分担するかを決定し、これに基づいて、コンピュータ１Ｃおよびコンピュータ１Ｄにおけるライブラリプログラムシステム３が処理を行う。演算によっては、処理に先立ってコンピュータ１Ｃとコンピュータ１Ｄとにある数値データおよびそのデータ形式の配置方法を変更してもよい。【０１２０】  ユーザプログラムシステム２は、前記したシステム構成例１と同様に、コンピュータ１Ｃにおけるライブラリプログラムシステム３に対して、数値データの送信、演算依頼情報の送信、および演算結果の送信依頼を行う。一方、コンピュータ１Ｃにおけるライブラリプログラムシステム３は、ユーザプログラムシステム２から受信した数値データに基づいてコンピュータ１Ｄとの分担方法を決定する。数値データの分担方法または演算に適する分担方法に従って、コンピュータ１Ｃおよびコンピュータ１Ｄにおけるライブラリプログラムシステム３が処理を行う。【０１２１】  具体的には、まずユーザプログラムシステム２から数値データおよびそのデータ形式を受信すると、数値データ受信部４１Ａが、一旦その数値データを数値データ格納部３３Ｂに格納する。その後、数値データの形式に基づく標準的な数値データの分担方法で、数値データおよびそのデータ形式をコンピュータ１Ｄにおけるライブラリプログラムシステム３に転送し、数値データ格納部３３Ｂに格納する。ユーザプログラムシステム２から演算依頼情報を受信すると、演算方法決定部４１Ｂが、該演算依頼情報を解析して、コンピュータ１Ｄとの分担方法を決定する。このとき、必要ならばコンピュータ１Ｃとコンピュータ１Ｄとの数値データとそのデータ形式の分担を変更するため、数値データの転送が行われる。【０１２２】  その後、コンピュータ１Ｃにおけるライブラリプログラムシステム３では、分担分の演算の実行がライブラリプログラム実行部４２によって行われ、演算結果データが演算結果データ格納部３３Ｃに格納される。また、コンピュータ１Ｄにおけるライブラリプログラムシステム３でも、分担分の演算の実行がライブラリプログラム実行部４２によって行われ、演算結果データが演算結果データ格納部３３Ｃに格納される。ユーザプログラムシステム２からコンピュータ１Ｃにおけるライブラリプログラムシステム３に対して演算結果の要求があったときは、まずコンピュータ１Ｄにおけるライブラリプログラムシステム３において行われた演算の演算結果がコンピュータ１Ｃにおけるライブラリプログラムシステム３に転送される。【０１２３】  コンピュータ１Ｃにおけるライブラリプログラムシステム３は、自装置で行われた演算の演算結果およびコンピュータ１Ｄにおいて行われた演算の演算結果に基づいて、最終的な演算結果を導出し、これを演算結果送信部４１Ｃが、ユーザプログラムシステム２に対して送信する制御を行う。【０１２４】  なお、数値データの送受信、および、演算結果の送受信は、上記の順序に限定されるものではなく、任意のタイミングで行われてもよい。【０１２５】  以上のような処理により、ユーザプログラム自体はライブラリプログラムシステム３の利用方法について一切認識する必要がないので、ユーザは、システムの相違を意識することなくユーザプログラムを作成することが可能となる。【０１２６】  次に、ユーザプログラムシステム２が、１つのライブラリプログラムシステム３に対して割り振り方法を問い合わせて、その結果に基づいて複数のライブラリプログラムシステム３…に対して通信を行う方法について説明する。この場合、図７に示すように、ユーザプログラムシステム２は、ライブラリプログラムに数値データの転送を行う際に、コンピュータ１Ｃにおけるライブラリプログラムシステム３と、コンピュータ１Ｄにおけるライブラリプログラムシステム３とでどのように処理を分担させるかについて、コンピュータ１Ｃにおけるライブラリプログラムシステム３に対して問い合わせを行う。この問い合わせに対して、コンピュータ１Ｃにおけるライブラリプログラムシステム３が数値データおよびそのデータ形式の分担方法を算出し、その結果をユーザプログラムシステム２に対して送信する。ユーザプログラムシステム２は、受信した分担方法に基づいて、コンピュータ１Ｃにおけるライブラリプログラムシステム３、およびコンピュータ１Ｄにおけるライブラリプログラムシステム３に対してそれぞれに数��データとそのデータ形式を転送する。【０１２７】  具体的には、まずユーザプログラムシステム２から数値データおよびそのデータ形式の送信が伝えられると、数値データおよびそのデータ形式に対応した標準的な分担方法をユーザプログラムシステム２へ対して送信する。この分担方法に基づいて、コンピュータ１Ｃにおけるライブラリプログラムシステム３に格納される数値データをコンピュータ１Ｃにおけるライブラリプログラムシステム３に転送し、コンピュータ１Ｄにおけるライブラリプログラムシステム３に格納される数値データをコンピュータ１Ｄにおけるライブラリプログラムシステム３に対して転送するように制御する。ライブラリプログラムシステム３はユーザプログラムシステム２から数値データとそのデータ形式を受信すると、数値データ受信部４１Ａがその数値データを数値データ格納部３３Ｂに格納する。【０１２８】  その後、ユーザプログラムシステム２から演算依頼情報を受信すると、演算方法決定部４１Ｂが、該演算依頼情報を解析して、コンピュータ１Ｄとの分担方法を決定する。このとき、必要ならばコンピュータ１Ｃとコンピュータ１Ｄとの数値データの分担を変更するため、数値データの転送が行われる。【０１２９】  その後、コンピュータ１Ｃにおけるライブラリプログラムシステム３では、分担分の演算の実行がライブラリプログラム実行部４２によって行われ、演算結果データが演算結果データ格納部３３Ｃに格納される。また、コンピュータ１Ｄにおけるライブラリプログラムシステム３でも、分担分の演算の実行がライブラリプログラム実行部４２によって行われ、演算結果データが演算結果データ格納部３３Ｃに格納される。【０１３０】  ユーザプログラムシステム２からコンピュータ１Ｃにおけるライブラリプログラムシステム３に対して演算結果の要求があったときは、まずは演算結果の分担方法がユーザプログラムシステム２に送信される。この分担方法に基づいて、ユーザプログラムシステムでは、コンピュータ１Ｃにおけるライブラリプログラムシステム３に格納されている演算結果と、コンピュータ１Ｄにおけるライブラリプログラムシステム３に格納されている演算結果の転送要求を発行するように制御する。ユーザプログラムシステム２において、演算結果受信部２２Ｃは、コンピュータ１Ｃおよびコンピュータ１Ｄから演算結果を受信し、ライブラリプログラムを利用した演算結果を演算結果データ格納部１４Ｃに格納する。【０１３１】  以上のような処理により、上記（１）の方法と同様に、ユーザプログラム自体はライブラリプログラムシステム３の利用方法について一切認識する必要がないので、ユーザは、システムの相違を意識することなくユーザプログラムを作成することが可能となる。【０１３２】  なお、上記のシステム構成例３では、ユーザプログラムシステム２が１つである一方、ライブラリプログラムシステム３が複数存在する構成となっているが、図８に示すように、ユーザプログラムシステム２およびライブラリプログラムシステム３の両方ともが、それぞれ複数存在する構成としてもよい。同図に示す例では、コンピュータ１Ｅおよびコンピュータ１Ｄがそれぞれユーザプログラムシステム２およびライブラリプログ��ムシステム３の両方を備えており、コンピュータ１Ｅとコンピュータ１Ｆとが通信ネットワークＮを介して接続された構成となっている。このような構成の場合でも、上記のシステム構成例３に示したような処理を適用することが可能である。【０１３３】  （ユーザプログラムが並列プログラムの場合）
以上では、基本的に、ユーザプログラムシステム２において実行されるユーザプログラムは、逐次型のプログラム、すなわち、シリアルに処理が行われるプログラムである場合を想定しているが、ユーザプログラムが並列型のプログラムであっても構わない。例えば、ユーザプログラムシステム２における並列処理の数がｐであり、ライブラリプログラムシステム３における並列処理の数もｐである場合には、上記したシステム構成例２を用いることが好適である。また、ユーザプログラムシステム２における並列処理の数がｐであり、ライブラリプログラムシステム３における並列処理の数がｑ（≠ｐ）である場合には、上記したシステム構成例３を用いることが好適である。【０１３４】  以上のように、本発明に係る演算処理方法は、ユーザプログラムを実行するユーザプログラムシステムと、上記ユーザプログラムにおいて利用されるライブラリプログラムを実行するライブラリプログラムシステムとを備えた演算処理システムにおける演算処理方法において、上記ユーザプログラムシステムが、上記ライブラリプログラムシステムに、演算処理の対象となる処理対象データを転送する第１転送ステップと、上記ユーザプログラムシステムが、上記ライブラリプログラムシステムから上記処理対象データを演算処理した結果を示す処理結果データを受け取る第２転送ステップと、上記第１および第２転送ステップの間に、これらのステップとは独立して実施される演算指示ステップおよび演算処理ステップとを含み、上記演算指示ステップでは、上記ユーザプログラムシステムが、上記演算処理の内容を、文字列によって、上記ライブラリプログラムシステムへ指示すると共に、上記演算処理ステップでは、上記ライブラリプログラムシステムが、上記文字列を解析して、上記演算処理の際に利用するライブラリプログラムの種類、および、その実行順序を決定すると共に、当該決定されたライブラリプログラムを、上記決定された実行順序にて実行することによって、上記処理対象データを演算処理している。【０１３５】  また、本発明に係る演算処理システム（例えば、演算処理システム１）は、以上のように、ユーザプログラムを実行するユーザプログラムシステム（例えば、ユーザプログラムシステム２）と、上記ユーザプログラムにおいて利用されるライブラリプログラムを実行するライブラリプログラムシステム（例えば、ライブラリプログラムシステム３）とを備えた演算処理システムにおいて、上記ユーザプログラムシステムには、上記ライブラリプログラムシステムに、演算処理の対象となる処理対象データを転送する第１転送手段（例えば、数値データ転送部２２Ａ）と、上記ライブラリプログラムシステムから上記処理対象データを演算処理した結果を示す処理結果データを受け取る第２転送手段（例えば、演算結果受信部２２Ｃ）と、当該処理対象データおよび処理結果データの転送とは独立して、上記演算処理の内容を文字列により上記ライブラリプログラムシステムへ指示する演算依頼手段（例えば、演算意ライブ２２Ｂ）とが設けられ、上記ライブラリプログラムシステムには、上記文字列を解析して、上記演算処理の際に利用するライブラリプログラムの種類、および、その実行順序を決��すると共に、当該決定されたライブラリプログラムを、上記決定された実行順序にて実行することによって、上記処理対象データを演算処理する演算処理手段（例えば、演算処理部３２）が設けられている。【０１３６】  上記構成では、処理対象データの転送処理、演算処理の内容を指示する処理および処理結果データの転送処理がそれぞれ別々に行われるので、ユーザプログラムを、各処理に関する命令をそれぞれ分離した状態で構成できる。したがって、ユーザプログラムを細分化できるので、処理対象データの変更や演算内容の変更などをより容易に行うことができる。また、ユーザプログラムが細分化されることによって、エラーが発生した場合にも、問題の発生箇所が認識されやすくするという効果もある。【０１３７】  また、ライブラリプログラムシステムでは、演算処理の内容を示す文字列が解析されて、利用するライブラリプログラムの種類、および、その実行順序が決定され、これに基づいてライブラリプログラムの実行が行われる。よって、演算内容を指示する際、ユーザプログラムシステムは、ライブラリプログラムシステムに対して、単に演算内容を示す文字列を送信するだけでよく、どのライブラリプログラムを利用するかを指示する必要がない。【０１３８】  したがって、ユーザプログラムでは、ライブラリプログラムシステムにおける具体的な処理を考慮する必要がないので、ユーザプログラムのユーザは、ライブラリプログラムシステムにおける処理の詳細に関する知識を必要とせずに、より容易にライブラリプログラムを利用できる。【０１３９】  また、ライブラリプログラムシステムにおいて演算処理の内容を示す文字列が解析されて、適切なライブラリプログラムが実行される。したがって、演算内容の情報を示す文字列を、以下の各プログラム言語、すなわち、ユーザプログラムのうち、処理対象データを転送する処理および処理結果データを転送する処理を実施するためのプログラムを記述するプログラム言語と、ライブラリプログラムを記述したプログラム言語とのいずれからも独立した自由な文法で記述できる。【０１４０】  この結果、上記各処理を実施するためのプログラムおよびライブラリプログラムが変更されても、ユーザプログラムのユーザは、上記演算内容の情報を示す文字列を変更することなく、ライブラリプログラムシステムに演算処理を依頼でき、より容易にライブラリプログラムを利用できる。【０１４１】  また、ライブラリプログラムシステムにおいて演算処理の内容を示す文字列が解析されて、適切なライブラリプログラムが決定されるので、ライブラリプログラムが改良されたり、新たなライブラリプログラムが追加されたりしたとしても、ユーザプログラム側では、これを一切認識する必要がなく、ライブラリプログラムシステム側で自動的に適切なライブラリプログラムが選択される。すなわち、ライブラリプログラムシステムが変更されたとしても、ユーザプログラムを変更することなく対応できる。また、このようなシステムを導入した際にも、今まで使っていたライブラリプログラムをそのまま利用できる。【０１４２】  また、ライブラリプログラムシステムにおいて実行される演算に関しては、ユーザプログラムシステムは関与する必要がない。したがって、ユーザプログラムシステムにおけるユーザプログラムのサイズを小さくできると共に、ユーザプログラムシステムにおけるメモリ使用量も小さくできる。【０１４３】  なお、上記ユーザプログラムシステムを構成するプログラムは、例えば、同一のライブラリプログラムシステムに対してアクセスする３本のユーザプログラム、すなわち、処理対象データの転送処理プログラム、演算処理の内容指示プログラムおよび処理結果データの転送処理プログラムというように、別々のプログラムによって実現されていてもよい。【０１４４】  また、上記演算処理手段は、上記文字列の解析結果に加えて、上記処理対象データのデータ構造（データ形式）の解析結果、または、処理対象データと共に送信されるデータ構造を示す情報をも参照して、上記演算処理に利用するライブラリプログラム、当該ライブラリプログラムの挙動、および、各ライブラリプログラムの実行順序を決定してもよい。【０１４５】  この構成では、上記処理対象データのデータ構造が変化した場合、上記演算処理の内容を示す文字列を変更しなくても、データ構造の変化に応じて、上記演算処理の際に利用するライブラリプログラム、当該ライブラリプログラムの挙動、あるいは、実行順序が変更される。したがって、上記処理対象データのデータ構造が変化した場合に、それに応じて、ライブラリプログラムシステムへの演算処理の指示が変更される構成と比較して、処理対象データの変更や演算内容の変更などをより容易に行うことができる。【０１４６】  さらに、本発明に係る演算処理システム（例えば、演算処理システム１）は、ユーザプログラムを実行するユーザプログラムシステム（例えば、ユーザプログラムシステム２）と、上記ユーザプログラムにおいて利用されるライブラリプログラムを実行するライブラリプログラムシステム（例えば、ライブラリプログラムシステム３）とを備えた演算処理システムにおいて、上記ユーザプログラムシステムが、上記ライブラリプログラムシステムに演算を行わせる処理が上記ユーザプログラムによって行われる際に、演算の入力値に関する入力値情報を上記ライブラリプログラムシステムに転送する処理を行う入力値転送手段（例えば、数値データ転送部２２Ａ）と、上記ライブラリプログラムシステムにおいて演算処理を行わせる演算内容の情報としての演算依頼情報を該ライブラリプログラムシステムに転送する処理を行う演算依頼手段（例えば、演算依頼部２２Ｂ）と、上記ライブラリプログラムシステムにおけるライブラリプログラムの実行結果を該ライブラリプログラムシステムから受信する処理を行う演算結果受信手段（例えば、演算結果受信部２２Ｃ）とを備え、上記ライブラリプログラムシステムが、上記ユーザプログラムシステムから、ライブラリプログラムの実行時に用いられる演算の入力値に関する入力値情報を受信する処理を行う入力値受信手段（例えば、数値データ受信部４１Ａ）と、上記ユーザプログラムシステムから送られてきた演算依頼情報を解析することによって、利用するライブラリプログラムの種類、およびその実行順序を決定する処理を行う演算方法決定手段（例えば、演算方法決定部４１Ｂ）と、ライブラリプログラムの実行���果を上記ユーザプログラムシステムへ送信する処理を行う演算結果送信手段（例えば、演算結果送信部４１Ｃ）とを備えていることを特徴としている。【０１４７】  また、本発明に係る演算処理方法は、ユーザプログラムを実行するユーザプログラムシステムと、上記ユーザプログラムにおいて利用されるライブラリプログラムを実行するライブラリプログラムシステムとを備えた演算処理システムにおける演算処理方法において、上記ユーザプログラムシステムにおける、上記ライブラリプログラムシステムに演算を行わせる処理が上記ユーザプログラムによって行われる際に、演算の入力値に関する入力値情報を上記ライブラリプログラムシステムに転送する処理を行う入力値転送ステップと、上記ライブラリプログラムシステムにおいて演算処理を行わせる演算内容の情報としての演算依頼情報を該ライブラリプログラムシステムに転送する処理を行う演算依頼ステップと、上記ライブラリプログラムシステムにおけるライブラリプログラムの実行結果を該ライブラリプログラムシステムから受信する処理を行う演算結果受信ステップと、上記ライブラリプログラムシステムにおける、上記ユーザプログラムシステムから、ライブラリプログラムの実行時に用いられる演算の入力値に関する入力値情報を受信する処理を行う数値データ受信ステップと、上記ユーザプログラムシステムから送られてきた演算依頼情報を解析することによって、利用するライブラリプログラムの種類、およびその実行順序を決定する処理を行う演算方法決定ステップと、ライブラリプログラムの実行結果を上記ユーザプログラムシステムへ送信する処理を行う演算結果送信ステップとを有していることを特徴としている。【０１４８】  上記の構成および方法によれば、ユーザプログラムシステムにおいてユーザプログラムが実行され、ライブラリプログラムの利用が行われた際に、次の３つの処理が行われることになる。まず、演算の入力値に関する入力値情報がユーザプログラムシステムからライブラリプログラムシステムへ転送される。また、演算内容の情報がユーザプログラムシステムからライブラリプログラムシステムへ転送され、ライブラリプログラムシステムにおいて利用するライブラリプログラムの種類、およびその実行順序が決定される。そして、ユーザプログラムシステムからの要求に応じて、実行結果がライブラリプログラムシステムからユーザプログラムシステムへ転送される。【０１４９】  このように、入力値情報の転送処理、演算内容の情報の転送処理、および演算結果の転送処理がそれぞれ別々に行われるので、ユーザプログラムを、各処理に関する命令をそれぞれ分離した状態で構成することができる。したがって、ユーザプログラムを細分化することが可能となるので、入力値の変更や演算内容の変更などをより容易に行うことが可能となる。また、ユーザプログラムが細分化されることによって、エラーが発生した場合にも、問題の発生箇所が認識されやすくするという効果もある。【０１５０】  また、ライブラリプログラムシステムでは、受信した演算内容が解析されて、利用するライブラリプログラムの種類、およびその実行順序が決定され、これに基づいてライブラリプログラムの実行が行われ��ようになっている。よって、ユーザプログラムシステムは、ライブラリプログラムシステムに対して単にどのような演算処理を行わせるかについての情報のみを送信するだけでよく、どのライブラリプログラムを利用するかを指示する必要がないことになる。したがって、ユーザプログラムでは、ライブラリプログラムシステムにおける具体的な処理を考慮する必要がないので、ユーザプログラムのユーザは、ライブラリプログラムシステムにおける処理の詳細に関する知識を必要とせずに、より容易にライブラリプログラムを利用することが可能となる。【０１５１】  また、ライブラリプログラムシステムにおいて演算依頼情報が解析されて、適切なライブラリプログラムが実行されるようになっているので、ユーザプログラムがどのようなプログラム言語によって記述されていても対応が可能となる。【０１５２】  また、ライブラリプログラムが改良されたり、新たなライブラリプログラムが追加されたりしたとしても、ユーザプログラム側では、これを一切認識する必要がなく、ライブラリプログラムシステム側で自動的に適切なライブラリプログラムが利用されることになる。すなわち、ライブラリプログラムシステムが変更されたとしても、ユーザプログラムを変更することなく対応することが可能となる。また、このようなシステムを導入した際にも、今まで使っていたライブラリプログラムをそのまま利用することが可能である。【０１５３】  また、ライブラリプログラムシステムにおいて実行される演算に関しては、ユーザプログラムシステムは関与する必要がないので、ユーザプログラムシステムにおけるユーザプログラムのサイズを小さくすることが可能となるとともに、ユーザプログラムシステムにおけるメモリ使用量も小さくすることが可能となる。【０１５４】  なお、同一のライブラリプログラムシステムに対して、例えば、３本のユーザプログラム、すなわち、入力データ転送プログラム、処理依頼プログラム、および結果取得プログラムというように別々のプログラムとしてアクセスされる構成であってもよい。【０１５５】  また、本発明に係る演算処理システムは、上記の構成において、上記入力値転送手段が、上記入力値情報として、数値データおよびそのデータ形式を転送する構成としてもよい。【０１５６】  上記の構成によれば、入力値情報として数値データおよびそのデータ形式がライブラリプログラムシステムに転送されることになるので、演算内容の情報には、入力値のデータ形式に関する情報を含める必要がないことになる。よって、異なったデータ形式を扱うユーザプログラムを組み合わせたりすることが容易に可能となる。【０１５７】  また、本発明に係る演算処理システムは、上記の構成において、上記入力値受信手段が、受信した入力値情報を記憶部（例えば、記憶部３３）に格納するとともに、上記演算方法決定手段が、ライブラリプログラムの実行の際に、上記記憶部に格納されているどの入力値情報を用いるかを決定する構成としてもよい。【０１５８】  上記の構成によれば、入力値情報の転送処理と演算内容の情報の転送処理とが分離していても、両者の関係を適切に組み合わせてライブラリプログラムでの演算を行うことが可能となる。【０１５９】  また、本発明に係る演算処理システムは、上記の構成において、上記演算依頼手段が、演算内容の情報として、演算内容を示す文字列を転送する構成としてもよい。当該構成では、演算内容の情報が文字列であり、しかも、上記ライブラリプログラムシステムの演算方法決定手段が、当該文字列を解析して、適切なライブラリプログラムを適切な順序で実行させる。【０１６０】  したがって、演算内容の情報を示す文字列を、以下の各プログラム言語、すなわち、ユーザプログラムのうち、入力値転送手段および演算結果受信手段を実現するためのプログラムを記述するプログラム言語と、ライブラリプログラムを記述したプログラム言語とのいずれからも独立した自由な文法で記述できる。この結果、上記入力値転送手段および演算結果受信手段を実現するためのプログラムおよびライブラリプログラムが変更されても、ユーザプログラムのユーザは、上記演算内容の情報を示す文字列を変更することなく、ライブラリプログラムシステムに演算処理を依頼でき、より容易にライブラリプログラムを利用できる。【０１６１】  また、本発明に係る演算処理システムは、上記の構成において、上記演算依頼手段が、演算内容の情報として、数学の演算式そのものを表す文字列を転送する構成としてもよい。【０１６２】  上記の構成によれば、ユーザプログラムシステム側では、数学の演算式そのものを表す文字列をライブラリプログラムシステムに対して転送すればよいので、演算式をどのように解くべきかなどを考慮する必要がない。よって、ユーザプログラムのユーザは、具体的な解法を考慮することなくプログラミングを行うことが可能となる。【０１６３】  また、本発明に係る演算処理システムは、上記の構成において、上記ユーザプログラムシステム、および上記ライブラリプログラムシステムが、同一のコンピュータにおいて動作する構成としてもよい。【０１６４】  上記の構成によれば、１つのコンピュータにおいてユーザプログラムシステムとライブラリプログラムシステムとを構築することによって、上記のような演算処理システムを実現することができる。なお、１つのコンピュータが複数の演算処理装置（例えばＣＰＵなど）を備え、メモリを共有している構成であってもよい。【０１６５】  また、本発明に係る演算処理システムは、上記の構成において、上記ユーザプログラムシステムが第１のコンピュータにおいて動作するとともに、上記ライブラリプログラムシステムが、上記第１のコンピュータと通信接続された別のコンピュータにおいて動作する構成としてもよい。【０１６６】  上記の構成によれば、ユーザプログラムシステムが動作するコンピュータと、ライブラリプログラムシステムが動作するコンピュータとを別にすることができるので、ユーザプログラムの実行とライブラリプログラムの実行とを並列に行うことが可能となる。【０１６７】  また、本発明に係る演算処理システムは、上記の構成において、上記ライブラリプログラムシステムが動作するコンピュータが複数存在する構成としてもよい。【０１６８】  上記の構成によれば、ライブラリプログラムの実行を複数のコンピュータにおいて行うことが可能となる。よって、より高速に演算処理を行うことが可能となる��【０１６９】  また、本発明に係る演算処理システムは、上記の構成において、上記入力値転送手段および上記演算依頼手段が、上記入力値情報および上記演算内容の情報を、ライブラリプログラムシステムが動作する１つのコンピュータに対して転送するとともに、上記入力値情報および上記演算内容の情報を受信したライブラリプログラムシステムにおける上記演算方法決定手段が、演算処理の分担を決定し、他のコンピュータにおける分担分の処理内容を転送する処理を行う構成としてもよい。【０１７０】  上記の構成によれば、ライブラリプログラムシステムが動作する１つのコンピュータにおいて、演算処理の分担の方法が決定されるので、ユーザプログラムシステム側では、演算処理の分担の方法を一切考慮する必要がなくなる。すなわち、ユーザプログラムのユーザは、並列処理を意識したプログラミングを行う必要がないことなり、システム構成に応じたプログラミングの必要性をなくすことが可能となる。【０１７１】  また、本発明に係る演算処理システムは、上記の構成において、上記入力値転送手段および上記演算依頼手段が、上記入力値情報および上記演算内容の情報を、ライブラリプログラムシステムが動作する１つのコンピュータに対して転送し、上記入力値情報および上記演算内容の情報を受信したライブラリプログラムシステムにおける上記演算方法決定手段が、演算処理の分担を決定し、この分担方法の結果をユーザプログラムシステムに送信し、上記演算依頼手段が、受信した分担方法の結果に基づいて、各コンピュータに対して演算依頼情報を転送するとともに、上記入力値転送手段が、上記演算の分担方法に基づいて各コンピュータに対して入力値情報を転送する構成としてもよい。【０１７２】  上記の構成によれば、ライブラリプログラムシステムが動作する１つのコンピュータにおいて、演算処理の分担の方法が決定されるので、ユーザプログラムシステム側では、分担方法の結果に基づいて演算依頼情報および入力値情報を転送すればよいことになる。すなわち、ユーザプログラムのユーザは、並列処理を意識したプログラミングを行う必要がないことになり、システム構成に応じたプログラミングの必要性をなくすことが可能となる。【０１７３】  このように、本発明に係る演算処理システムおよび演算処理方法では、入力値情報の転送処理（処理対象データの転送処理）、演算内容の情報の転送処理（演算処理の内容を指示する処理）、および、演算結果の転送処理（処理結果データの転送処理）がそれぞれ別々に行われるので、ユーザプログラムを、各処理に関する命令をそれぞれ分離した状態で構成することができる。したがって、ユーザプログラムを細分化することが可能となるので、入力値の変更（処理対象データの変更）や演算内容の変更などをより容易に行うことが可能となるという効果を奏する。【０１７４】  本発明は上述した実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能である。すなわち、請求項に示した範囲で適宜変更した技術的手段を組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【産業上の利用可能性】
【０１７５】  本発明に係る演算処理システムは、例えば科学技術計算を行う際に、既存のライブラリプログラムを利用した演算を行うなどの用途に適用することが可能である。
【図１】
0004444293.tif 000002
【図２】
0004444293.tif 000003
【図３】
0004444293.tif 000004
【図４】
0004444293.tif 000005
【図５】
0004444293.tif 000006
【図６】
0004444293.tif 000007
【図７】
0004444293.tif 000008
【図８】
0004444293.tif 000009
【図９】
0004444293.tif 000010