TOP > 国内特許検索 > 演算処理システム、演算処理方法、ユーザプログラムシステム、ライブラリプログラムシステム、プログラム、および、プログラムを記録した記録媒体 > 明細書

明細書 :演算処理システム、演算処理方法、ユーザプログラムシステム、ライブラリプログラムシステム、プログラム、および、プログラムを記録した記録媒体

発行国 日本国特許庁(JP)
公報種別 特許公報(B2)
特許番号 特許第4444293号 (P4444293)
登録日 平成22年1月22日(2010.1.22)
発行日 平成22年3月31日(2010.3.31)
発明の名称または考案の名称 演算処理システム、演算処理方法、ユーザプログラムシステム、ライブラリプログラムシステム、プログラム、および、プログラムを記録した記録媒体
国際特許分類 G06F   9/48        (2006.01)
FI G06F 9/46 457
請求項の数または発明の数 18
全頁数 33
出願番号 特願2006-544976 (P2006-544976)
出願日 平成17年11月11日(2005.11.11)
国際出願番号 PCT/JP2005/020716
国際公開番号 WO2006/051902
国際公開日 平成18年5月18日(2006.5.18)
優先権出願番号 2004328157
優先日 平成16年11月11日(2004.11.11)
優先権主張国 日本国(JP)
審査請求日 平成19年5月10日(2007.5.10)
特許権者または実用新案権者 【識別番号】503360115
【氏名又は名称】独立行政法人科学技術振興機構
発明者または考案者 【氏名】長谷川 秀彦
個別代理人の代理人 【識別番号】110000338、【氏名又は名称】特許業務法人原謙三国際特許事務所
審査官 【審査官】大塚 良平
参考文献・文献 特開平10-222487(JP,A)
特開平11-15799(JP,A)
特開2001-5666(JP,A)
特開平11-175485(JP,A)
特開平9-101899(JP,A)
特開平4-7654(JP,A)
畑陽一郎,数式を処理するソフトもある,日経ソフトウエア,日本,日経BP社,2001年10月24日,第4巻,第11号,pp.104-107
山口英、今泉貴史,プログラミング入門▲1▼,UNIX MAGAZINE,日本,株式会社アスキー,2002年11月 1日,第17巻,第11号,pp.103-137
畑陽一郎,パソコンも間違える 落とし穴3 10進演算,日経バイト,日本,日経BP社,1995年 3月 1日,第136号,pp.159-168
調査した分野 G06F 9/46 - 9/54
G06F 9/40
G06F 17/10 - 17/18
特許請求の範囲 【請求項1】
ユーザプログラムを実行するユーザプログラムシステムと、上記ユーザプログラムにおいて利用されるライブラリプログラムを実行するライブラリプログラムシステムとを備えた演算処理システムにおける演算処理方法において、
上記ユーザプログラムシステムが、上記ライブラリプログラムシステムに、演算処理の対象となる処理対象データを転送する第1転送ステップと、
上記ユーザプログラムシステムが、上記ライブラリプログラムシステムから上記処理対象データを演算処理した結果を示す処理結果データを受け取る第2転送ステップと、
上記第1および第2転送ステップの間に、これらのステップとは独立して実施される演算指示ステップおよび演算処理ステップとを含み、
上記演算指示ステップでは、上記ユーザプログラムシステムが、上記演算処理の内容を、上記第1および第2転送ステップを実施するためのプログラムを記述したプログラム言語と、上記ライブラリプログラムを記述したプログラム言語とのいずれからも独立した文法で記述された文字列によって、上記ライブラリプログラムシステムへ指示すると共に、
上記演算処理ステップでは、上記ライブラリプログラムシステムが、上記文字列を解析して、上記演算処理の際に利用するライブラリプログラムの種類、および、その実行順序を決定すると共に、当該決定されたライブラリプログラムを、上記決定された実行順序にて実行することによって、上記処理対象データを演算処理することを特徴とする演算処理方法。
【請求項2】
ユーザプログラムを実行するユーザプログラムシステムと、上記ユーザプログラムにおいて利用されるライブラリプログラムを実行するライブラリプログラムシステムとを備えた演算処理システムにおいて、
上記ユーザプログラムシステムには、上記ライブラリプログラムシステムに、演算処理の対象となる処理対象データを転送する第1転送手段と、上記ライブラリプログラムシステムから上記処理対象データを演算処理した結果を示す処理結果データを受け取る第2転送手段と、当該処理対象データおよび処理結果データの転送とは独立して、上記演算処理の内容を、上記処理対象データおよび処理結果データの転送処理を実施するためのプログラムを記述したプログラム言語と、上記ライブラリプログラムを記述したプログラム言語とのいずれからも独立した文法で記述された文字列により上記ライブラリプログラムシステムへ指示する演算依頼手段とが設けられ、
上記ライブラリプログラムシステムには、上記文字列を解析して、上記演算処理の際に利用するライブラリプログラムの種類、および、その実行順序を決定すると共に、当該決定されたライブラリプログラムを、上記決定された実行順序にて実行することによって、上記処理対象データを演算処理する演算処理手段が設けられていることを特徴とする演算処理システム。
【請求項3】
ユーザプログラムを実行するユーザプログラムシステムと、上記ユーザプログラムにおいて利用されるライブラリプログラムを実行するライブラリプログラムシステムとを備えた演算処理システムにおいて、
上記ユーザプログラムシステムが、
上記ライブラリプログラムシステムに演算を行わせる処理が上記ユーザプログラムによって行われる際に、演算の入力値に関する入力値情報を上記ライブラリプログラムシステムに転送する処理を行う入力値転送手段と、
上記ライブラリプログラムシステムにおいて演算処理を行わせる演算内容の情報としての演算依頼情報を該ライブラリプログラムシステムに転送する処理を行う演算依頼手段と、
上記ライブラリプログラムシステムにおけるライブラリプログラムの実行結果を該ライブラリプログラムシステムから受信する処理を行う演算結果受信手段とを備え、
上記ライブラリプログラムシステムが、
上記ユーザプログラムシステムから、ライブラリプログラムの実行時に用いられる演算の入力値に関する入力値情報を受信する処理を行う入力値受信手段と、
上記ユーザプログラムシステムから送られてきた演算依頼情報を解析することによって、利用するライブラリプログラムの種類、およびその実行順序を決定する処理を行う演算方法決定手段と、
ライブラリプログラムの実行結果を上記ユーザプログラムシステムへ送信する処理を行う演算結果送信手段とを備え
上記演算依頼情報が、上記入力値情報およびライブラリプログラムの実行結果の転送処理を実施するためのプログラムを記述したプログラム言語と、上記ライブラリプログラムを記述したプログラム言語とのいずれからも独立した文法で記述された文字列であることを特徴とする演算処理システム。
【請求項4】
上記入力値転送手段が、上記入力値情報として、数値データおよびそのデータ形式を転送することを特徴とする請求項3記載の演算処理システム。
【請求項5】
上記入力値受信手段が、受信した入力値情報を記憶部に格納するとともに、
上記演算方法決定手段が、ライブラリプログラムの実行の際に、上記記憶部に格納されているどの入力値情報を用いるかを決定することを特徴とする請求項3記載の演算処理システム。
【請求項6】
上記演算依頼手段が、演算内容の情報として、数学の演算式そのものを表す文字列を転送することを特徴とする請求項3記載の演算処理システム。
【請求項7】
上記ユーザプログラムシステム、および上記ライブラリプログラムシステムが、同一のコンピュータにおいて動作することを特徴とする請求項2または3記載の演算処理システム。
【請求項8】
上記ユーザプログラムシステムが第1のコンピュータにおいて動作するとともに、上記ライブラリプログラムシステムが、上記第1のコンピュータと通信接続された別のコンピュータにおいて動作することを特徴とする請求項2または3記載の演算処理システム。
【請求項9】
上記ライブラリプログラムシステムが動作するコンピュータが複数存在することを特徴とする請求項8記載の演算処理システム。
【請求項10】
上記ユーザプログラムシステムが第1のコンピュータにおいて動作するとともに、上記ライブラリプログラムシステムが、上記第1のコンピュータと通信接続された別の複数のコンピュータにおいて動作し、
上記入力値転送手段および上記演算依頼手段が、上記入力値情報および上記演算内容の情報を、ライブラリプログラムシステムが動作する1つのコンピュータに対して転送するとともに、
上記入力値情報および上記演算内容の情報を受信したライブラリプログラムシステムにおける上記演算方法決定手段が、演算処理の分担を決定し、他のコンピュータにおける分担分の処理内容を転送する処理を行うことを特徴とする請求項3記載の演算処理システム。
【請求項11】
上記ユーザプログラムシステムが第1のコンピュータにおいて動作するとともに、上記ライブラリプログラムシステムが、上記第1のコンピュータと通信接続された別の複数のコンピュータにおいて動作し、
上記入力値転送手段および上記演算依頼手段が、上記入力値情報および上記演算内容の情報を、ライブラリプログラムシステムが動作する1つのコンピュータに対して転送し、
上記入力値情報および上記演算内容の情報を受信したライブラリプログラムシステムにおける上記演算方法決定手段が、演算処理の分担を決定し、この分担方法の結果をユーザプログラムシステムに送信し、
上記演算依頼手段が、受信した分担方法の結果に基づいて、各コンピュータに対して演算依頼情報を転送するとともに、上記入力値転送手段が、上記演算の分担方法に基づいて各コンピュータに対して入力値情報を転送することを特徴とする請求項3記載の演算処理システム。
【請求項12】
ユーザプログラムを実行するユーザプログラムシステムと、上記ユーザプログラムにおいて利用されるライブラリプログラムを実行するライブラリプログラムシステムとを備えた演算処理システムにおける演算処理方法において、
上記ユーザプログラムシステムにおける、
上記ライブラリプログラムシステムに演算を行わせる処理が上記ユーザプログラムによって行われる際に、演算の入力値に関する入力値情報を上記ライブラリプログラムシステムに転送する処理を行う入力値転送ステップと、
上記ライブラリプログラムシステムにおいて演算処理を行わせる演算内容の情報としての演算依頼情報を該ライブラリプログラムシステムに転送する処理を行う演算依頼ステップと、
上記ライブラリプログラムシステムにおけるライブラリプログラムの実行結果を該ライブラリプログラムシステムから受信する処理を行う演算結果受信ステップと、
上記ライブラリプログラムシステムにおける、
上記ユーザプログラムシステムから、ライブラリプログラムの実行時に用いられる演算の入力値に関する入力値情報を受信する処理を行う数値データ受信ステップと、
上記ユーザプログラムシステムから送られてきた演算依頼情報を解析することによって、利用するライブラリプログラムの種類、およびその実行順序を決定する処理を行う演算方法決定ステップと、
ライブラリプログラムの実行結果を上記ユーザプログラムシステムへ送信する処理を行う演算結果送信ステップとを有し
上記演算依頼情報が、上記入力値情報およびライブラリプログラムの実行結果の転送処理を実施するためのプログラムを記述したプログラム言語と、上記ライブラリプログラムを記述したプログラム言語とのいずれからも独立した文法で記述された文字列であることを特徴とする演算処理方法。
【請求項13】
請求項2または3記載の演算処理システムが備えるユーザプログラムシステム。
【請求項14】
請求項2または3記載の演算処理システムが備えるライブラリプログラムシステム。
【請求項15】
請求項13記載のユーザプログラムシステムが備える各手段が有する機能をコンピュータに実行させることを特徴とするコンピュータ読み取り可能なプログラム。
【請求項16】
請求項15記載のプログラムを記録した記録媒体。
【請求項17】
請求項14記載のライブラリプログラムシステムが備える各手段が有する機能をコンピュータに実行させることを特徴とするコンピュータ読み取り可能なプログラム。
【請求項18】
請求項17記載のプログラムを記録した記録媒体。
発明の詳細な説明 【技術分野】
【0001】
本発明は、ユーザプログラムを実行するユーザプログラムシステムと、上記ユーザプログラムにおいて利用されるライブラリプログラムを実行するライブラリプログラムシステムとを備えた演算処理システムに関するものである。
【背景技術】
【0002】
従来、科学技術計算等の複雑かつ膨大な演算を行う場合などに、汎用の数値計算ライブラリの利用が広く行われている。汎用の数値計算ライブラリとは、例えば連立一次方程式を解く、行列の固有値を求める、スプライン補間する、微分方程式を解くなど、数値計算法のサブルーチン集のことである。
【0003】
数値計算ライブラリを利用した演算は、基本的には、ユーザが生成し、利用するユーザプログラムが実行されるユーザプログラムシステムと、ライブラリプログラムが実行されるライブラリプログラムシステムとからなる演算処理システムによって実現される。ユーザは、ユーザプログラム中に、ライブラリプログラムの実行に関する命令を含めることにより、ライブラリプログラムを利用することになる。
【0004】
以上のように、数値計算ライブラリを利用することによって、ユーザは、複雑な数値解析プログラムを自分で作成する必要がなくなる。よって、科学技術計算を行う上でのユーザのプログラミングの負担を軽減することができる。
【0005】
従来の演算処理システムを用いて、例えば連立1次方程式Ax=bを解く場合には、ユーザプログラムは次のような命令列となる。
REAL*8A(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】
ここで、特許文献1(特開平9-128352号公報;公開日:1997年5月16日)には、「並列計算機上でユーザプログラムを一台の親プロセッサで実行し、ライブラリルーチン内部のみを複数の子プロセッサで実行する際に、子プロセッサは、最初に一回だけ起動して無限ループで待たせておき、ライブラリコール時に親プロセッサから通信で指令と実行に必要なデータを送って並列実行を行わせた後、再び実行前と同じ状態、すなわち,無限ループで親プロセッサからの通信待ち状態にする」構成が記載されている。これにより、ライブラリが複数回コールされる場合に子プロセッサ起動のオーバーヘッドが削減でき,並列計算機上でのライブラリコールを高速化できる。
【0010】
また、特許文献2(特開平11-039271号公報;公開日:1999年2月12日)には、「ユーザが解こうとするデータのサイズに応じて、ライブラリに格納されたサブルーチンの中から最適なサブルーチンを選択して割り当てる」構成が記載されている。
【0011】
さらに、非特許文献1(GridRPC Tutorial;http://ninf.apgrid.org/papers/gridrpc_tutorial/gridrpc_tutorial_e.html)および2(OmniRPC:a Grid RPC system for Parallel Programming;http://www.omni.hpcc.jp/OmniRPC/index.html.ja)には、グリッドRPC(Remote Procedure Call)システムが記載されている。
【0012】
また、特許文献3(特開2000-231478号公報;公開日:2000年8月22日)には、「基本となるデータ処理を表す計算式や、当該計算式に必要なデータの抽出元と計算結果の移行先、および上記データの処理条件に関する各種仕様情報を定義するための仕様情報定義部と、定義された仕様情報に基づいて、抽出元からデータを取り込んで計算を行い、その結果を移行先に移行することを実現するためのプログラムを生成するプログラム生成部とを設け、元の基本的な計算式を含む仕様情報を要求に合わせて表形式で定義するだけで、その仕様情報に従ったデータ処理を実現するためのプログラムを自動的に生成することができるようにした」構成が記載されている。
【0013】
さらに、特許文献4(特開2002-073578号公報;公開日:2002年3月12日)には、「クライアントコンピュータから発行されたリクエストを中継するプロクシコンピュータを備え、該プロクシコンピュータ内には、クライアントコンピュータから発行されたリクエストの種類と転送すべきサーバオブジェクトの対応関係を予め定義した転送先リストと、クライアントコンピュータから発行されたリクエストの種類に応じて前記転送先リストに示されたサーバオブジェクトに対しリクエストを転送するリクエスト転送手段と、サーバオブジェクトから返送された結果を元のクライアントコンピュータに転送する結果転送手段とを備える」構成が記載されている。また、特許文献5(特開2004-102507号公報;公開日:2004年4月2日)に記載のシステムでは、通信モジュールの受付部が第1のオブジェクトから第2のオブジェクトへの通信要求及び送信データを受け付けると、通信決定部は、ネットワーク装置への問い合わせを行い、ネットワーク装置から第2のオブジェクトに対応する通信プロトコル及びアドレス情報を受け取り、これを使用するものと決定している。さらに、通信部は、上記通信決定部で決定した通信プロトコル及びアドレス情報に従い、送信データを送信する。これによって、第1および第2のオブジェクトの間のオブジェクト間通信を実現している。
【発明の開示】
【0014】
本発明の目的は、ユーザプログラムのユーザが、ライブラリプログラムシステムにおける具体的な処理を意識することなく、より容易にライブラリプログラムを利用することを可能とする演算処理システム、演算処理方法、ユーザプログラムシステム、ライブラリプログラムシステム、プログラム、および、プログラムを記録した記録媒体を提供することにある。
【0015】
本発明に係る演算処理方法は、ユーザプログラムを実行するユーザプログラムシステムと、上記ユーザプログラムにおいて利用されるライブラリプログラムを実行するライブラリプログラムシステムとを備えた演算処理システムにおける演算処理方法において、上記ユーザプログラムシステムが、上記ライブラリプログラムシステムに、演算処理の対象となる処理対象データを転送する第1転送ステップと、上記ユーザプログラムシステムが、上記ライブラリプログラムシステムから上記処理対象データを演算処理した結果を示す処理結果データを受け取る第2転送ステップと、上記第1および第2転送ステップの間に、これらのステップとは独立して実施される演算指示ステップおよび演算処理ステップとを含み、上記演算指示ステップでは、上記ユーザプログラムシステムが、上記演算処理の内容を、文字列によって、上記ライブラリプログラムシステムへ指示すると共に、上記演算処理ステップでは、上記ライブラリプログラムシステムが、上記文字列を解析して、上記演算処理の際に利用するライブラリプログラムの種類、および、その実行順序を決定すると共に、当該決定されたライブラリプログラムを、上記決定された実行順序にて実行することによって、上記処理対象データを演算処理している。
【0016】
また、本発明に係る演算処理方法は、ユーザプログラムを実行するユーザプログラムシステムと、上記ユーザプログラムにおいて利用されるライブラリプログラムを実行するライブラリプログラムシステムとを備えた演算処理システムにおける演算処理方法において、上記ユーザプログラムシステムにおける、上記ライブラリプログラムシステムに演算を行わせる処理が上記ユーザプログラムによって行われる際に、演算の入力値に関する入力値情報を上記ライブラリプログラムシステムに転送する処理を行う入力値転送ステップと、上記ライブラリプログラムシステムにおいて演算処理を行わせる演算内容の情報としての演算依頼情報を該ライブラリプログラムシステムに転送する処理を行う演算依頼ステップと、上記ライブラリプログラムシステムにおけるライブラリプログラムの実行結果を該ライブラリプログラムシステムから受信する処理を行う演算結果受信ステップと、上記ライブラリプログラムシステムにおける、上記ユーザプログラムシステムから、ライブラリプログラムの実行時に用いられる演算の入力値に関する入力値情報を受信する処理を行う数値データ受信ステップと、上記ユーザプログラムシステムから送られてきた演算依頼情報を解析することによって、利用するライブラリプログラムの種類、およびその実行順序を決定する処理を行う演算方法決定ステップと、ライブラリプログラムの実行結果を上記ユーザプログラムシステムへ送信する処理を行う演算結果送信ステップとを有していることを特徴としている。
【0017】
上記の構成によれば、ユーザプログラムシステムにおいてユーザプログラムが実行され、ライブラリプログラムの利用が行われた際に、次の3つの処理が行われることになる。まず、演算の入力値に関する入力値情報(あるいは処理対象データ)がユーザプログラムシステムからライブラリプログラムシステムへ転送される。また、例えば、演算内容の情報をユーザプログラムシステムからライブラリプログラムシステムへ転送するなどして、ユーザプログラムシステムからライブラリプログラムシステムへ演算処理の内容が指示され、ライブラリプログラムシステムにおいて、上記演算処理の際に利用するライブラリプログラムの種類、および、その実行順序が決定される。そして、例えば、ユーザプログラムシステムからの要求に応じるなどして、実行結果(あるいは処理結果データ)がライブラリプログラムシステムからユーザプログラムシステムへ転送される。
【0018】
このように、入力値情報の転送処理(処理対象データの転送処理)、演算内容の情報の転送処理(演算内容を指示する処理)、および、演算結果の転送処理(処理結果データの転送処理)がそれぞれ別々に行われるので、ユーザプログラムを、各処理に関する命令をそれぞれ分離した状態で構成できる。したがって、ユーザプログラムを細分化できるので、入力値(処理対象データ)や演算内容などをより容易に変更できる。また、ユーザプログラムが細分化されることによって、エラーが発生した場合にも、問題の発生箇所が認識されやすくするという効果もある。
【0019】
また、ライブラリプログラムシステムでは、指示された演算内容が解析されて、利用するライブラリプログラムの種類、および、その実行順序が決定され、これに基づいてライブラリプログラムの実行が行われる。よって、ユーザプログラムシステムは、ライブラリプログラムシステムに対して単にどのような演算処理を行わせるかについて指示するだけでよく、どのライブラリプログラムを利用するかを指示する必要がない。したがって、ユーザプログラムでは、ライブラリプログラムシステムにおける具体的な処理を考慮する必要がないので、ユーザプログラムのユーザは、ライブラリプログラムシステムにおける処理の詳細に関する知識を必要とせずに、より容易にライブラリプログラムを利用できる。
【0020】
また、ライブラリプログラムシステムにおいて演算依頼情報(あるいは演算内容を示す文字列)が解析されて、適切なライブラリプログラムが実行されるようになっているので、ライブラリプログラムシステムは、ユーザプログラムがどのようなプログラム言語によって記述されていても対応できる。
【0021】
また、ライブラリプログラムが改良されたり、新たなライブラリプログラムが追加されたりしたとしても、ユーザプログラム側では、これを一切認識する必要がなく、ライブラリプログラムシステム側で自動的に適切なライブラリプログラムが利用される。すなわち、ライブラリプログラムシステムが変更されたとしても、ユーザプログラムを変更することなく対応できる。また、このようなシステムを導入した際にも、今まで使っていたライブラリプログラムをそのまま利用できる。
【0022】
また、ライブラリプログラムシステムにおいて実行される演算に関しては、ユーザプログラムシステムは関与する必要がない。したがって、ユーザプログラムシステムにおけるユーザプログラムのサイズを削減できると共に、ユーザプログラムシステムにおけるメモリ使用量も削減できる。
【0023】
本発明のさらに他の目的、特徴、および優れた点は、以下に示す記載によって十分わかるであろう。また、本発明の利益は、添付図面を参照した次の説明で明白になるであろう。
【図面の簡単な説明】
【0024】
【図1】本発明の一実施形態に係る演算処理システムの概略構成を示すブロック図である。
【図2】ユーザプログラムシステムにおける処理の流れを示すフローチャートである。
【図3】ライブラリプログラムシステムにおける処理の流れを示すフローチャートである。
【図4】ユーザプログラムシステムおよびライブラリプログラムシステムの両方が、1つのコンピュータにおいて実行される構成例を示すブロック図である。
【図5】ユーザプログラムシステムが実行されるコンピュータと、ライブラリプログラムシステムが実行されるコンピュータとが通信ネットワークを介して接続された構成例を示すブロック図である。
【図6】ユーザプログラムシステムが実行されるコンピュータと、ライブラリプログラムシステムが実行される複数のコンピュータとが通信ネットワークを介して接続された構成例を示すブロック図である。
【図7】ユーザプログラムシステムが実行されるコンピュータと、ライブラリプログラムシステムが実行される複数のコンピュータとが通信ネットワークを介して接続された別の構成例を示すブロック図である。
【図8】ユーザプログラムシステムおよびライブラリプログラムシステムの両方が、それぞれ複数存在する構成例を示すブロック図である。
【図9】ユーザプログラムシステムとライブラリプログラムシステムとの間における、データシーケンス例を示す図面である。
【符号の説明】
【0025】
1 演算処理システム
2 ユーザプログラムシステム
3 ライブラリプログラムシステム
13 演算処理部
14 記憶部
14A ユーザプログラム格納部
14B 数値データ格納部
14C 演算結果データ格納部
21 ユーザプログラム実行部
22 転送制御部
22A 数値データ転送部(入力値転送手段;第1転送手段)
22B 演算依頼部(演算依頼手段)
22C 演算結果受信部(演算結果受信手段;第2転送手段)
32 演算処理部(演算処理手段)
33 記憶部
33A ライブラリプログラム格納部
33B 数値データ格納部
33C 演算結果データ格納部
41 転送制御部
42 ライブラリプログラム実行部
41A 数値データ受信部(入力値受信手段)
41B 演算方法決定部(演算方法決定手段)
41C 演算結果送信部(演算結果送信手段)
【発明を実施するための最良の形態】
【0026】
本発明の一実施形態について図1ないし図7に基づいて説明すると以下の通りである。
【0027】
(演算処理システムの構成)
図1は、本実施形態に係る演算処理システム1の概略構成を示すブロック図である。同図に示すように、演算処理システム1は、ユーザプログラムシステム2、およびライブラリプログラムシステム3を備えた構成となっている。
【0028】
ユーザプログラムシステム2は、ユーザが作成し、利用するユーザプログラムを実行するシステムである。このユーザプログラムシステム2は、入出力部11、転送処理部12、演算処理部13、および記憶部14を備えている。
【0029】
入出力部11は、ユーザからの入力を受け付けるとともに、演算処理部13による演算結果をユーザに対して表示・出力するものである。転送処理部12は、ライブラリプログラムシステム3との間でのデータの送受信を行うものである。
【0030】
演算処理部13は、ユーザプログラムの演算処理を行うものである。この演算処理部13は、ユーザプログラム実行部21、および転送制御部22を備えている。
【0031】
ユーザプログラム実行部21は、記憶部14に記憶されているユーザプログラムを読み出して実行するものである。転送制御部22は、ユーザプログラム実行部21において実行されているユーザプログラムが、ライブラリプログラムシステム3に格納されているライブラリプログラムを利用する場合に、ライブラリプログラムシステム3に対してのデータの送受信に関する制御処理を行うものである。この転送制御部22は、数値データ転送部(入力値転送手段)22A、演算依頼部(演算依頼手段)22B、および演算結果受信部(演算結果受信手段)22Cを備えている。
【0032】
数値データ転送部22Aは、ライブラリプログラムシステム3に演算処理を実行させる際に、演算の入力値となる数値データおよびそのデータ形式をライブラリプログラムシステム3に転送する処理を行う。演算依頼部22Bは、ライブラリプログラムシステム3において行わせる演算内容の情報(演算依頼情報)をライブラリプログラムシステム3に転送する処理を行う。この演算依頼情報は、特定のライブラリプログラムの実行命令ではなく、数学の演算式そのものを表す文字列を含んでいる。演算結果受信部22Cは、ライブラリプログラムシステム3におけるライブラリプログラムの実行結果をライブラリプログラムシステム3に対して要求するとともに、該実行結果をライブラリプログラムシステム3から受信する処理を行う。
【0033】
記憶部14は、演算処理部13における演算処理で用いられるデータを格納するとともに、演算処理部13のワークメモリとして機能する記憶手段である。なお、記憶部14は、主記憶機能に加えて、補助記憶機能を有するものであってもよく、また、外部に補助記憶装置を備える構成であっても構わない。この記憶部14は、ユーザプログラム格納部14A、数値データ格納部14B、および演算結果データ格納部14Cを備えている。
【0034】
ユーザプログラム格納部14Aは、演算処理部13において実行されるユーザプログラムを格納する領域である。数値データ格納部14Bは、数値データ転送部22Aによって転送される数値データおよびそのデータ形式を格納する領域である。演算結果データ格納部14Cは、演算結果受信部22Cによって受信された実行結果を格納する領域である。なお、実際のメモリの利用に際しては、数値データ格納部14Bおよび演算結果データ格納部14Cは、両者が区別されることなく、変数や配列として記憶部14に記憶される。また、ライブラリプログラム演算に関係しないその他の演算に必要とされる数値データなども記憶部14に格納される。
【0035】
一方、ライブラリプログラムシステム3は、ユーザプログラムシステム2からの依頼に応じて、ライブラリプログラムを実行するシステムである。このライブラリプログラムシステム3は、転送処理部31、演算処理部32、および記憶部33を備えている。
【0036】
転送処理部31は、ユーザプログラムシステム2との間でのデータの送受信を行うものである。
【0037】
演算処理部32は、ライブラリプログラムの演算処理を行う。この演算処理部32は、ライブラリプログラム実行部42、および転送制御部41を備えている。
【0038】
ライブラリプログラム実行部42は、記憶部33に記憶されているライブラリプログラムを読み出して実行する。転送制御部41は、ユーザプログラムシステム2において実行されているユーザプログラムが、ライブラリプログラムシステム3による処理を利用するものである場合に、ユーザプログラムシステム2からの要求に応じて、該ユーザプログラムシステム2に対してのデータの送受信に関する制御処理を行う。この転送制御部41は、数値データ受信部(入力値受信手段)41A、演算方法決定部(演算方法決定手段)41B、および演算結果送信部(演算結果送信手段)41Cを備えている。
【0039】
数値データ受信部41Aは、ユーザプログラムシステム2から、例えばライブラリプログラムの実行時に用いられる演算の入力値となる数値データおよびそのデータ形式を受信する処理を行う。なお、数値データ受信部41Aは、ライブラリプログラムの実行に用いないデータをユーザプログラムシステム2から受信してもよい。
【0040】
演算方法決定部41Bは、ユーザプログラムシステム2から送られてきた演算依頼情報を解析することによって、利用するライブラリプログラム、およびその実行順序を決定する処理を行う。演算結果送信部41Cは、ライブラリプログラム実行部42におけるライブラリプログラムの実行結果を、ユーザプログラムシステム2からの要求に応じてユーザプログラムシステム2へ送信する処理を行う。
【0041】
記憶部33は、演算処理部32における演算処理で用いられるデータを格納するとともに、演算処理部32のワークメモリとして機能する記憶手段である。なお、記憶部33は、主記憶機能に加えて、補助記憶機能を有するものであってもよく、また、外部に補助記憶装置を備える構成であっても構わない。この記憶部33は、ライブラリプログラム格納部33A、数値データ格納部33B、および演算結果データ格納部33Cを備えている。
【0042】
ライブラリプログラム格納部33Aは、演算処理部32において実行されるライブラリプログラムを格納する領域である。数値データ格納部33Bは、数値データ転送部41Aによって受信された数値データおよびそのデータ形式を格納する領域である。演算結果データ格納部33Cは、ライブラリプログラム実行部42によるライブラリプログラムの実行結果を格納する領域である。なお、実際のメモリの利用に際しては、数値データ格納部33Bおよび演算結果データ格納部33Cは、両者が区別されることなく、変数や配列として記憶部33に記憶される。また、ライブラリプログラム演算において一時的に用いられる中間データとしての変数や、数値データに対するディレクトリ構造を示す管理情報なども記憶部33に格納される。
【0043】
(演算処理システムにおける処理の流れ)
次に、上記した演算処理システム1における処理の流れについて、図2および図3を参照しながら以下に説明する。図2は、ユーザプログラムシステム2における処理の流れを示すフローチャートであり、図3は、ライブラリプログラムシステム3における処理の流れを示すフローチャートである。
【0044】
(ユーザプログラムシステムにおける処理の流れ)
まず、図2を参照しながら、ユーザプログラムシステム2における処理の流れについて説明する。まずステップ1(以降、S1のように称する)において、ユーザプログラムシステム2において、ユーザプログラム実行部21がユーザプログラムの実行を開始する。すなわち、例えば入出力部11においてユーザからの所定のユーザプログラムの実行指示が受け付けられると、この情報がユーザプログラム実行部21に伝達される。そして、ユーザプログラム実行部21は、指定されたユーザプログラムを、記憶部14のユーザプログラム格納部14Aから読み出し、該ユーザプログラムの実行を開始する。
【0045】
その後、ユーザプログラム実行部21は、該ユーザプログラムのコードを順次実行する。そして、ユーザプログラム実行部21が、ライブラリプログラムシステム3に対して数値データおよびそのデータ形式を転送することを示すコードを実行した場合(S2においてYES)には、数値データ転送部22Aが、該数値データおよびそのデータ形式に関する情報を、ライブラリプログラムシステム3に対して転送するように転送処理部12を制御する。この数値データおよびそのデータ形式に関する情報は、入出力部11によってユーザから入力されるものであってもよいし、実行されているユーザプログラムによって生成されるものであってもよい。これにより、数値データおよびそのデータ形式に関する情報が、転送処理部12によってライブラリプログラムシステム3へ転送される(S3)。また、数値データ転送部22Aは、記憶部14における数値データ格納部14Bに、転送した数値データおよびそのデータ形式に関する情報を格納する。
【0046】
また、ユーザプログラム実行部21が、ライブラリプログラムシステム3において演算処理を行わせるコードを実行した場合(S4においてYES)には、演算依頼部22Bが、演算依頼内容を示す演算依頼情報をライブラリプログラムシステム3に対して転送するように転送処理部12を制御する。この演算依頼情報は、入出力部11によってユーザから入力されるものであってもよいし、実行されているユーザプログラムによって生成されるものであってもよい。これにより、演算依頼情報が、転送処理部12によってライブラリプログラムシステム3へ転送される(S5)。
【0047】
また、ユーザプログラム実行部21が、ライブラリプログラムシステム3において演算処理が行われた結果を要求することを示すコードを実行した場合(S6においてYES)には、演算結果受信部22Cは、結果要求情報を、ライブラリプログラムシステム3に対して転送するように転送処理部12を制御する。なお、転送されただけで演算が行われていない数値データ格納部33Bに格納されている数値データの転送を要求してもよい。この結果要求情報は、入出力部11によってユーザから入力されるものであってもよいし、実行されているユーザプログラムによって生成されるものであってもよい。これにより、結果要求情報が、転送処理部12によってライブラリプログラムシステム3へ転送される。その後、ライブラリプログラムシステム3から演算結果が転送処理部12において受信されると、演算結果受信部22Cは、受信した演算結果を、記憶部14における演算結果データ格納部14Cに格納する(S7)。
【0048】
以上のS2、S4、およびS6のいずれの場合においてもNOである場合には、ユーザプログラム実行部21は、ユーザ定義処理、すなわち、ユーザプログラムにおけるその他の処理を行うことになる(S8)。そして、S9において、ユーザプログラム実行部21は、該ユーザプログラムの実行を完了したか否かを判定する。S9においてNO、すなわち、ユーザプログラムの実行が完了していない場合は、S2からの処理に戻ることになる。一方、ユーザプログラムの実行が完了したと判定された場合(S9においてYES)には、ユーザプログラムの処理が終了する。
【0049】
なお、S2、S4、S6、およびS8の処理は、上記の順で行われることに限定されるものではなく、どの順序で行われてもよい。すなわち、S3、S5、S7、およびS8の処理は、該当するコードが実行された順序で行われればよい。
【0050】
以上のように、ユーザプログラムシステム2における処理は、ライブラリプログラムシステム3における処理とは非同期に進行する。
【0051】
(ライブラリプログラムシステムにおける処理の流れ)
次に、図3を参照しながら、ライブラリプログラムシステム3における処理の流れについて説明する。まずS11において、数値データ受信部41Aが、ユーザプログラムシステム2から数値データおよびそのデータ形式に関する情報を転送処理部31を介して受信したか否かを判定する。S11においてYES、すなわち、数値データおよびそのデータ形式に関する情報が受信されたと判定された場合には、数値データ受信部41Aは、受信した数値データおよびそのデータ形式に関する情報を記憶部33における数値データ格納部33Bに格納する(S12)。
【0052】
また、S13において、演算方法決定部41Bが、ユーザプログラムシステム2から演算依頼情報を転送処理部31を介して受信したか否かを判定する。S13においてYES、すなわち、演算依頼情報が受信されたと判定された場合には、演算方法決定部41Bは、受信した演算依頼情報を解析することによって、利用するライブラリプログラムの種類、およびその実行順序を決定する処理を行う(S14)。
【0053】
次に、S15において、ライブラリプログラム実行部42は、演算方法決定部41Bによって決定されたライブラリプログラムの種類およびその実行順序に基づいて、ライブラリプログラムによる演算を実行する。ここで、ライブラリプログラム実行部42は、記憶部33におけるライブラリプログラム格納部33Aから必要とするライブラリプログラムを読み出すとともに、記憶部3における数値データ格納部33Bから入力値としての数値データおよびそのデータ形式に関する情報を読み出して、演算を実行する。その後、S16において、ライブラリプログラム実行部42は、演算結果データを記憶部33における演算結果データ格納部33Cに格納する。
【0054】
また、S17において、演算結果送信部41Cが、ユーザプログラムシステム2から演算結果の送信要求を転送処理部31を介して受信したか否かを判定する。S17においてYES、すなわち、演算結果の送信要求が受信されたと判定された場合には、演算結果送信部41Cは、記憶部33における演算結果データ格納部33Cから演算結果データを読み出し、これを転送処理部31からユーザプログラムシステム2に対して送信する制御を行う。これにより、演算結果がライブラリプログラムシステム3からユーザプログラムシステム2に対して送信される(S18)。なお、数値データ格納部33Bに格納されている数値データに対する送信要求だった場合、演算結果送信部41Cは、記憶部33における数値データ格納部33Bから数値データおよびそのデータ形式を読み出し、これを転送処理部31からユーザプログラムシステム2に対して送信する制御を行うようになっていてもよい。
【0055】
なお、S11、S13、およびS17の処理は、上記の順で行われることに限定されるものではなく、どの順序で行われてもよい。すなわち、S12、S14~S16、およびS18の処理は、該当するコードが実行された順序で行われればよい。
【0056】
ここで、比較対象として、上述した従来の演算処理システムについて簡単に説明する。当該従来の演算処理システムを用いた構成、すなわち、ユーザプログラムがライブラリプログラムの実行命令毎にデータを指定する構成では、ユーザプログラムは、ライブラリプログラムの選択、データを記述する順番、データ形式の選択、および中間結果などのデータの管理のすべてについてユーザプログラムが責任を負わなければならない。したがって、従来の演算処理システムでは、ユーザプログラムが肥大化する傾向にあり、分散並列用ライブラリの作成も困難になってしまう。
【0057】
このように、従来の演算処理システムでは、ライブラリプログラムの呼び出し方法が個々のライブラリプログラムに依存している一方で、データの格納形式は、ユーザプログラムに依存している。したがって、ユーザは、以下のようなユーザプログラム、すなわち、所望の演算処理が可能なライブラリプログラムに適切な方法でデータを格納し、当該ライブラリプログラムに適切な呼び出し方法で呼び出すユーザプログラムを生成する必要がある。さらに、従来の演算処理システムでは、Reverse Communicationを用いて、下位のサブプログラムをユーザが提供する必要も生じる。また、多くのライブラリプログラムシステムでは、使用可能な作業領域が予め決められるので、ユーザプログラムは、当該与えられた作業領域を使用して、上記形式でデータを格納する必要がある。なお、上記データ格納形式は、演算処理の内容だけではなく、ライブラリプログラムを記述したプログラム言語にも依存していることが多いため、多くの場合、演算処理の内容が類似しているライブラリプログラムであっても、それぞれを記述したプログラム言語が互いに異なっていれば、上記データ格納形式も互いに異なることがある。
【0058】
また、ライブラリプログラムシステムにおけるライブラリプログラムが改良されたり新たに追加されたりした場合、ユーザプログラムのユーザは、これを考慮して、ユーザプログラムの内容を変更する必要が生じる。
【0059】
さらに、ライブラリプログラムの実行命令には、データの形式についての指定も含まれているので、入力値を変更したい場合には、入力値を変更するだけでなく、データの形式に応じて実行命令自体も変更する必要が生じる。
【0060】
このように、従来の演算処理システムでは、ユーザプログラムは、ソースレベルでライブラリプログラムに依存しており、ライブラリプログラムを変更するためには、ユーザプログラムを多くの箇所で変更する必要がある。
【0061】
これに対して、本実施形態に係る演算処理システム1では、上述したように、ユーザプログラムシステム2が、上記ライブラリプログラムシステム3に、演算処理の対象となる処理対象データとしての数値データ、および、そのデータ形式を転送する第1転送ステップ(S3)と、上記ユーザプログラムシステム2が、上記ライブラリプログラムシステム3から、上記処理対象データを演算処理した結果を示す処理結果データとしての数値データ、および、そのデータ形式を受け取る第2転送ステップ(S18)とが実施されている。さらに、上記第1転送ステップおよび第2転送ステップの間には、これらのステップとは独立して実施される演算指示ステップ(S5)および演算処理ステップ(S14~S16)が実施されている。
【0062】
さらに、上記S5にて、上記ユーザプログラムシステム2がライブラリプログラムシステム3へ送信する演算依頼情報には、上記演算処理の内容を示す文字列(例えば、数学の演算式そのものを示す文字列など)が含まれており、また、上記S14~S16において、上記ライブラリプログラムシステム3は、上記文字列を含む演算依頼情報を解析して、上記演算処理の際に利用するライブラリプログラムの種類、および、その実行順序を決定すると共に、当該決定されたライブラリプログラムを、上記決定された実行順序にて実行することによって、上記処理対象データを演算処理している。
【0063】
このように、本実施形態に係る演算処理システム1では、図9に示すように、処理対象データの転送処理(数値データの転送処理)P1と、演算処理の内容を指示する処理(演算依頼情報の転送処理)P2と、処理結果データの転送処理(演算結果の転送処理)P3とが、それぞれ別々に行われるので、ユーザプログラムを、各処理に関する命令をそれぞれ分離した状態で構成できる。
【0064】
したがって、ユーザプログラムを細分化できるので、処理対象データの変更や演算内容の変更などをより容易に行うことができる。また、ユーザプログラムが細分化されることによって、エラーが発生した場合にも、問題の発生箇所が認識されやすくできる。
【0065】
なお、図9中、破線で示したように、本実施形態に係るライブラリシステム3は、処理対象データの転送および演算処理の内容の指示を受け付けた場合、ユーザプログラムシステム2へのアクノリッジ(OK)を返すと共に、ユーザプログラムシステム2からの演算結果の要求に応じて、上記処理結果データの転送処理を開始している。なお、エラーが発生した場合、ライブラリシステム3は、ユーザプログラムシステム2にエラーを返している。
【0066】
さらに、ライブラリプログラムシステム3では、演算処理の内容を示す文字列が解析されて、利用するライブラリプログラムの種類、および、その実行順序が決定され、これに基づいてライブラリプログラムの実行が行われる。
【0067】
よって、演算内容を指示する際、ユーザプログラムシステム2は、ライブラリプログラムシステム3に対して、単に演算内容を示す文字列を送信するだけでよく、どのライブラリプログラムを利用するかを指示する必要がない。
【0068】
さらに、ライブラリプログラムシステムにおいて実行される演算に関しては、ユーザプログラムシステムは関与する必要がない。したがって、ライブラリプログラムが実行されるメモリ空間とは異なったメモリ空間で実行されるユーザプログラムのサイズを小さくできると共に、ユーザプログラムシステムにおけるメモリ使用量も小さくできる。
【0069】
また、上記のようにして、ライブラリプログラムシステム3がライブラリプログラムの種類、および、その実行順序を決定しているので、演算内容の情報を示す文字列は、以下の各プログラム言語、すなわち、ユーザプログラムのうち、処理対象データおよび処理結果データのの転送処理を実施するためのプログラムを記述するプログラム言語と、ライブラリプログラムを記述したプログラム言語とのいずれからも独立した自由な文法で記述できる。
【0070】
これらの結果、処理対象データの転送処理と、演算処理の内容を指示する処理と、処理結果データの転送処理とのうちの1つが、他の処理に依存する度合いを低くすることができる。また、演算処理の内容を指示する処理が、実際にライブラリプログラムシステム3で行われる演算処理に依存する度合いも低くすることができる。これにより、上記各処理のいずれが変更されても、その変更が他の処理に影響しにくくなり、より容易にライブラリプログラムを利用できる。
【0071】
より詳細には、上記のようにして、ライブラリプログラムシステム3がライブラリプログラムの種類、および、その実行順序を決定しているので、ユーザプログラムでは、ライブラリプログラムシステム3における具体的な処理を考慮する必要がない。したがって、ユーザプログラムのユーザは、ライブラリプログラムシステム3における処理の詳細に関する知識を必要とせずに、より容易にライブラリプログラムを利用できる。
【0072】
また、ライブラリプログラムが改良されたり、新たなライブラリプログラムが追加されたりしたとしても、ライブラリプログラムシステム3側で自動的に適切なライブラリプログラムが選択される。加えて、ライブラリプログラムシステム3のハードウェア構成が変更され、使用可能なプロセッサの数が増えたとしても、ライブラリプログラムシステム3は、その数に応じた適切なライブラリプログラムを自動的に選択できる。
【0073】
このように、ライブラリプログラムシステム3が変更されたとしても、ユーザプログラムを変更することなく対応できる。この結果、ユーザプログラム側では、ライブラリプログラムの改良や変更などを一切認識する必要がなく、より容易にライブラリプログラムを利用できる。また、このようなシステムを導入した際にも、今まで使っていたライブラリプログラムをそのまま利用できる。
【0074】
このように、ライブラリプログラムシステム3のハードウェア構成およびライブラリプログラムのバージョンアップが容易なので、ライブラリプログラムシステム3に比較的容易に新技術を導入できる。新技術導入の一例としては、ライブラリプログラムに新アルゴリズムを採用すること、ライブラリプログラムの精度を拡張したり、精度を保証したりすること、ライブラリプログラムのフォルトトレラント化または自動的な性能最適化、あるいは、分散並列処理可能なライブラリプログラムの実現などが挙げられる。
【0075】
さらに、上記各プログラム言語が変更されても、ユーザプログラムのユーザは、上記演算内容を示す文字列を変更することなく、ライブラリプログラムシステムに演算処理を依頼でき、より容易にライブラリプログラムを利用できる。
【0076】
さらに、本実施形態に係るライブラリプログラムシステム3は、上記文字列(演算依頼情報)の解析結果に加えて、処理対象データ(数値データ)と共に送信されるデータ形式をも参照して、上記演算処理に利用するライブラリプログラム、当該ライブラリプログラムの挙動、および、各ライブラリプログラムの実行順序を決定している。ここで、データ構造としては、例えば、処理対象データの型、あるいは、処理対象データが配列の場合における配列要素の数および配列の次元などが挙げられる。なお、ライブラリプログラムシステム3は、ユーザプログラムシステム2から受け取ったデータ形式を参照する代わりに、処理対象データのデータ構造を解析して、処理対象データのデータ構造を取得し、その解析結果を参照してもよい。
【0077】
この構成では、処理対象データのデータ形式は、入力値情報として、ライブラリプログラムシステム3に転送されるか、あるいは、ライブラリプログラムシステム3が処理対象データのデータ構造を解析するかすることによって取得しており、演算内容の情報には、数値データのデータ形式に関する情報を含める必要がない。
【0078】
また、上記処理対象データのデータ形式が変化した場合、上記演算処理の内容を示す文字列(演算依頼情報)を変更しなくても、データ形式の変化に応じて、上記演算処理に利用するライブラリプログラム、当該ライブラリプログラムの挙動、あるいは、各ライブラリプログラムの実行順序が変更される。
【0079】
したがって、異なったデータ形式を扱うユーザプログラムを組み合わせたりすることが容易に可能となる。また、上記処理対象データのデータ構造が変化した場合に、それに応じて、ライブラリプログラムシステムへの演算処理の指示が変更される構成と比較して、処理対象データの変更や演算内容の変更などをより容易に行うことができる。
【0080】
(システム構成例1)
次に、演算処理システム1の具体的構成例について説明する。このシステム構成例1は、図4に示すように、ユーザプログラムシステム2およびライブラリプログラムシステム3の両方が、1つのコンピュータ1Aにおいて実行されるものとなっている。
【0081】
コンピュータ1Aは、演算手段としてのCPU(Central Processing Unit)、主記憶手段としてのRAM(Random Access Memory)、および、不揮発性記憶装置としてのROM(Read Only Memory)やハードディスクなどを備えた一般的なコンピュータである。そして、ユーザプログラムシステム2における演算処理部13の各機能ブロック、および、ライブラリプログラムシステム3における演算処理部32の各機能ブロックは、CPUがRAMに該当プログラムをハードディスクなどから読み出して実行することによって実現される。また、記憶部14は、RAM、およびハードディスクなどによって実現される。
【0082】
また、ユーザプログラムシステム2における転送処理部12、および、ライブラリプログラムシステム3における転送処理部31は、演算処理部13によるプログラムと、演算処理部32によるプログラムとの間でデータの転送処理、すなわちプロセス間通信を行う。また、入出力部11は、コンピュータ1Aが備えるキーボードやマウスなどの入力手段、および、表示手段としてのディスプレイ、印刷手段としてのプリンタなどによって実現される。
【0083】
なお、コンピュータ1Aが複数のプロセッサを有し、並列演算を行うことが可能な構成であってもよい。
【0084】
(システム構成例1における具体的動作例)
次に、システム構成例1における具体的動作例について説明する。ここでの動作例は、次のようなものである。ユーザプログラムシステム2におけるユーザプログラムにおいて、連立1次方程式Ax=bを解くという命令が含まれており、この連立1次方程式Ax=bの演算がライブラリプログラムシステム3において行われる。詳しく説明すると、A(LDA,N)で宣言された倍精度実数型の2次元配列に係数行列Aが格納され、B(N)で宣言された倍精度実数型の1次元配列にベクトルbが格納される。そして、連立1次方程式Ax=bの解ベクトルxは、SOL(N)で宣言された倍精度実数型の1次元配列に格納される。
【0085】
以上の動作例における処理の流れは次のとおりである。まず、ライブラリプログラムシステム3における演算処理部32が動作可能状態に設定される。次に、ユーザプログラムシステム2における演算処理部13が、ユーザからの指示入力などに基づいて特定のユーザプログラムの実行を開始する。
【0086】
その後、ユーザプログラムの実行過程において、ライブラリプログラムシステム3に実行させる演算処理の入力値として用いられる数値データおよびそのデータ形式が生成される。本動作例では、数値データおよびそのデータ形式として、上記の係数行列Aおよびベクトルbが生成される。生成された係数行列Aおよびベクトルbは、数値データ格納部14Bに配列Aおよび配列Bとして格納される。
【0087】
その後、ユーザプログラム実行部21は、ユーザプログラム中の次のステートメントを実行する。
CALL PUT(’A’,LDA,N,A,IEER)
CALL PUT(’b’,N,B,IERR)
上記のステートメントは、ライブラリプログラムシステム3に対して、係数行列Aが格納された配列A、および、ベクトルbが格納された配列Bを送信する、という命令を示している。なお、「PUT」という命令は、特にこの文字列に限定されるものではなく、他の文字列によってこの命令を示すようになっていてもよい。
【0088】
上記のステートメントがユーザプログラム実行部21によって実行されると、数値データ転送部22Aは、配列Aおよび配列Bを、ライブラリプログラムシステム3に対して転送するように転送処理部12を制御する。これにより、配列Aおよび配列Bが、転送処理部12によってライブラリプログラムシステム3へ転送される。
【0089】
ライブラリプログラムシステム3では、数値データ受信部41Aが配列Aおよび配列Bを受信し、これを係数行列Aおよびベクトルbとして数値データ格納部33Bに格納する。
【0090】
次に、ユーザプログラム実行部21は、ユーザプログラム中の次のステートメントを実行する。
CALL SILC(’x=A¥b’)
上記のステートメントは、ライブラリプログラムシステム3に対して、演算依頼情報として、連立1次方程式Ax=bを解くことを指示する命令を示している。なお、「SILC」という命令は、特にこの文字列に限定されるものではなく、他の文字列によってこの命令を示すようになっていてもよい。この命令によって、ライブラリプログラムシステム3において演算が実行されるが、ユーザプログラムシステム2は、ライブラリプログラムシステム3における演算の終了を待たずに次のステートメントに移行する。
【0091】
ライブラリプログラムシステム3では、演算方法決定部41Bが、上記の演算依頼情報を受信し、受信した演算依頼情報を解析することによって、利用するライブラリプログラムの種類、およびその実行順序を決定する処理を行う。
【0092】
具体的には、演算方法決定部41Bは、上記の演算依頼情報として、例えば、演算子とオペランドとからなる文字列が与えられた場合、文字列の解析によって、演算子とオペランドとを特定し、オペランドの型、および、演算子の種類から、利用するライブラリプログラムを決定する。一例として、演算方法決定部41Bは、依頼を受け付け可能なオペランドの型と演算子の種類との組み合わせの全てについて、組み合わせと、その組み合わせの場合に利用するライブラリプログラム(またはライブラリプログラムの組み合わせ)との対応関係を記憶しておき、依頼されたオペランドの型と演算子の種類との組み合わせに対応するライブラリプログラム(またはライブラリプログラムの組み合わせ)を、利用するライブラリプログラムとして決定する。なお、上記ライブラリプログラムシステム3には、上記対応関係を変更するためのAPI(Application Programming Interface)が用意されており、例えば、ライブラリプログラムのバージョンアップ時などに、ライブラリプログラムシステム3のユーザ(運用者)から対応関係変更指示を受け取ると、ライブラリプログラムシステム3は、指示に応じて、対応関係を変更できる。
【0093】
また、文字列に複数の演算子が含まれている場合、演算方法決定部41Bは、文字列の解析によって、各演算子の実行順序を決定し、それをライブラリプログラムの実行順序として決定する。さらに、上記演算方法決定部41Bは、例えば、上記のように種類および実行順序が決定された各ライブラリプログラムを実行するためのステートメントを生成し、当該ステートメントをライブラリプログラム実行部42へ与えるなどして、ライブラリプログラム実行部42に、当該決定されたライブラリプログラムの実行を指示する。なお、どちらが先でもかまわない演算であって、しかも、ライブラリプログラムシステム3が複数のプロセッサを備えていると判断した場合、演算方法決定部41Bは、各演算に対応するライブラリプログラムの並列実行を、各プロセッサへ指示してもよい。
【0094】
さらに、上記演算方法決定部41Bは、例えば、各ライブラリプログラムの実行終了時に、各ライブラリプログラムを実行する部材(例えば、ライブラリプログラム実行部42など)によって設定されるフラグを監視するなどして、各ライブラリプログラムの実行終了を監視し、各ライブラリプログラムの実行が終了しているか否かに応じて、次に実行するライブラリプログラムを決定してもよい。これにより、例えば、ライブラリプログラムシステム3、あるいは、そのプロセッサ毎に、ライブラリプログラムを実行する部材の性能が異なっており、予め、ライブラリプログラムの実行に要する時間を決定できない場合であっても、何ら支障なく、次に実行するライブラリプログラムを適切に決定できる。
【0095】
例えば、上記のように、演算依頼情報として’x=A¥b’を受信した場合、演算方法決定部41Bは、受信した演算依頼情報(’x=A¥b’)に基づいて、次のステートメントを生成する。
CALL LU(LDA,N,A1,IP,IERR)
x←b
CALL SOLVE(LDA,N,A1,IP,x,IERR)
上記ステートメントの1行目はLU分解処理を示しており、2行目は代入処理を示しており、3行目は前進後退代入処理を示している。このステートメントにおいて、演算方法決定部41Bは、例えば、定義されたAをプログラムに合う形に変換したA1(実際にはAをA1にコピー)を割り当てたり、中間変数としてx、IPを割り当てたりする処理を行う。なお、A1、IP、xはライブラリプログラムシステム3においてのみ用いられる変数である。
【0096】
ライブラリプログラム実行部42は、演算方法決定部41Bによって決定された演算に基づいてライブラリプログラムを実行し、解xを導出する。導出された解は演算結果データとして、演算結果データ格納部33Cに格納される。
【0097】
その後、ユーザプログラムシステム2において、ユーザプログラム実行部21は、ユーザプログラム中の次のステートメントを実行する。
CALL GET(’x’,N,SOL,IERR)
上記のステートメントは、ライブラリプログラムシステム3から、演算結果としての解xを受信し、この解xを配列SOLに格納する命令を示している。なお、「GET」という命令は、特にこの文字列に限定されるものではなく、他の文字列によってこの命令を示すようになっていてもよい。
【0098】
上記のステートメントが実行されると、演算結果受信部22Cは、結果要求情報としての上記ステートメントを、ライブラリプログラムシステム3に対して転送するように転送処理部12を制御する。これにより、結果要求情報が、転送処理部12によってライブラリプログラムシステム3へ転送される。
【0099】
ライブラリプログラムシステム3では、演算結果送信部41Cが上記結果要求情報を受信し、該結果要求情報によって要求された演算結果データを演算結果データ格納部33Cから読み出す。そして、演算結果送信部41Cは、読み出した演算結果データを転送処理部31からユーザプログラムシステム2に対して送信する制御を行う。これにより、演算結果がライブラリプログラムシステム3からユーザプログラムシステム2に対して送信される。なお、結果要求情報が受信された時点で、ライブラリプログラムシステム3において演算が完了していない場合には、演算が完了するまで演算結果データの送信は行われない。
【0100】
ユーザプログラムシステム2では、演算結果受信部22Cが、演算結果データをライブラリプログラムシステム3から受信すると、演算結果データとしての解xを配列SOLとして演算結果データ格納部14Cに格納する。これにより、ライブラリプログラムシステム3を利用した演算が完了することになる。
【0101】
その後、ユーザプログラムの実行が完了すると、ライブラリプログラムシステム3において、数値データ格納部33Bおよび演算結果データ格納部33Cに格納されているデータがクリアされ、演算処理部32の動作が停止する。なお、ライブラリプログラムシステム3におけるデータのクリアおよび演算処理部32における動作の停止は、ユーザプログラムがライブラリプログラムシステム3を利用する必要がなくなった時点で行われてもよい。
【0102】
また、新たなユーザプログラムがユーザプログラムシステム2において実行されてもよい。このとき、ライブラリプログラムシステム3を経由して、前回のユーザプログラムから新たなユーザプログラムにデータの受け渡しが行われてもよい。
【0103】
なお、ユーザ演算依頼情報の命令として、
CALL SILC(’Z=X+Y;C=A-B’)
というステートメントをユーザプログラムに記述することも可能である。この場合、例えばライブラリプログラムシステム3において並列演算が可能ならば、「Z=X+Y」に関する演算と、「C=A-B」に関する演算を並列に行うことが可能となる。また、ユーザプログラムシステム2側では、上記の2つの演算がライブラリプログラムシステム3において終わっていなくても、次の命令を実行することが可能である。すなわち、この場合には、3つの処理が並列に行われることになり、処理の高速化を実現することができる。また、このような並列処理は、ユーザプログラムにおいて特別に意識されることなく実行されることになる。
【0104】
なお、上記では、一例として、演算依頼情報が、数式を示す文字列の場合について説明したが、これに限るものではない。数式以外に、例えば、制御構文を示す文字列など、他の文字列が含まれていてもよい。また、演算依頼情報は、数式以外の文字列(テキストベース)であってもよいし、文字列以外のデータであってもよい。いずれの場合であっても、演算依頼情報が演算内容の情報であれば、上記と同様に、「ライブラリプログラムシステム3がライブラリプログラムの種類、および、その実行順序を決定しているため、ユーザプログラムでは、ライブラリプログラムシステムにおける具体的な処理を考慮する必要がない」などの効果が得られる。
【0105】
ただし、文字列は、ユーザが理解しやすく、編集しやすいため、演算依頼情報は、文字列を含んでいる方が望ましい。特に、数式は、広く使用されているため、新たな文法を定義する場合と異なって、ユーザが、その意味を理解しやすく、編集しやすい。したがって、演算依頼情報は、少なくとも数式を示す文字列を含んでいることが特に好ましい。
【0106】
なお、文字列で記述したとしても、上述したように、演算内容の情報を示す文字列を、以下の各プログラム言語、すなわち、ユーザプログラムのうち、処理対象データおよび処理結果データの転送処理を実施するためのプログラムを記述するプログラム言語と、ライブラリプログラムを記述したプログラム言語とのいずれからも独立した自由な文法で記述できる。したがって、上記各プログラム言語が変更されても、ユーザプログラムのユーザは、上記演算内容の情報を示す文字列を変更することなく、ライブラリプログラムシステムに演算処理を依頼でき、より容易にライブラリプログラムを利用できる。
【0107】
また、基本的には、利用されるライブラリプログラムがライブラリプログラムシステム3にて決定されるが、ユーザプログラムからの演算依頼情報に、利用するライブラリプログラムを指定する情報が含まれている場合、ライブラリプログラムシステム3は、指定されたライブラリプログラムを利用してもよい。この場合は、ユーザは、特定の処理については、特定のライブラリプログラムを利用させることができ、より適切な処理をライブラリプログラムシステム3に指示できる。なお、この場合であっても、演算依頼情報に上記ライブラリプログラムを指定する情報が含まれていないときに、ライブラリプログラムシステム3が、演算処理時に利用されるライブラリプログラムを決定できれば、同様の効果が得られる。
【0108】
(システム構成例2)
次に、演算処理システム1の他の具体的構成例について説明する。このシステム構成例2は、図5に示すように、ユーザプログラムシステム2が実行されるコンピュータ1Bと、ライブラリプログラムシステム3が実行されるコンピュータ1Cとが通信ネットワークNを介して接続された構成となっている。
【0109】
コンピュータ1Bおよびコンピュータ1Cは、演算手段としてのCPU、主記憶手段としてのRAM、および、不揮発性記憶装置としてのROMやハードディスクなどを備えた一般的なコンピュータである。そして、ユーザプログラムシステム2における演算処理部13の各機能ブロック、および、ライブラリプログラムシステム3における演算処理部32の各機能ブロックは、CPUがRAMに該当プログラムをハードディスクなどから読み出して実行することによって実現される。また、記憶部14は、RAM、およびハードディスクなどによって実現される。
【0110】
また、ユーザプログラムシステム2における転送処理部12、および、ライブラリプログラムシステム3における転送処理部31は、通信ネットワークNを介しての通信を行う際の通信インターフェースとして機能することになる。また、入出力部11は、コンピュータ1Bが備えるキーボードやマウスなどの入力手段、および、表示手段としてのディスプレイ、印刷手段としてのプリンタなどによって実現される。
【0111】
なお、コンピュータ1Bおよびコンピュータ1Cがそれぞれ複数のプロセッサを有し、並列演算を行うことが可能な構成であってもよい。
【0112】
(システム構成例2における具体的動作例)
システム構成例2は、システム構成例1と比較して、ユーザプログラムシステム2とライブラリプログラムシステム3とがそれぞれ異なるコンピュータ上で動作する点が異なっているのみであり、基本的な動作はほぼ同様となっている。すなわち、システム構成例2における具体的動作例としては、上記したシステム構成例1における具体的動作例とほぼ同様である。異なる点としては、転送処理部12と転送処理部31との間のデータ転送が、通信ネットワークNを介して行われる点である。
【0113】
(システム構成例3)
次に演算処理システム1のさらに他の具体的構成例について説明する。このシステム構成例3は、図6および図7に示すように、ユーザプログラムシステム2が実行されるコンピュータ1Bと、ライブラリプログラムシステム3が実行されるコンピュータ1Cおよびコンピュータ1Dとが通信ネットワークNを介して接続された構成となっている。すなわち、システム構成例2と異なる点としては、ライブラリプログラムシステム3が実行されるコンピュータが2台存在する点である。なお、図6および図7に示す構成例では、ライブラリプログラムシステム3が実行されるコンピュータが2台となっているが、3台以上であっても構わない。
【0114】
コンピュータ1B、コンピュータ1C、およびコンピュータ1Dは、演算手段としてのCPU、主記憶手段としてのRAM、および、不揮発性記憶装置としてのROMやハードディスクなどを備えた一般的なコンピュータである。そして、ユーザプログラムシステム2における演算処理部13の各機能ブロック、および、ライブラリプログラムシステム3における演算処理部32の各機能ブロックは、CPUがRAMに該当プログラムをハードディスクなどから読み出して実行することによって実現される。また、記憶部14は、RAM、およびハードディスクなどによって実現される。
【0115】
また、ユーザプログラムシステム2における転送処理部12、および、ライブラリプログラムシステム3における転送処理部31は、通信ネットワークNを介しての通信を行う際の通信インターフェースとして機能することになる。また、入出力部11は、コンピュータ1Bが備えるキーボードやマウスなどの入力手段、および、表示手段としてのディスプレイ、印刷手段としてのプリンタなどによって実現される。
【0116】
なお、コンピュータ1B、コンピュータ1C、およびコンピュータ1Dがそれぞれ複数のプロセッサを有し、並列演算を行うことが可能な構成であってもよい。
【0117】
また、このシステム構成例3は、コンピュータ1Bと、コンピュータ1Cおよび1Dとの距離が比較的近く、コンピュータ1Cおよび1Dにおける演算速度が均質である場合には、並列コンピュータ、SMP(Symmetric Multiprocessor)、クラスタコンピュータなどによって実現され、コンピュータ1Bと、コンピュータ1Cおよび1Dとの距離が比較的遠く、コンピュータ1Cおよび1Dにおける演算速度が均質でない場合には、グリッドコンピューティングなどによって実現されるものである。
【0118】
(システム構成例3における具体的動作例)
システム構成例3は、システム構成例2と比較して、ユーザプログラムシステム2が利用するライブラリプログラムシステム3が複数存在する点である。すなわち、システム構成例3は、ユーザプログラムに利用されるライブラリプログラムを、複数のライブラリプログラムシステム3によって分担して実行することが可能となっている。したがって、システム構成例3の場合、各ライブラリプログラムシステム3に対してどのように処理を割り振るかについて考慮する必要がある。ここで、システム構成例3では、1つのライブラリプログラムシステム3において処理の割り振り方法が決定される。そして、ユーザプログラムシステム2の挙動として、次の2つの方法が挙げられる。1つ目の方法は、ユーザプログラムシステム2が、1つのライブラリプログラムシステム3に対して通信を行う方法であり、2つ目の方法は、ユーザプログラムシステム2が、1つのライブラリプログラムシステム3に対して割り振り方法を問い合わせて、その結果に基づいて複数のライブラリプログラムシステム3…に対して通信を行う方法である。
【0119】
まず、ユーザプログラムシステム2が、1つのライブラリプログラムシステム3に対して通信を行う方法について説明する。この場合、図6に示すように、ユーザプログラムシステム2は、コンピュータ1Cにおけるライブラリプログラムシステム3に対して、ライブラリプログラムシステム3に数値データおよびそのデータ形式の転送を行う。そして、コンピュータ1Cにおけるライブラリプログラムシステム3が、コンピュータ1Dにおけるライブラリプログラムシステム3とどのように処理を分担するかを決定し、コンピュータ1Dでの演算で必要な数値データおよびそのデータ形式をコンピュータ1Dに転送する。次に、ユーザプログラムシステム2は、コンピュータ1Cにおけるライブラリプログラムシステム3に対して、ライブラリプログラムを利用する演算の依頼を行う。コンピュータ1Cにおけるライブラリプログラムシステム3は、コンピュータ1Dにおけるライブラリプログラムシステム3とどのように処理を分担するかを決定し、これに基づいて、コンピュータ1Cおよびコンピュータ1Dにおけるライブラリプログラムシステム3が処理を行う。演算によっては、処理に先立ってコンピュータ1Cとコンピュータ1Dとにある数値データおよびそのデータ形式の配置方法を変更してもよい。
【0120】
ユーザプログラムシステム2は、前記したシステム構成例1と同様に、コンピュータ1Cにおけるライブラリプログラムシステム3に対して、数値データの送信、演算依頼情報の送信、および演算結果の送信依頼を行う。一方、コンピュータ1Cにおけるライブラリプログラムシステム3は、ユーザプログラムシステム2から受信した数値データに基づいてコンピュータ1Dとの分担方法を決定する。数値データの分担方法または演算に適する分担方法に従って、コンピュータ1Cおよびコンピュータ1Dにおけるライブラリプログラムシステム3が処理を行う。
【0121】
具体的には、まずユーザプログラムシステム2から数値データおよびそのデータ形式を受信すると、数値データ受信部41Aが、一旦その数値データを数値データ格納部33Bに格納する。その後、数値データの形式に基づく標準的な数値データの分担方法で、数値データおよびそのデータ形式をコンピュータ1Dにおけるライブラリプログラムシステム3に転送し、数値データ格納部33Bに格納する。ユーザプログラムシステム2から演算依頼情報を受信すると、演算方法決定部41Bが、該演算依頼情報を解析して、コンピュータ1Dとの分担方法を決定する。このとき、必要ならばコンピュータ1Cとコンピュータ1Dとの数値データとそのデータ形式の分担を変更するため、数値データの転送が行われる。
【0122】
その後、コンピュータ1Cにおけるライブラリプログラムシステム3では、分担分の演算の実行がライブラリプログラム実行部42によって行われ、演算結果データが演算結果データ格納部33Cに格納される。また、コンピュータ1Dにおけるライブラリプログラムシステム3でも、分担分の演算の実行がライブラリプログラム実行部42によって行われ、演算結果データが演算結果データ格納部33Cに格納される。ユーザプログラムシステム2からコンピュータ1Cにおけるライブラリプログラムシステム3に対して演算結果の要求があったときは、まずコンピュータ1Dにおけるライブラリプログラムシステム3において行われた演算の演算結果がコンピュータ1Cにおけるライブラリプログラムシステム3に転送される。
【0123】
コンピュータ1Cにおけるライブラリプログラムシステム3は、自装置で行われた演算の演算結果およびコンピュータ1Dにおいて行われた演算の演算結果に基づいて、最終的な演算結果を導出し、これを演算結果送信部41Cが、ユーザプログラムシステム2に対して送信する制御を行う。
【0124】
なお、数値データの送受信、および、演算結果の送受信は、上記の順序に限定されるものではなく、任意のタイミングで行われてもよい。
【0125】
以上のような処理により、ユーザプログラム自体はライブラリプログラムシステム3の利用方法について一切認識する必要がないので、ユーザは、システムの相違を意識することなくユーザプログラムを作成することが可能となる。
【0126】
次に、ユーザプログラムシステム2が、1つのライブラリプログラムシステム3に対して割り振り方法を問い合わせて、その結果に基づいて複数のライブラリプログラムシステム3…に対して通信を行う方法について説明する。この場合、図7に示すように、ユーザプログラムシステム2は、ライブラリプログラムに数値データの転送を行う際に、コンピュータ1Cにおけるライブラリプログラムシステム3と、コンピュータ1Dにおけるライブラリプログラムシステム3とでどのように処理を分担させるかについて、コンピュータ1Cにおけるライブラリプログラムシステム3に対して問い合わせを行う。この問い合わせに対して、コンピュータ1Cにおけるライブラリプログラムシステム3が数値データおよびそのデータ形式の分担方法を算出し、その結果をユーザプログラムシステム2に対して送信する。ユーザプログラムシステム2は、受信した分担方法に基づいて、コンピュータ1Cにおけるライブラリプログラムシステム3、およびコンピュータ1Dにおけるライブラリプログラムシステム3に対してそれぞれに数値データとそのデータ形式を転送する。
【0127】
具体的には、まずユーザプログラムシステム2から数値データおよびそのデータ形式の送信が伝えられると、数値データおよびそのデータ形式に対応した標準的な分担方法をユーザプログラムシステム2へ対して送信する。この分担方法に基づいて、コンピュータ1Cにおけるライブラリプログラムシステム3に格納される数値データをコンピュータ1Cにおけるライブラリプログラムシステム3に転送し、コンピュータ1Dにおけるライブラリプログラムシステム3に格納される数値データをコンピュータ1Dにおけるライブラリプログラムシステム3に対して転送するように制御する。ライブラリプログラムシステム3はユーザプログラムシステム2から数値データとそのデータ形式を受信すると、数値データ受信部41Aがその数値データを数値データ格納部33Bに格納する。
【0128】
その後、ユーザプログラムシステム2から演算依頼情報を受信すると、演算方法決定部41Bが、該演算依頼情報を解析して、コンピュータ1Dとの分担方法を決定する。このとき、必要ならばコンピュータ1Cとコンピュータ1Dとの数値データの分担を変更するため、数値データの転送が行われる。
【0129】
その後、コンピュータ1Cにおけるライブラリプログラムシステム3では、分担分の演算の実行がライブラリプログラム実行部42によって行われ、演算結果データが演算結果データ格納部33Cに格納される。また、コンピュータ1Dにおけるライブラリプログラムシステム3でも、分担分の演算の実行がライブラリプログラム実行部42によって行われ、演算結果データが演算結果データ格納部33Cに格納される。
【0130】
ユーザプログラムシステム2からコンピュータ1Cにおけるライブラリプログラムシステム3に対して演算結果の要求があったときは、まずは演算結果の分担方法がユーザプログラムシステム2に送信される。この分担方法に基づいて、ユーザプログラムシステムでは、コンピュータ1Cにおけるライブラリプログラムシステム3に格納されている演算結果と、コンピュータ1Dにおけるライブラリプログラムシステム3に格納されている演算結果の転送要求を発行するように制御する。ユーザプログラムシステム2において、演算結果受信部22Cは、コンピュータ1Cおよびコンピュータ1Dから演算結果を受信し、ライブラリプログラムを利用した演算結果を演算結果データ格納部14Cに格納する。
【0131】
以上のような処理により、上記(1)の方法と同様に、ユーザプログラム自体はライブラリプログラムシステム3の利用方法について一切認識する必要がないので、ユーザは、システムの相違を意識することなくユーザプログラムを作成することが可能となる。
【0132】
なお、上記のシステム構成例3では、ユーザプログラムシステム2が1つである一方、ライブラリプログラムシステム3が複数存在する構成となっているが、図8に示すように、ユーザプログラムシステム2およびライブラリプログラムシステム3の両方ともが、それぞれ複数存在する構成としてもよい。同図に示す例では、コンピュータ1Eおよびコンピュータ1Dがそれぞれユーザプログラムシステム2およびライブラリプログラムシステム3の両方を備えており、コンピュータ1Eとコンピュータ1Fとが通信ネットワークNを介して接続された構成となっている。このような構成の場合でも、上記のシステム構成例3に示したような処理を適用することが可能である。
【0133】
(ユーザプログラムが並列プログラムの場合)
以上では、基本的に、ユーザプログラムシステム2において実行されるユーザプログラムは、逐次型のプログラム、すなわち、シリアルに処理が行われるプログラムである場合を想定しているが、ユーザプログラムが並列型のプログラムであっても構わない。例えば、ユーザプログラムシステム2における並列処理の数がpであり、ライブラリプログラムシステム3における並列処理の数もpである場合には、上記したシステム構成例2を用いることが好適である。また、ユーザプログラムシステム2における並列処理の数がpであり、ライブラリプログラムシステム3における並列処理の数がq(≠p)である場合には、上記したシステム構成例3を用いることが好適である。
【0134】
以上のように、本発明に係る演算処理方法は、ユーザプログラムを実行するユーザプログラムシステムと、上記ユーザプログラムにおいて利用されるライブラリプログラムを実行するライブラリプログラムシステムとを備えた演算処理システムにおける演算処理方法において、上記ユーザプログラムシステムが、上記ライブラリプログラムシステムに、演算処理の対象となる処理対象データを転送する第1転送ステップと、上記ユーザプログラムシステムが、上記ライブラリプログラムシステムから上記処理対象データを演算処理した結果を示す処理結果データを受け取る第2転送ステップと、上記第1および第2転送ステップの間に、これらのステップとは独立して実施される演算指示ステップおよび演算処理ステップとを含み、上記演算指示ステップでは、上記ユーザプログラムシステムが、上記演算処理の内容を、文字列によって、上記ライブラリプログラムシステムへ指示すると共に、上記演算処理ステップでは、上記ライブラリプログラムシステムが、上記文字列を解析して、上記演算処理の際に利用するライブラリプログラムの種類、および、その実行順序を決定すると共に、当該決定されたライブラリプログラムを、上記決定された実行順序にて実行することによって、上記処理対象データを演算処理している。
【0135】
また、本発明に係る演算処理システム(例えば、演算処理システム1)は、以上のように、ユーザプログラムを実行するユーザプログラムシステム(例えば、ユーザプログラムシステム2)と、上記ユーザプログラムにおいて利用されるライブラリプログラムを実行するライブラリプログラムシステム(例えば、ライブラリプログラムシステム3)とを備えた演算処理システムにおいて、上記ユーザプログラムシステムには、上記ライブラリプログラムシステムに、演算処理の対象となる処理対象データを転送する第1転送手段(例えば、数値データ転送部22A)と、上記ライブラリプログラムシステムから上記処理対象データを演算処理した結果を示す処理結果データを受け取る第2転送手段(例えば、演算結果受信部22C)と、当該処理対象データおよび処理結果データの転送とは独立して、上記演算処理の内容を文字列により上記ライブラリプログラムシステムへ指示する演算依頼手段(例えば、演算意ライブ22B)とが設けられ、上記ライブラリプログラムシステムには、上記文字列を解析して、上記演算処理の際に利用するライブラリプログラムの種類、および、その実行順序を決定すると共に、当該決定されたライブラリプログラムを、上記決定された実行順序にて実行することによって、上記処理対象データを演算処理する演算処理手段(例えば、演算処理部32)が設けられている。
【0136】
上記構成では、処理対象データの転送処理、演算処理の内容を指示する処理および処理結果データの転送処理がそれぞれ別々に行われるので、ユーザプログラムを、各処理に関する命令をそれぞれ分離した状態で構成できる。したがって、ユーザプログラムを細分化できるので、処理対象データの変更や演算内容の変更などをより容易に行うことができる。また、ユーザプログラムが細分化されることによって、エラーが発生した場合にも、問題の発生箇所が認識されやすくするという効果もある。
【0137】
また、ライブラリプログラムシステムでは、演算処理の内容を示す文字列が解析されて、利用するライブラリプログラムの種類、および、その実行順序が決定され、これに基づいてライブラリプログラムの実行が行われる。よって、演算内容を指示する際、ユーザプログラムシステムは、ライブラリプログラムシステムに対して、単に演算内容を示す文字列を送信するだけでよく、どのライブラリプログラムを利用するかを指示する必要がない。
【0138】
したがって、ユーザプログラムでは、ライブラリプログラムシステムにおける具体的な処理を考慮する必要がないので、ユーザプログラムのユーザは、ライブラリプログラムシステムにおける処理の詳細に関する知識を必要とせずに、より容易にライブラリプログラムを利用できる。
【0139】
また、ライブラリプログラムシステムにおいて演算処理の内容を示す文字列が解析されて、適切なライブラリプログラムが実行される。したがって、演算内容の情報を示す文字列を、以下の各プログラム言語、すなわち、ユーザプログラムのうち、処理対象データを転送する処理および処理結果データを転送する処理を実施するためのプログラムを記述するプログラム言語と、ライブラリプログラムを記述したプログラム言語とのいずれからも独立した自由な文法で記述できる。
【0140】
この結果、上記各処理を実施するためのプログラムおよびライブラリプログラムが変更されても、ユーザプログラムのユーザは、上記演算内容の情報を示す文字列を変更することなく、ライブラリプログラムシステムに演算処理を依頼でき、より容易にライブラリプログラムを利用できる。
【0141】
また、ライブラリプログラムシステムにおいて演算処理の内容を示す文字列が解析されて、適切なライブラリプログラムが決定されるので、ライブラリプログラムが改良されたり、新たなライブラリプログラムが追加されたりしたとしても、ユーザプログラム側では、これを一切認識する必要がなく、ライブラリプログラムシステム側で自動的に適切なライブラリプログラムが選択される。すなわち、ライブラリプログラムシステムが変更されたとしても、ユーザプログラムを変更することなく対応できる。また、このようなシステムを導入した際にも、今まで使っていたライブラリプログラムをそのまま利用できる。
【0142】
また、ライブラリプログラムシステムにおいて実行される演算に関しては、ユーザプログラムシステムは関与する必要がない。したがって、ユーザプログラムシステムにおけるユーザプログラムのサイズを小さくできると共に、ユーザプログラムシステムにおけるメモリ使用量も小さくできる。
【0143】
なお、上記ユーザプログラムシステムを構成するプログラムは、例えば、同一のライブラリプログラムシステムに対してアクセスする3本のユーザプログラム、すなわち、処理対象データの転送処理プログラム、演算処理の内容指示プログラムおよび処理結果データの転送処理プログラムというように、別々のプログラムによって実現されていてもよい。
【0144】
また、上記演算処理手段は、上記文字列の解析結果に加えて、上記処理対象データのデータ構造(データ形式)の解析結果、または、処理対象データと共に送信されるデータ構造を示す情報をも参照して、上記演算処理に利用するライブラリプログラム、当該ライブラリプログラムの挙動、および、各ライブラリプログラムの実行順序を決定してもよい。
【0145】
この構成では、上記処理対象データのデータ構造が変化した場合、上記演算処理の内容を示す文字列を変更しなくても、データ構造の変化に応じて、上記演算処理の際に利用するライブラリプログラム、当該ライブラリプログラムの挙動、あるいは、実行順序が変更される。したがって、上記処理対象データのデータ構造が変化した場合に、それに応じて、ライブラリプログラムシステムへの演算処理の指示が変更される構成と比較して、処理対象データの変更や演算内容の変更などをより容易に行うことができる。
【0146】
さらに、本発明に係る演算処理システム(例えば、演算処理システム1)は、ユーザプログラムを実行するユーザプログラムシステム(例えば、ユーザプログラムシステム2)と、上記ユーザプログラムにおいて利用されるライブラリプログラムを実行するライブラリプログラムシステム(例えば、ライブラリプログラムシステム3)とを備えた演算処理システムにおいて、上記ユーザプログラムシステムが、上記ライブラリプログラムシステムに演算を行わせる処理が上記ユーザプログラムによって行われる際に、演算の入力値に関する入力値情報を上記ライブラリプログラムシステムに転送する処理を行う入力値転送手段(例えば、数値データ転送部22A)と、上記ライブラリプログラムシステムにおいて演算処理を行わせる演算内容の情報としての演算依頼情報を該ライブラリプログラムシステムに転送する処理を行う演算依頼手段(例えば、演算依頼部22B)と、上記ライブラリプログラムシステムにおけるライブラリプログラムの実行結果を該ライブラリプログラムシステムから受信する処理を行う演算結果受信手段(例えば、演算結果受信部22C)とを備え、上記ライブラリプログラムシステムが、上記ユーザプログラムシステムから、ライブラリプログラムの実行時に用いられる演算の入力値に関する入力値情報を受信する処理を行う入力値受信手段(例えば、数値データ受信部41A)と、上記ユーザプログラムシステムから送られてきた演算依頼情報を解析することによって、利用するライブラリプログラムの種類、およびその実行順序を決定する処理を行う演算方法決定手段(例えば、演算方法決定部41B)と、ライブラリプログラムの実行結果を上記ユーザプログラムシステムへ送信する処理を行う演算結果送信手段(例えば、演算結果送信部41C)とを備えていることを特徴としている。
【0147】
また、本発明に係る演算処理方法は、ユーザプログラムを実行するユーザプログラムシステムと、上記ユーザプログラムにおいて利用されるライブラリプログラムを実行するライブラリプログラムシステムとを備えた演算処理システムにおける演算処理方法において、上記ユーザプログラムシステムにおける、上記ライブラリプログラムシステムに演算を行わせる処理が上記ユーザプログラムによって行われる際に、演算の入力値に関する入力値情報を上記ライブラリプログラムシステムに転送する処理を行う入力値転送ステップと、上記ライブラリプログラムシステムにおいて演算処理を行わせる演算内容の情報としての演算依頼情報を該ライブラリプログラムシステムに転送する処理を行う演算依頼ステップと、上記ライブラリプログラムシステムにおけるライブラリプログラムの実行結果を該ライブラリプログラムシステムから受信する処理を行う演算結果受信ステップと、上記ライブラリプログラムシステムにおける、上記ユーザプログラムシステムから、ライブラリプログラムの実行時に用いられる演算の入力値に関する入力値情報を受信する処理を行う数値データ受信ステップと、上記ユーザプログラムシステムから送られてきた演算依頼情報を解析することによって、利用するライブラリプログラムの種類、およびその実行順序を決定する処理を行う演算方法決定ステップと、ライブラリプログラムの実行結果を上記ユーザプログラムシステムへ送信する処理を行う演算結果送信ステップとを有していることを特徴としている。
【0148】
上記の構成および方法によれば、ユーザプログラムシステムにおいてユーザプログラムが実行され、ライブラリプログラムの利用が行われた際に、次の3つの処理が行われることになる。まず、演算の入力値に関する入力値情報がユーザプログラムシステムからライブラリプログラムシステムへ転送される。また、演算内容の情報がユーザプログラムシステムからライブラリプログラムシステムへ転送され、ライブラリプログラムシステムにおいて利用するライブラリプログラムの種類、およびその実行順序が決定される。そして、ユーザプログラムシステムからの要求に応じて、実行結果がライブラリプログラムシステムからユーザプログラムシステムへ転送される。
【0149】
このように、入力値情報の転送処理、演算内容の情報の転送処理、および演算結果の転送処理がそれぞれ別々に行われるので、ユーザプログラムを、各処理に関する命令をそれぞれ分離した状態で構成することができる。したがって、ユーザプログラムを細分化することが可能となるので、入力値の変更や演算内容の変更などをより容易に行うことが可能となる。また、ユーザプログラムが細分化されることによって、エラーが発生した場合にも、問題の発生箇所が認識されやすくするという効果もある。
【0150】
また、ライブラリプログラムシステムでは、受信した演算内容が解析されて、利用するライブラリプログラムの種類、およびその実行順序が決定され、これに基づいてライブラリプログラムの実行が行われるようになっている。よって、ユーザプログラムシステムは、ライブラリプログラムシステムに対して単にどのような演算処理を行わせるかについての情報のみを送信するだけでよく、どのライブラリプログラムを利用するかを指示する必要がないことになる。したがって、ユーザプログラムでは、ライブラリプログラムシステムにおける具体的な処理を考慮する必要がないので、ユーザプログラムのユーザは、ライブラリプログラムシステムにおける処理の詳細に関する知識を必要とせずに、より容易にライブラリプログラムを利用することが可能となる。
【0151】
また、ライブラリプログラムシステムにおいて演算依頼情報が解析されて、適切なライブラリプログラムが実行されるようになっているので、ユーザプログラムがどのようなプログラム言語によって記述されていても対応が可能となる。
【0152】
また、ライブラリプログラムが改良されたり、新たなライブラリプログラムが追加されたりしたとしても、ユーザプログラム側では、これを一切認識する必要がなく、ライブラリプログラムシステム側で自動的に適切なライブラリプログラムが利用されることになる。すなわち、ライブラリプログラムシステムが変更されたとしても、ユーザプログラムを変更することなく対応することが可能となる。また、このようなシステムを導入した際にも、今まで使っていたライブラリプログラムをそのまま利用することが可能である。
【0153】
また、ライブラリプログラムシステムにおいて実行される演算に関しては、ユーザプログラムシステムは関与する必要がないので、ユーザプログラムシステムにおけるユーザプログラムのサイズを小さくすることが可能となるとともに、ユーザプログラムシステムにおけるメモリ使用量も小さくすることが可能となる。
【0154】
なお、同一のライブラリプログラムシステムに対して、例えば、3本のユーザプログラム、すなわち、入力データ転送プログラム、処理依頼プログラム、および結果取得プログラムというように別々のプログラムとしてアクセスされる構成であってもよい。
【0155】
また、本発明に係る演算処理システムは、上記の構成において、上記入力値転送手段が、上記入力値情報として、数値データおよびそのデータ形式を転送する構成としてもよい。
【0156】
上記の構成によれば、入力値情報として数値データおよびそのデータ形式がライブラリプログラムシステムに転送されることになるので、演算内容の情報には、入力値のデータ形式に関する情報を含める必要がないことになる。よって、異なったデータ形式を扱うユーザプログラムを組み合わせたりすることが容易に可能となる。
【0157】
また、本発明に係る演算処理システムは、上記の構成において、上記入力値受信手段が、受信した入力値情報を記憶部(例えば、記憶部33)に格納するとともに、上記演算方法決定手段が、ライブラリプログラムの実行の際に、上記記憶部に格納されているどの入力値情報を用いるかを決定する構成としてもよい。
【0158】
上記の構成によれば、入力値情報の転送処理と演算内容の情報の転送処理とが分離していても、両者の関係を適切に組み合わせてライブラリプログラムでの演算を行うことが可能となる。
【0159】
また、本発明に係る演算処理システムは、上記の構成において、上記演算依頼手段が、演算内容の情報として、演算内容を示す文字列を転送する構成としてもよい。当該構成では、演算内容の情報が文字列であり、しかも、上記ライブラリプログラムシステムの演算方法決定手段が、当該文字列を解析して、適切なライブラリプログラムを適切な順序で実行させる。
【0160】
したがって、演算内容の情報を示す文字列を、以下の各プログラム言語、すなわち、ユーザプログラムのうち、入力値転送手段および演算結果受信手段を実現するためのプログラムを記述するプログラム言語と、ライブラリプログラムを記述したプログラム言語とのいずれからも独立した自由な文法で記述できる。この結果、上記入力値転送手段および演算結果受信手段を実現するためのプログラムおよびライブラリプログラムが変更されても、ユーザプログラムのユーザは、上記演算内容の情報を示す文字列を変更することなく、ライブラリプログラムシステムに演算処理を依頼でき、より容易にライブラリプログラムを利用できる。
【0161】
また、本発明に係る演算処理システムは、上記の構成において、上記演算依頼手段が、演算内容の情報として、数学の演算式そのものを表す文字列を転送する構成としてもよい。
【0162】
上記の構成によれば、ユーザプログラムシステム側では、数学の演算式そのものを表す文字列をライブラリプログラムシステムに対して転送すればよいので、演算式をどのように解くべきかなどを考慮する必要がない。よって、ユーザプログラムのユーザは、具体的な解法を考慮することなくプログラミングを行うことが可能となる。
【0163】
また、本発明に係る演算処理システムは、上記の構成において、上記ユーザプログラムシステム、および上記ライブラリプログラムシステムが、同一のコンピュータにおいて動作する構成としてもよい。
【0164】
上記の構成によれば、1つのコンピュータにおいてユーザプログラムシステムとライブラリプログラムシステムとを構築することによって、上記のような演算処理システムを実現することができる。なお、1つのコンピュータが複数の演算処理装置(例えばCPUなど)を備え、メモリを共有している構成であってもよい。
【0165】
また、本発明に係る演算処理システムは、上記の構成において、上記ユーザプログラムシステムが第1のコンピュータにおいて動作するとともに、上記ライブラリプログラムシステムが、上記第1のコンピュータと通信接続された別のコンピュータにおいて動作する構成としてもよい。
【0166】
上記の構成によれば、ユーザプログラムシステムが動作するコンピュータと、ライブラリプログラムシステムが動作するコンピュータとを別にすることができるので、ユーザプログラムの実行とライブラリプログラムの実行とを並列に行うことが可能となる。
【0167】
また、本発明に係る演算処理システムは、上記の構成において、上記ライブラリプログラムシステムが動作するコンピュータが複数存在する構成としてもよい。
【0168】
上記の構成によれば、ライブラリプログラムの実行を複数のコンピュータにおいて行うことが可能となる。よって、より高速に演算処理を行うことが可能となる。
【0169】
また、本発明に係る演算処理システムは、上記の構成において、上記入力値転送手段および上記演算依頼手段が、上記入力値情報および上記演算内容の情報を、ライブラリプログラムシステムが動作する1つのコンピュータに対して転送するとともに、上記入力値情報および上記演算内容の情報を受信したライブラリプログラムシステムにおける上記演算方法決定手段が、演算処理の分担を決定し、他のコンピュータにおける分担分の処理内容を転送する処理を行う構成としてもよい。
【0170】
上記の構成によれば、ライブラリプログラムシステムが動作する1つのコンピュータにおいて、演算処理の分担の方法が決定されるので、ユーザプログラムシステム側では、演算処理の分担の方法を一切考慮する必要がなくなる。すなわち、ユーザプログラムのユーザは、並列処理を意識したプログラミングを行う必要がないことなり、システム構成に応じたプログラミングの必要性をなくすことが可能となる。
【0171】
また、本発明に係る演算処理システムは、上記の構成において、上記入力値転送手段および上記演算依頼手段が、上記入力値情報および上記演算内容の情報を、ライブラリプログラムシステムが動作する1つのコンピュータに対して転送し、上記入力値情報および上記演算内容の情報を受信したライブラリプログラムシステムにおける上記演算方法決定手段が、演算処理の分担を決定し、この分担方法の結果をユーザプログラムシステムに送信し、上記演算依頼手段が、受信した分担方法の結果に基づいて、各コンピュータに対して演算依頼情報を転送するとともに、上記入力値転送手段が、上記演算の分担方法に基づいて各コンピュータに対して入力値情報を転送する構成としてもよい。
【0172】
上記の構成によれば、ライブラリプログラムシステムが動作する1つのコンピュータにおいて、演算処理の分担の方法が決定されるので、ユーザプログラムシステム側では、分担方法の結果に基づいて演算依頼情報および入力値情報を転送すればよいことになる。すなわち、ユーザプログラムのユーザは、並列処理を意識したプログラミングを行う必要がないことになり、システム構成に応じたプログラミングの必要性をなくすことが可能となる。
【0173】
このように、本発明に係る演算処理システムおよび演算処理方法では、入力値情報の転送処理(処理対象データの転送処理)、演算内容の情報の転送処理(演算処理の内容を指示する処理)、および、演算結果の転送処理(処理結果データの転送処理)がそれぞれ別々に行われるので、ユーザプログラムを、各処理に関する命令をそれぞれ分離した状態で構成することができる。したがって、ユーザプログラムを細分化することが可能となるので、入力値の変更(処理対象データの変更)や演算内容の変更などをより容易に行うことが可能となるという効果を奏する。
【0174】
本発明は上述した実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能である。すなわち、請求項に示した範囲で適宜変更した技術的手段を組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【産業上の利用可能性】
【0175】
本発明に係る演算処理システムは、例えば科学技術計算を行う際に、既存のライブラリプログラムを利用した演算を行うなどの用途に適用することが可能である。
図面
【図1】
0
【図2】
1
【図3】
2
【図4】
3
【図5】
4
【図6】
5
【図7】
6
【図8】
7
【図9】
8