(57)【要約】【課題】  分散処理システムのスレーブサーバの負荷をほぼ均一にする。【解決手段】  マスターサーバとスレーブサーバとを含む分散処理システムにおいて、マスターサーバから受入可能なスレーブサーバに対して配信される分散計算オブジェクトを受信し、それに対してそれの計算範囲における計算処理を分割方法に応じた処理によって実行し、その計算処理結果をマスターサーバに送信し、マスターサーバは計算タスクを範囲の長さがほぼ均等な計算範囲の所定の分割数のオブジェクトに分割することによって分散計算オブジェクトを生成し、受入可能なスレーブサーバにそれを配信し、スレーブサーバから受信した計算処理結果を結合して計算タスクに対する処理結果を得る。【選択図】          図８
2006106858.tif 000002
【特許請求の範囲】
【請求項１】
計算タスクの分散処理を統括するマスターサーバと、
当該マスターサーバとネットワークを介して接続され、当該計算タスクが所定の分割方法及び所定の分割数によって所定の計算範囲に分割された分散計算オブジェクトの計算処理を実行する複数のスレーブサーバと、を含む分散処理システムであって、
前記スレーブサーバは、
次の分散計算オブジェクトの受入が可能になると、次の分散計算オブジェクトが受入可能であることを、前記ネットワークを介して前記マスターサーバに通知する分散計算オブジェクト受入可能通知手段と、
前記マスターサーバから当該スレーブサーバに対して配信される分散計算オブジェクトを、前記ネットワークを介して受信する分散計算オブジェクト受信手段と、
受信した前記分散計算オブジェクトに対して、それの計算範囲における計算処理を前記分割方法に応じた処理によって実行する分散計算オブジェクト処理手段と、
計算処理が完了した分散計算オブジェクトの計算処理結果を、前記ネットワークを介して前記マスターサーバに送信する計算処理結果送信手段と、を有し、
前記マスターサーバは、
前記計算タスクを範囲の長さがほぼ均等な計算範囲の前記所定の分割数のオブジェクトに分割することによって分散計算オブジェクトを生成する分散計算オブジェクト生成手段と、
前記分散計算オブジェクト受入可能通知手段から受入可能と通知されたスレーブサーバに対して、生成された前記分散計算オブジェクトを、前記ネットワークを介して配信する分散計算オブジェクト配信手段と、
前記計算処理結果送信手段から送信された計算処理結果を受信する計算処理結果受信手段と、
受信した前記計算処理結果を結合し、前記計算タスクに対する処理結果を得る計算処理結果結合手段と、を有することを特徴とする分散処理システム。
【請求項２】
請求項１に記載の分散処理システムにおいて、
前記マスターサーバから配信される分散計算オブジェクトの計算範囲が事前負荷予測に基づいて定められていないことを特徴とする分散処理システム。
【請求項３】
請求項１又は２に記載の分散処理システムにおいて、前記分割方法は複数の分割方法であり、いずれか１つの分割方法に対して少なくとも１つの他の分割方法がさらに組み合わされて前記計算タスクを分割することを特徴とする分散処理システム。
【請求項４】
請求項１から３のいずれか１項に記載の分散処理システムにおいて、
前記所定の分割数は、前記スレーブサーバの数より十分大きいことを特徴とする分散処理システム。
【請求項５】
請求項１から４のいずれか１項に記載の分散処理システムにおいて、
前記所定の分割数は、前記スレーブサーバと前記マスターサーバとの間での１つの分散計算オブジェクトの送受信について発生する処理時間を前記分割数に乗じたものであるネットワークオーバーヘッドが、前記計算タスクを分割せずに計算処理した場合の純計算処理時間より十分小さいことを特徴とする分散処理システム。
【請求項６】
請求項１から５のいずれか１項に記載の分散処理システムにおいて、
前記マスターサーバは、配信サーバとデータサーバとを含み、
前記分散計算オブジェクトは、どのように計算を行うかを規定する計算指令データからなり、
前記データサーバは、前記計算指令データに基づく計算の対象である計算対象データを記憶する計算対象データ記憶手段、および前記スレーブサーバから示された計算範囲に対応する前記計算対象データを前記スレーブサーバに送信する計算対象データ送信手段を含み、
前記スレーブサーバは、受信した前記分散計算オブジェクトに含まれる前記計算指令データに基づき計算範囲を示して前記データサーバに含まれる前記計算対象データ送信手段から計算対象データを取得する計算対象データ取得手段を含み、
前記分割計算オブジェクト処理手段は、受信した前記分割計算オブジェクトに含まれる計算指令データに基づき取得した前記計算対象データに対して計算処理を実行する、ことを特徴とする分散処理システム。
【請求項７】
請求項６に記載の分散処理システムにおいて、
前記配信サーバと前記スレーブサーバの間と、前記データサーバと前記スレーブサーバの間とは、別のネットワークで接続されていることを特徴とする分散処理システム。
【請求項８】
請求項１から５のいずれか１項に記載の分散処理システムにおいて、
前記スレーブサーバの少なくともいずれかは、それに配信される分散計算オブジェクトのさらなる分散処理を統括する下位マスターサーバであり、
前記下位マスターサーバは、ネットワークを介して、前記分散計算オブジェクトがさらに所定の分割方法及び所定の分割数によって所定の計算範囲に分割された下位分散計算オブジェクトの計算処理を実行する複数の下位スレーブサーバと接続され、
前記下位スレーブサーバは、
次の下位分散計算オブジェクトの受入が可能になると、次の下位分散計算オブジェクトが受入可能であることを、前記ネットワークを介して前記下位マスターサーバに通知する下位分散計算オブジェクト受入可能通知手段と、
前記下位マスターサーバから当該下位スレーブサーバに対して配信される下位分散計算オブジェクトを、前記ネットワークを介して受信する下位分散計算オブジェクト受信手段と、
受信した前記下位分散計算オブジェクトに対して、それの計算範囲における計算処理を、前記分割方法に応じた処理によって実行する下位分散計算オブジェクト処理手段と、
計算処理が完了した下位分散計算オブジェクトの計算処理結果を、前記ネットワークを介して前記下位マスターサーバに送信する下位計算処理結果送信手段と、を有し、
前記下位マスターサーバは、
それに配信された分散計算オブジェクトを範囲の長さがほぼ均等な計算範囲の所定の分割数のオブジェクトに分割することによって下位分散計算オブジェクトを生成する下位分散計算オブジェクト生成手段と、
前記下位分散計算オブジェクト受入可能通知手段から受入可能と通知された下位スレーブサーバに対して、生成された前記下位分散計算オブジェクトを、前記ネットワークを介して配信する下位分散計算オブジェクト配信手段と、
前記下位計算処理結果送信手段から送信された計算処理結果を受信する下位計算処理結果受信手段と、
受信した前記計算処理結果を結合し、前記配信された分散計算オブジェクトに対する処理結果を得る下位計算処理結果結合手段と、を有し、
前記下位マスターサーバが有する前記計算処理結果送信手段は、
前記下位計算処理結果結合手段によって得られた前記下位マスターサーバに配信された分散計算オブジェクトに対する処理結果を、前記ネットワークを介して前記マスターサーバに送信することを特徴とする分散処理システム。
【請求項９】
請求項１から８のいずれか１項に記載の分散処理システムにおいて、
前記計算タスクは、数値制御型工作機械を使用した材料の加工刃による切削加工により加工品を製作するための加工刃のパスの数値制御データを計算により導出するためのものであることを特徴とする分散処理システム。
【請求項１０】
請求項９に記載の分散処理システムにおいて、
前記加工品は、部品の金型であることを特徴とする分散処理システム。
【請求項１１】
請求項１０に記載の分散処理システムにおいて、
前記加工刃のパスは、前記金型の輪郭の内側のボリュームを加工刃で切削するための塗りつぶしパス、前記金型の輪郭に沿ったパスで必要な輪郭を削り残すように加工刃で切削するための等高線仕上げパスを含むことを特徴とする分散処理システム。
【請求項１２】
請求項１１に記載の分散処理システムにおいて、
前記計算タスクは、製作される前記金型の三次元形状モデル、および前記加工刃による切削加工の切削形状を表わす工具モデルを含むことを特徴とする分散処理システム。
【請求項１３】
請求項１２に記載の分散処理システムにおいて、
前記所定の分割方法は、製作される前記金型の三次元形状モデルの高さ方向の分割を含むことを特徴とする分散処理システム。
【請求項１４】
請求項１３に記載の分散処理システムにおいて、
製作される前記金型は、高さ方向に分割された加工単位の層のそれぞれに対して切削加工されることによって製作され、および
前記所定の分割数は、前記高さ方向に分割された層の数以下であることを特徴とする分散処理システム。
【請求項１５】
請求項１４に記載の分散処理システムにおいて、
前記所定の分割数は、前記高さ方向に分割された加工単位の層の数と等しいことを特徴とする分散処理システム。
【請求項１６】
計算タスクの分散処理を統括するマスターサーバと、
当該マスターサーバとネットワークを介して接続され、当該計算タスクが所定の分割方法及び所定の分割数によって所定の計算範囲に分割された分散計算オブジェクトの計算処理を実行する複数のスレーブサーバと、を含む分散処理システムで実施される分散処理方法であって、
前記スレーブサーバが、次の分散計算オブジェクトの受入が可能になると、次の分散計算オブジェクトが受入可能であることを、前記ネットワークを介して前記マスターサーバに通知するステップと、
前記マスターサーバが、前記計算タスクを範囲の長さがほぼ均等な計算範囲の前記所定の分割数のオブジェクトに分割することによって分散計算オブジェクトを生成するステップと、
前記マスターサーバが、前記分散計算オブジェクト受入可能通知手段から受入可能と通知されたスレーブサーバに対して、生成された前記分散計算オブジェクトを、前記ネットワークを介して配信するステップと、
前記スレーブサーバが、前記マスターサーバから当該スレーブサーバに対して配信される分散計算オブジェクトを、前記ネットワークを介して受信するステップと、
前記スレーブサーバが、受信した前記分散計算オブジェクトに対して、それの計算範囲における計算処理を、前記分割方法に応じた処理によって実行するステップと、
前記スレーブサーバが、計算処理が完了した分散計算オブジェクトの計算処理結果を、前記ネットワークを介して前記マスターサーバに送信するステップと、
前記マスターサーバが、前記計算処理結果送信手段から送信された計算処理結果を受信するステップと、
前記マスターサーバが、受信した前記計算処理結果を結合し、前記計算タスクに対する処理結果を得るステップと、を有することを特徴とする分散処理方法。
【請求項１７】
請求項１６に記載の分散処理方法において、
前記マスターサーバから配信される分散計算オブジェクトの計算範囲が事前負荷予測に基づいて定められていないことを特徴とする分散処理方法。
【請求項１８】
請求項１６又は１７に記載の分散処理方法において、
前記分割方法は複数の分割方法であり、いずれか１つの分割方法に対して少なくとも１つの他の分割方法がさらに組み合わされて前記計算タスクを分割することを特徴とする分散処理方法。
【請求項１９】
請求項１６から１８のいずれか１項に記載の分散処理方法において、
前記所定の分割数は、前記スレーブサーバの数より十分大きいことを特徴とする分散処理方法。
【請求項２０】
計算タスクの分散処理を統括するマスターサーバと、
当該マスターサーバとネットワークを介して接続され、当該計算タスクが所定の分割方法及び所定の分割数によって所定の計算範囲に分割された分散計算オブジェクトの計算処理を実行する複数のスレーブサーバと、を含むコンピュータに所定の機能を実現させるプログラムであって、当該プログラムは、
前記スレーブサーバが、次の分散計算オブジェクトの受入が可能になると、次の分散計算オブジェクトが受入可能であることを、前記ネットワークを介して前記マスターサーバに通知する機能と、
前記マスターサーバが、前記計算タスクを範囲の長さがほぼ均等な計算範囲の前記所定の分割数のオブジェクトに分割することによって分散計算オブジェクトを生成する機能と、
前記マスターサーバが、前記分散計算オブジェクト受入可能通知手段から受入可能と通知されたスレーブサーバに対して、生成された前記分散計算オブジェクトを、前記ネットワークを介して配信する機能と、
前記スレーブサーバが、前記マスターサーバから当該スレーブサーバに対して配信される分散計算オブジェクトを、前記ネットワークを介して受信する機能と、
前記スレーブサーバが、受信した前記分散計算オブジェクトに対して、それの計算範囲における計算処理を、前記分割方法に応じた処理によって実行する機能と、
前記スレーブサーバが、計算処理が完了した分散計算オブジェクトの計算処理結果を、前記ネットワークを介して前記マスターサーバに送信する機能と、
前記マスターサーバが、前記計算処理結果送信手段から送信された計算処理結果を受信する機能と、
前記マスターサーバが、受信した前記計算処理結果を結合し、前記計算タスクに対する処理結果を得る機能と、をコンピュータに実現させることを特徴とするプログラム。
【請求項２１】
請求項２０に記載のプログラムにおいて、
前記マスターサーバから配信される分散計算オブジェクトの計算範囲が事前負荷予測に基づいて定められていないことを特徴とするプログラム。
【請求項２２】
請求項２０又は２１に記載のプログラムにおいて、
前記分割方法は複数の分割方法であり、いずれか１つの分割方法に対して少なくとも１つの他の分割方法がさらに組み合わされて前記計算タスクを分割することを特徴とするプログラム。
【請求項２３】
請求項２０から２２のいずれか１項に記載のプログラムにおいて、
前記所定の分割数は、前記スレーブサーバの数より十分大きいことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散処理システムに関し、より詳しくは、三次元ＣＡＭシステムなどの大量のデータを効率的に計算するための分散処理システムに関する。
【背景技術】
【０００２】
近年、携帯電話などの電子機器を始めとして、製造業に求められる製造リードタイムに関しては、市場競争の激化によって短サイクル化が続いている。それに伴い、製品の筐体を製造するための金型を極めて短期に製作する必要性が高まってきている。その一方で、それらの金型は非常に複雑な三次元形状をしていることが多く、金型の製作に時間を要する一因となっている。
【０００３】
データベース化された設計情報および図形などの視覚情報を基にして、コンピュータ内部で設計モデルを作成し、これに基づいてＮＣ（数値制御型）工作機械やロボットなどを制御して生産工程を自動化するシステムがコンピュータ援用製造システム（ＣＡＭ，computer-aided manufacturing）である。ＣＡＭは、通常ＣＡＤシステムと組み合わせて使用され、ＣＡＤで得られた設計情報に製造工程情報を加えて製造業務全体のシステム化を行う。これらの設計から製造までを一貫してコンピュータ処理するためのシステムを、まとめてＣＡＤ／ＣＡＭを呼ぶこともある。
【０００４】
複雑な形状をしている金型は、それの製作の短期化の要請と合わせ、ＣＡＤ／ＣＡＭに適したアプリケーションである。この場合、金型は、ＮＣ工作機械を使用した材料の加工刃による切削加工によって製作される。ここでは、まず金型は、ＣＡＤによって設計され、三次元形状モデルで表わされた形状データとして具体化される。ＮＣ工作機械においては、切削刃を種々の走査方法及びそれに応じたＮＣパスによって、材料に対して走査させる。ここで、そのような切削加工においては、精度や製作の容易さの観点から、材料を高さ方向に対して固定し、切削刃を二次元的に走査することによって切削することが多い。そして、高さをごくわずかずつ変化させ、そのそれぞれにおいて切削刃を二次元的に走査することを多段階的に行っていく。さらには、切削刃の形状や半径、ＮＣパスの物理的意味などが異なる複数の走査方法で、同じ材料に対して何度も切削刃の走査を行うことも通常である。このような方法によって、複雑な三次元形状の金型を、切削刃の走査の組み合わせにより、人手によらず、機械的に削り出すことができる。
【０００５】
切削刃の走査のためのＮＣパスは、金型の三次元形状モデルから計算によって求める必要がある。しかも、複雑な形状の金型を切削刃によって削り出すためには、極めて多くの高さ方向の段階の形状処理のためのＮＣパスを求める必要がある。この計算は、ＮＣパスのデータは極めて高精度であることと相まって、膨大な計算量を必要とする。従来、このようなＮＣパスのデータの計算に多くの時間を費やしており、これが金型製作の短期化に対して障害となっていた。実際、三次元ＣＡＭに求められる科学技術計算は、サブミクロン単位の極めて高い精度が要求されるようになっており、それぞれの形状処理の計算量も大きく増加してきている。そして、ＣＡＭシステムのＮＣパスデータ生成に関しても、演算精度の高精度化と計算時間短縮の両立が求められている。従って、ＮＣパスデータを、コンピュータによる計算によって、より短時間に求めることができるようになれば、金型の製作期間をより短縮することができる。
【０００６】
コンピュータに大量のデータの計算をさせる場合、コンピュータの計算能力などの計算機資源が問題となってくる。１台のコンピュータの計算能力は高くなっているが、それでも、上述のようなアプリケーションにおいて十分な計算能力が得られてはいない。近年、そのような大量のデータの計算に特に適したコンピュータアーキテクチャーとして、計算タスクを分散処理する分散処理システムが脚光を浴びている。一般的な分散処理システムは、計算タスクの分散処理を統括するマスターサーバと、当該マスターサーバとネットワークを介して接続され、分散された計算タスクの計算処理を実行する複数のスレーブサーバとが接続された構成をしている。このような構成とすることによって、膨大な計算量を必要とする計算タスクを個々のスレーブサーバに分割計算タスクとして分散させて処理させ、それぞれからの計算処理結果を再びマスターサーバで結合することによって、全体として、膨大な量の１つの計算タスクを短時間に処理することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
分散処理システムによって計算タスクを分散処理するためには、それぞれのスレーブサーバに対して、できる限り均等な計算量の分割計算タスクを割り当てることが重要である。このため、従来、分割した計算タスクのそれぞれの計算量を事前に予測し、できる限り均等な計算量となるように、計算タスクを分割していた。しかし、実際にはＣＡＭシステムが複雑な三次元形状を対象としていることによって、そのような事前の計算量の予測の精度は低下してきており、実際には、スレーブサーバに分割して処理させている計算量が、それぞれのスレーブサーバ間で大きくばらついてしまうという問題が生じてきている。このようなばらつきがあると、あるスレーブサーバは既に処理が完了しているのに、別のあるスレーブサーバはまだ計算処理が終了していないことになり、分散処理システム全体としての計算時間は、最も処理時間が長くかかったスレーブサーバによって決定されてしまうことになる。また、このような、計算時間がスレーブサーバごとに一定にならないという負荷不均一の問題は、スレーブサーバの数を増やすことによって計算タスクの分割数を増やしていっても、分割数がある程度以上に増えてくると計算時間の短縮効果が得られにくくなるという問題も引き起こす。これによって、スレーブサーバの個々の計算能力と向上させたり、スレーブサーバの数を増やしたりしても、それによる全体の計算時間の短縮は、あるレベルで頭打ちとなっていた。
【０００８】
図１は、従来の分散処理システム１０の構成、および計算タスクＴ１０の分割方法の概念を表わしたシステム構成図である。分散処理システム１０は、スレーブサーバを統括するマスターサーバ１１と、それとネットワークを介して接続されたスレーブサーバ（以下、図ではスレーブと記載する。）１２Ａ〜１２Ｄとから構成される。全体の計算タスクを、計算タスクＴ１０として表わしている。図においては、計算タスクの計算量は、それに対応する図形の面積として表わしている。計算タスクＴ１０は、三次元形状モデルで表わされた金型の形状を切削加工により製作するためのＮＣパスの集合体を求めるために必要な計算である。計算タスクＴ１０を分割する際には、分割後の分割計算タスクの計算量が均等になるように、それぞれの計算量を予測して分割する。ここでは、図示した計算タスクＴ１０を縦方向に均等に分割すると計算量が均等になると予測されたとする。しかし実際には、予測精度の不十分さにより、計算タスクＴ１０Ａとして表わしたように、縦方向に対して計算量には偏りがあるのが通常である。マスターサーバ１１は、所定の予測方式によって計算タスクＴ１０を縦方向に均等に分割すると、均等な計算量の分割計算タスクに分割できるとの前提のもとに、分割計算タスクＤ１１〜Ｄ１４に分割した。しかし、分割計算タスクＤ１１〜Ｄ１４は、図示したように、実際には計算量が大きく異なっているが、このように事前予測と異なる計算量であることは、実際に計算処理が完了するまでは分からない。ここでの分割計算タスクの計算量は、最大のものが最小のものの４倍としている。次にマスターサーバ１１は、分割計算タスクＤ１１をスレーブサーバ１２Ａに、分割計算タスクＤ１２をスレーブサーバ１２Ｂに、分割計算タスクＤ１３をスレーブサーバ１２Ｃに、分割計算タスクＤ１４をスレーブサーバ１２Ｄに送信する。スレーブサーバ１２Ａ〜１２Ｄは、それぞれ分割計算タスクＤ１１〜Ｄ１４の計算処理を実行し、その計算処理結果をマスターサーバ１１に送信する。マスターサーバ１１は、受信した計算処理結果を結合して、計算タスクＴ１０に対する計算処理結果を求める。図１から分かるように、分散処理システム１０全体としての計算処理は、スレーブサーバ１２Ｃが分割計算タスクＤ１３の計算処理を完了させるまでは完了しない。従って、一番遅いスレーブサーバ１２Ｃによって、分散処理システム１０全体の処理速度が規定されてしまうことになり、分割計算タスクへの分割が均等でなければ、計算機資源が有効に利用されない状況が発生する。
【０００９】
いかにしてスレーブサーバに均等な計算量の分割計算タスクを割り当てるかという課題に対して、これまで事前の計算量の予測の精度をいかにして高めるかということに努力がなされてきた。上述の金型の切削加工による製作については、予測精度を向上すべく、種々の予測方式が開発されてきた。出願人が行っていた最新の予測方式では、全工程の層の数を算出してそれを計算量とみなし、それが均等となるようにワーク範囲を分割していた。これは従来の予測方式より優れたものであるが、このような最新の予測方式をもってしても、計算量の予測精度は不十分であった。
【００１０】
図２は、このような従来の分散処理システム１０の分散の効果をグラフにして表わしたものである。その上側の(i)スレーブサーバそれぞれの計算時間のグラフでは、それぞれのスレーブサーバによって計算時間が大きく異なることを表わしている。その下側の(ii)分散数と計算時間のグラフでは、分散数すなわちスレーブサーバ数を増やしていっても、計算時間の短縮効果はある程度で頭打ちになってしまうことを表わしている。
【００１１】
実際に、ある計算タスクについて、２０台のスレーブサーバを有する分散処理システムによって計算させたところ、計算時間が最長のスレーブサーバでは４時間４９分、計算時間が最短のスレーブサーバでは０時間４３分の計算時間がかかったという結果が得られた。これは実に７倍の開きであり、この場合、分散処理システム全体として、非常の多くの計算機資源が無駄になっていたことになる。本発明は、上記の問題点に鑑みてなされたものであり、スレーブサーバに分散する分割計算タスクの計算量を均等にすることによって、分散処理システム全体の計算能力を飛躍的に向上させるものである。
【課題を解決するための手段】
【００１２】
上記の課題は以下の特徴を有する本発明によって解決される。すなわち、請求項１に記載の発明は、計算タスクの分散処理を統括するマスターサーバと、当該マスターサーバとネットワークを介して接続され、当該計算タスクが所定の分割方法及び所定の分割数によって所定の計算範囲に分割された分散計算オブジェクトの計算処理を実行する複数のスレーブサーバと、を含む分散処理システムであって、
前記スレーブサーバは、次の分散計算オブジェクトの受入が可能になると、次の分散計算オブジェクトが受入可能であることを、前記ネットワークを介して前記マスターサーバに通知する分散計算オブジェクト受入可能通知手段と、前記マスターサーバから当該スレーブサーバに対して配信される分散計算オブジェクトを、前記ネットワークを介して受信する分散計算オブジェクト受信手段と、受信した前記分散計算オブジェクトに対して、それの計算範囲における計算処理を前記分割方法に応じた処理によって実行する分散計算オブジェクト処理手段と、計算処理が完了した分散計算オブジェクトの計算処理結果を、前記ネットワークを介して前記マスターサーバに送信する計算処理結果送信手段と、を有し、
前記マスターサーバは、前記計算タスクを範囲の長さがほぼ均等な計算範囲の前記所定の分割数のオブジェクトに分割することによって分散計算オブジェクトを生成する分散計算オブジェクト生成手段と、前記分散計算オブジェクト受入可能通知手段から受入可能と通知されたスレーブサーバに対して、生成された前記分散計算オブジェクトを、前記ネットワークを介して配信する分散計算オブジェクト配信手段と、前記計算処理結果送信手段から送信された計算処理結果を受信する計算処理結果受信手段と、受信した前記計算処理結果を結合し、前記計算タスクに対する処理結果を得る計算処理結果結合手段と、を有することを特徴とする。
【００１３】
請求項２に記載の発明は、さらに、前記マスターサーバから配信される分散計算オブジェクトの計算範囲が事前負荷予測に基づいて定められていないことを特徴とする。
【００１４】
請求項３に記載の発明は、さらに、前記分割方法は複数の分割方法であり、いずれか１つの分割方法に対して少なくとも１つの他の分割方法がさらに組み合わされて前記計算タスクを分割することを特徴とする。
【００１５】
請求項４に記載の発明は、前記所定の分割数は、前記スレーブサーバの数より十分大きいことを特徴とする。
【００１６】
請求項５に記載の発明は、さらに、前記所定の分割数は、前記スレーブサーバと前記マスターサーバとの間での１つの分散計算オブジェクトの送受信について発生する処理時間を前記分割数に乗じたものであるネットワークオーバーヘッドが、前記計算タスクを分割せずに計算処理した場合の純計算処理時間より十分小さいことを特徴とする。
【００１７】
請求項６に記載の発明は、さらに、前記マスターサーバは、配信サーバとデータサーバとを含み、前記分散計算オブジェクトは、どのように計算を行うかを規定する計算指令データからなり、前記データサーバは、前記計算指令データに基づく計算の対象である計算対象データを記憶する計算対象データ記憶手段、および前記スレーブサーバから示された計算範囲に対応する前記計算対象データを前記スレーブサーバに送信する計算対象データ送信手段を含み、
前記スレーブサーバは、さらに、受信した前記分散計算オブジェクトに含まれる前記計算指令データに基づき計算範囲を示して前記データサーバに含まれる前記計算対象データ送信手段から計算対象データを取得する計算対象データ取得手段を含み、
前記分割計算オブジェクト処理手段は、受信した前記分割計算オブジェクトに含まれる計算指令データに基づき取得した前記計算対象データに対して計算処理を実行する、ことを特徴とする。
【００１８】
請求項７に記載の発明は、さらに、前記配信サーバと前記スレーブサーバの間と、前記データサーバと前記スレーブサーバの間とは、別のネットワークで接続されていることを特徴とする。
【００１９】
請求項８に記載の発明は、さらに、前記スレーブサーバの少なくともいずれかは、それに配信される分散計算オブジェクトのさらなる分散処理を統括する下位マスターサーバであり、
前記下位マスターサーバは、ネットワークを介して、前記分散計算オブジェクトがさらに所定の分割方法及び所定の分割数によって所定の計算範囲に分割された下位分散計算オブジェクトの計算処理を実行する複数の下位スレーブサーバと接続され、
前記下位スレーブサーバは、次の下位分散計算オブジェクトの受入が可能になると、次の下位分散計算オブジェクトが受入可能であることを、前記ネットワークを介して前記下位マスターサーバに通知する下位分散計算オブジェクト受入可能通知手段と、前記下位マスターサーバから当該下位スレーブサーバに対して配信される下位分散計算オブジェクトを、前記ネットワークを介して受信する下位分散計算オブジェクト受信手段と、受信した前記下位分散計算オブジェクトに対して、それの計算範囲における計算処理を、前記分割方法に応じた処理によって実行する下位分散計算オブジェクト処理手段と、計算処理が完了した下位分散計算オブジェクトの計算処理結果を、前記ネットワークを介して前記下位マスターサーバに送信する下位計算処理結果送信手段と、を有し、
前記下位マスターサーバは、それに配信された分散計算オブジェクトを範囲の長さがほぼ均等な計算範囲の所定の分割数のオブジェクトに分割することによって下位分散計算オブジェクトを生成する下位分散計算オブジェクト生成手段と、前記下位分散計算オブジェクト受入可能通知手段から受入可能と通知された下位スレーブサーバに対して、生成された前記下位分散計算オブジェクトを、前記ネットワークを介して配信する下位分散計算オブジェクト配信手段と、前記下位計算処理結果送信手段から送信された計算処理結果を受信する下位計算処理結果受信手段と、受信した前記計算処理結果を結合し、前記配信された分散計算オブジェクトに対する処理結果を得る下位計算処理結果結合手段と、を有し、
前記下位マスターサーバが有する前記計算処理結果送信手段は、前記下位計算処理結果結合手段によって得られた前記下位マスターサーバに配信された分散計算オブジェクトに対する処理結果を、前記ネットワークを介して前記マスターサーバに送信することを特徴とする。
【００２０】
請求項９に記載の発明は、さらに、前記計算タスクは、数値制御型工作機械を使用した材料の加工刃による切削加工により加工品を製作するための加工刃のパスの数値制御データを計算により導出するためのものであることを特徴とする。
【００２１】
請求項１０に記載の発明は、さらに、前記加工品は、部品の金型であることを特徴とする。
【００２２】
請求項１１に記載の発明は、さらに、前記加工刃のパスは、前記金型の輪郭の内側のボリュームを加工刃で切削するための塗りつぶしパス、前記金型の輪郭に沿ったパスで必要な輪郭を削り残すように加工刃で切削するための等高線仕上げパスを含むことを特徴とする。
【００２３】
請求項１２に記載の発明は、さらに、前記計算タスクは、製作される前記金型の三次元形状モデル、および前記加工刃による切削加工の切削形状を表わす工具モデルを含むことを特徴とする。
【００２４】
請求項１３に記載の発明は、さらに、前記所定の分割方法は、製作される前記金型の三次元形状モデルの高さ方向の分割を含むことを特徴とする。
【００２５】
請求項１４に記載の発明は、さらに、製作される前記金型は、高さ方向に分割された加工単位の層のそれぞれに対して切削加工されることによって製作され、および前記所定の分割数は、前記高さ方向に分割された層の数以下であることを特徴とする。
【００２６】
請求項１５に記載の発明は、さらに、前記所定の分割数は、前記高さ方向に分割された加工単位の層の数と等しいことを特徴とする。
【００２７】
請求項１６から１９に記載の方法の発明および請求項２０から２３に記載のプログラムの発明についても、それらはそれぞれ上記の請求項のいずれかに対応しており、それと同じ特徴を有している。
【００２８】
上記の発明は、ソフトウェアを用いることにより、その全部または一部をソフトウェアによる情報処理がハードウェア資源を用いて具体的に実現されるものとして実施することができる。サーバなどの物理的構成を表わす用語は、装置の具体的形態や具体的呼称を限定するものではなく、その一般的な機能を備えた物理的構成を表わすためのものである。上記システムの発明は、それぞれの構成要素の有する機能が逐次的に実行される方法の発明として把握することもできる。その場合において、各構成要素は記載された順序に実行されるものに限定されるものではなく、全体としての機能が矛盾なく実行され得る限りにおいて、自由な順序でそれを実行することができる。１つの手段が有する機能が２つ以上の物理的構成によって実現されてもよく、２つ以上の手段が有する機能が１つの物理的構成によって実現されてもよい。１つのステップが有する機能が２つ以上のステップによって実現されてもよく、２つ以上のステップが有する機能が１つのステップによって実現されてもよい。これらの発明は、所定のハードウェアにおいて本発明の機能を実現するためのプログラムとしても成立し、それを記録した記録媒体としても成立する。また本発明は、搬送波上に具現化されたコンピュータ・データ信号であって、そのプログラムのコードを備えたものとしても成立しうる。
【発明の効果】
【００２９】
本発明によると、マスターサーバとスレーブサーバとを含む分散処理システムにおいて、マスターサーバから受入可能なスレーブサーバに対して配信される分散計算オブジェクトを受信し、それに対してそれの計算範囲における計算処理を分割方法に応じた処理によって実行し、その計算処理結果をマスターサーバに送信し、マスターサーバは計算タスクを範囲の長さがほぼ均等な計算範囲の所定の分割数のオブジェクトに分割することによって分散計算オブジェクトを生成し、受入可能なスレーブサーバにそれを配信し、スレーブサーバから受信した計算処理結果を結合して計算タスクに対する処理結果を得るため、計算タスクを細分化して、受入可能なスレーブサーバにそれの処理を行わせることができ、分散処理システムのスレーブサーバの負荷をほぼ均一にすることができるという効果が得られる。
【００３０】
さらに本発明によると、マスターサーバから配信される分散計算オブジェクトの計算範囲が事前負荷予測に基づいて定められていないため、事前負荷予測に要する計算時間を削減でき、不完全な事前負荷予測の影響を受けないという効果が得られる。
またさらに本発明によると、分割方法は複数の分割方法であり、いずれか１つの分割方法に対して少なくとも１つの他の分割方法がさらに組み合わされて前記計算タスクを分割するため、分割数を大きくすることができるという効果が得られる。
またさらに本発明によると、所定の分割数は、スレーブサーバの数より十分大きいため、スレーブサーバの負荷をより均一にすることができるという効果が得られる。
【発明を実施するための最良の形態】
【００３１】
これから図面を参照して本発明の実施形態について、構成、動作の順に説明する。図３は、本発明の一実施形態に係る分散処理システム２０の構成を表わすシステム構成図である。分散処理システム２０は、大きく、マスターサーバ２１と、それとネットワークを介して接続されたスレーブサーバ２２で構成される。マスターサーバ２１は、用途に応じて、さらに配信サーバ２１ａとデータサーバ２１ｂとから構成されるが、これらを１つの物理的構成に統合したものでも、あるいは３つ以上の物理的構成に分散させたものであってもよい。マスターサーバ２１は、それに接続されたスレーブサーバ２２で分割計算タスクの計算処理を実行させるための分散処理を統括する構成要素であり、分散処理機能やネットワーク制御機能などを実現するプログラムがハードディスクなどの記憶装置に記憶され、それを実行するＣＰＵ、メモリなどの処理手段を有し、ネットワーク等のインターフェースなどを有するコンピュータの形態である。
【００３２】
配信サーバ２１ａは、主として分散計算オブジェクトのスレーブサーバへの配信処理を実行し、データサーバ２１ｂは、主として計算モデルや計算データの入出力、中間データの保持などを実行する。このようにマスターサーバ２１を配信サーバ２１ａとデータサーバ２１ｂとに分けることによって、ハードウェアのスペックをそれぞれの機能に適したものとすることができるため、それぞれに専用機を用意することで、高性能を実現しながら比較的安価にシステムを構築することが可能となるという効果が得られる。配信サーバ２１ａは、高速にデータや命令のデリバリーを行なうことが主な機能であるため、各スレーブサーバのボトルネックとならないように高いＣＰＵの処理能力が必要とされる一方、メモリ容量、記憶装置（ＨＤＤ）の容量はそれほど高くする必要はない。現時点での十分なスペックの目安としては、ＣＰＵ：Ｐｅｎｔｉｕｍ４（登録商標）、メモリ：２５６ＭＢ、ＨＤＤ：５ＧＢくらいである。データサーバ２１ｂは、各スレーブサーバからのデータのコピーが主な機能であるため、ＣＰＵの処理能力はそれほど高くする必要はないが、データを長期間保持するためには、記憶装置（ＨＤＤ）の容量は大きい必要があり、メモリ容量も配信サーバ２１ａと比較すると大きい必要がある。現時点での十分なスペックの目安としては、ＣＰＵ：Ｐｅｎｔｉｕｍ３（登録商標）、メモリ：１ＧＢ、ＨＤＤ：５００ＧＢくらいである。
【００３３】
スレーブサーバ２２は、マスターサーバ２１からの指令に基づき、それに割り当てられた分割計算タスクの計算処理を実行する構成要素であり、計算処理機能やネットワーク制御機能などを実現するプログラムがハードディスクなどの記憶装置に搭載され、それを実行するＣＰＵ、メモリなどの処理手段を有し、ネットワーク等のインターフェースなどを有するコンピュータが複数台数クラスタ接続された形態である。ここでは、スレーブサーバ２２は、スレーブサーバ２２Ａ〜２２Ｄの４台のスレーブサーバから構成される。いずれか１つのスレーブサーバを表わす場合には、スレーブサーバ２２Ｘと表わすことにする。実際にはスレーブサーバ２２は、多数の、例えば１００台以上位の大規模のスレーブサーバがクラスタ接続される。それぞれのスレーブサーバは、好適にはほぼ同等の計算能力を有している。マスターサーバ２１とスレーブサーバ２２との間のネットワークは、高速のＬＡＮネットワークが好適であるが、インターネットなどのＷＡＮであっても構わない。なお、後で詳述するが、マスターサーバ２１の内の配信サーバ２１ａとスレーブサーバ２２との間のネットワークは、より高速であることが望ましいが、マスターサーバ２１の中のデータサーバ２１ｂとスレーブサーバ２２との間のネットワークは、マスターサーバ２１との間のネットワークに比較すると、それほど高速でなければならない必要性は高くない。本実施例では、配信サーバ２１ａとスレーブサーバ２２との間のネットワークは、１０００Ｍｂｐｓのデータ伝送速度のイーサネット（登録商標。以下、同様。）であり、データサーバ２１ｂとスレーブサーバ２２との間のネットワークは、１００Ｍｂｐｓのデータ転送速度のイーサネットである。
【００３４】
スレーブサーバ２２において実行される分散処理の計算と分散処理の管理とは、好適には、別のプロセスとなっている。このようにすることによって、計算処理を実行しながら、マスターサーバ２１との間の必要な情報の送受信をリアルタイムに行うことができる。分散処理の管理プロセスは、マスターサーバ２１との通信をモニターしており、マスターサーバ２１からの分散計算オブジェクトの配信、計算中止の指令などをリアルタイムに受信するようにしている。なお、分散処理の計算プロセスは、その計算処理が終了した直後に、分散処理の管理プロセスにその旨を通知してもいいが、好適には、計算処理が終了した直後に、まず、マスターサーバ２１にその旨を送信する。このようにすることによって、マスターサーバ２１がスレーブサーバ２２の計算処理の終了を即座に認識でき、レスポンスを向上させることが可能となる。この場合、マスターサーバ２１は、分散処理の計算プロセスから計算処理の終了の通知を受信した後、そのスレーブサーバ２２の分散処理の管理プロセスに通知をして、分散処理の計算プロセスを開放させて計算資源に戻すことになる。
【００３５】
分散処理システム２０は、オペレータによる操作を容易にするために、さらにＷｅｂサーバ２３、クライアント２４にインターネットなどのネットワークを介して接続されていてもよい。オペレータは、クライアント２４を使用することにより、直接あるいはＷｅｂサーバ２３を介して、マスターサーバ２１の操作を行うことができる。
【００３６】
Ｗｅｂサーバ２３は、ＷＷＷに分散処理システム２０の操作のためのＷｅｂページを提供すための構成要素であり、Ｗｅｂサーバ機能やネットワーク制御機能などを実現するプログラムがハードディスクなどの記憶装置に記憶され、それを実行するＣＰＵ、メモリなどの処理手段を有し、インターネットなどのネットワーク等のインターフェースなどを有するコンピュータの形態である。
【００３７】
クライアント２４は、端末用クライアントコンピュータであり、同様のものが複数設置されていてもよい。それはネットワークアクセス機能などを実現するプログラムがハードディスクなどの記憶装置に記憶され、それを実行するＣＰＵ、メモリなどの処理手段を有し、インターネットなどのネットワーク等のインターフェースなどを有するコンピュータの形態である。クライアント２４を通じて、オペレータはＷｅｂサーバ２３や配信サーバ２１ａにアクセスすることができる。
【００３８】
次に本発明の実施形態の動作について説明する。まず、計算タスクをどのように分割するのかについて説明する。図４は、計算タスクＴ２０の分割方法の概念を表わした概念図である。全体の計算タスクは、計算タスクＴ２０として表わされている。同図においては、計算タスクの計算量は、それに対応する図形の面積として表わしている。計算タスクＴ２０は、所定の三次元形状モデルで表わされた金型の形状を切削加工により製作するためのＮＣパスの集合体を求めるために必要な計算である。計算タスクは、具体的には、所定の三次元形状モデルを、所定の工具モデルを使用して、所定の加工条件のもとに切削加工により加工品として製作するための工具（加工刃）のパスの数値制御データを算出するための計算である。
【００３９】
ここで、計算タスクＴ２０を分割する際には、分割後の分割計算タスクの計算量が均等になるような事前負荷予測は行わない。その代わり、マスターサーバ２１は、計算タスク２０をスレーブサーバ数より十分大きい分割数で分割する。計算タスクＴ２０は、実際には計算タスクＴ２０Ａとして示すように、計算量には偏りがある。ここで、計算タスクＴ２０Ａを、縦方向ではない他の観点から分割し、分割計算タスクＤ２１〜Ｄ３２に分割したとする。分割計算タスクＤ２１〜Ｄ３２は、同図に示すように、計算量が異なっている。分割計算タスクの計算量は、前述の計算タスクＴ１０の場合と同様に、最大のものが最小のものの４倍であるようにしている。ここでは、計算量の事前予測は行わないため、このように、それぞれの分割計算タスクの計算量が異なることは当然の前提である。ただし、前述の計算タスクＴ１０と大きく異なる点は、計算量の事前予測を行わないかわりに、多数の分割計算タスクに細分化するという点である。このようにすることによって、分割計算タスクの計算処理を実行するスレーブサーバの負荷をほぼ均等にすることができる。最適な分割数は、分割方法にもよるが、好適には、スレーブサーバ数の１０倍以上、より好適には１００倍以上である。ここで、分割数を増加させると、スレーブサーバ間の計算量のばらつきがどのように小さくなるのかについて考察する。前提として、スレーブサーバ数を１００台とし、分割後の分割計算タスクは、計算量が最小のもの（１単位）から最大のもの（１０単位）まで１単位刻みの分割計算タスクであって、ばらつきは１０倍であり、それがランダムに分布しているとする。
【００４０】
まず、スレーブサーバ数の１０倍である１，０００の分割計算タスクに分割したと考える。すると、計算タスクの全体の計算量は（１＋２＋３＋４＋５＋６＋７＋８＋９＋１０）×１００＝５，５００単位となり、１台のスレーブサーバに割り当てる分割計算タスクの計算量の最適値は、５，５００／１００＝５５単位となる。計算量が最小のスレーブサーバと、計算量が最大のスレーブサーバとの計算量の差は、最後に割り当てられる分割計算タスクの計算量の差となるので、最大でも、１０−１＝９単位となり、これは約９／５５＝１６．４％のばらつきに相当する。
【００４１】
次に、スレーブサーバ数の１００倍である１０，０００の分割計算タスクに分割したと考える。すると、計算タスクの全体の計算量は（１＋２＋３＋４＋５＋６＋７＋８＋９＋１０）×１，０００＝５５，０００単位となり、１台のスレーブサーバに割り当てる分割計算タスクの計算量の最適値は、５５，０００／１００＝５５０単位となる。計算量が最小のスレーブサーバと、計算量が最大のスレーブサーバとの計算量の差は、最後に割り当てられる分割計算タスクの計算量の差となるので、最大でも、１０−１＝９単位となり、これは約９／５５０＝１．６４％のばらつきに相当する。
【００４２】
なお、分割計算タスクをマスターサーバ２１からスレーブサーバ２２Ａ〜２２Ｄへ送信し、それの計算処理結果をスレーブサーバ２２Ａ〜２２Ｄからマスターサーバ２１へ送信するためには、１回ごとにネットワークのオーバヘッドが発生する。しかし、分割数を適切な範囲にすることによって、オーバヘッドの影響をほとんど受けないようにしつつ、細分化による負荷の均等化を行うことができる。実際には、数千から数十万程度の分割数によるネットワークオーバーヘッドは、ほとんど問題とならないレベルである。
【００４３】
図５は、本発明の一実施形態に係る分散処理システム２０の分散処理の概念を表わす概念図である。計算タスクは、マスターサーバ２１において、多数に分割されて細分化される（ステップＳ５０１）。分割された計算タスクは分割計算タスクとなり、スレーブサーバ２２の受入可能ないずれかのスレーブサーバへと送信される（ステップＳ５０３）。ここではまず、スレーブサーバ２２Ａに分割計算タスクが送信され、スレーブサーバ２２Ａが分割計算タスクを受信する（ステップＳ５０５）。スレーブサーバ２２Ａは分割計算タスクを受入可能でなくなったため、次のスレーブサーバ２２Ｂに分割計算タスクが送信され、スレーブサーバ２２Ｂが分割計算タスクを受信する（ステップＳ５０７）。スレーブサーバ２２Ａが分割計算タスクの計算処理を実行し（ステップＳ５０９）、スレーブサーバ２２Ｂが分割計算タスクの計算処理を実行する（ステップＳ５１１）。スレーブサーバ２２Ａが分割計算タスクの計算処理を実行し（ステップＳ５０９）、スレーブサーバ２２Ｂが分割計算タスクの計算処理を実行する（ステップＳ５１１）。スレーブサーバ２２Ａが計算処理結果をマスターサーバ２１に送信し（ステップＳ５１３）、スレーブサーバ２２Ｂが計算処理結果をマスターサーバ２１に送信する（ステップＳ５１５）。マスターサーバ２１は、スレーブサーバ２２から計算処理結果を受信する（ステップＳ５１７）。そしてマスターサーバ２１は、計算処理結果のデータを結合し、全体の計算処理結果を構成する（ステップＳ５１９）。
【００４４】
次に、図４に示した分割計算タスクがどのように処理されるのかを図６Ａから図６Ｒを参照して説明する。図６Ａから図６Ｒは、本発明の一実施形態に係る分散処理システム２０の分散処理の順次的な動作を表わす模式図である。同図では、スレーブサーバはスレーブと記載されている。ここでは、図４に示したように、種々の計算量の計算タスクに分割された分割計算タスクＤ２１〜Ｄ３２が、どのように処理されるのかについて説明する。それぞれの分割計算タスクは、いずれかのスレーブサーバに送信される際には、計算すべき計算範囲を表わす分割ＩＤが付されて独立したデータ形式の分散計算オブジェクトの形態とされて送信される。図６Ａから図６Ｒにおいて、「分割計算タスク」として示された破線の四角形内には、マスターサーバ２１のところで保持され、まだスレーブサーバには送信されていない分割計算タスクが描かれる。
【００４５】
スレーブサーバ２２Ａ〜２２Ｄのそれぞれのシンボルの上側の一点鎖線の四角形内には、対応するスレーブサーバで計算処理されている計算タスクが描かれる。分割計算タスクの計算処理が進行するにつれて、分割計算タスクのシンボルは、その一点鎖線の四角形の中で下方に移動する。計算量の小さい分割計算タスクは、計算処理が実行されているときにおいて速く下方に移動し、計算量の大きい分割計算タスクは、計算処理が実行されているときにおいてゆっくりと下方に移動する。例えば、分割計算タスクＤ２１は１ステップで一点鎖線の四角形を通過し、分割計算タスクＤ２３は２ステップで一点鎖線の四角形を通過し、分割計算タスクＤ２７は４ステップかけて一点鎖線の四角形を通過する。
【００４６】
その一点鎖線の四角形の上側には、配信サーバから配信された直後の分割計算タスクが描かれる。なお、その一点鎖線の四角形の上側に分割計算タスクが描かれていないときには「○」あるいは「×」をそこに描いているが、「○」は計算処理中の分割計算タスクがなくて新しい分割計算タスクが受入可能であることを表わし、「×」は計算処理中の分割計算タスクがあり新しい分割計算タスクが受入可能ではないことを表わす。また、その一点鎖線の四角形の下側には、分割計算タスクの計算処理が終了した直後には、「ｘｘ」を２桁の数字として、分割計算タスクＤｘｘに対応した計算処理結果Ｒｘｘが描かれる。「計算処理結果」として示された破線の四角形内には、スレーブサーバからマスターサーバ２１に送信された計算処理結果が描かれる。スレーブサーバの下側の「累積計算量」として示された破線の四角形には、その上側の対応するそれぞれのスレーブサーバが計算処理を完了した分割計算タスクが描かれ、それぞれのスレーブサーバがその時点でどれだけの累積計算量の分割計算タスクの計算処理を行ったかが分かるようにされている。これから、分割計算タスクの計算処理について説明していく。
【００４７】
図６Ａは、分散処理が開始される直前の状態である（ステップＳ６０１）。スレーブサーバ２２Ａ〜２２Ｄは、いずれも分割計算タスクが受入可能である。次に図６Ｂを参照すると、スレーブサーバ２２Ａに分割計算タスクＤ２１が配信されてきた（ステップＳ６０３）。その次に図６Ｃを参照すると、スレーブサーバ２２Ａで分割計算タスクＤ２１の計算処理（１ステップ／１ステップ）が実行され、スレーブサーバ２２Ｂに分割計算タスクＤ２２が配信されてきた（ステップＳ６０５）。その次に図６Ｄを参照すると、スレーブサーバ２２Ａで分割計算タスクＤ２１の計算処理が完了して計算処理結果Ｒ２１が出力され、スレーブサーバ２２Ｂで分割計算タスクＤ２２の計算処理（１ステップ／１ステップ）が実行され、スレーブサーバ２２Ｃに分割計算タスクＤ２３が配信されてきた（ステップＳ６０７）。その次に図６Ｅを参照すると、マスターサーバ２１はスレーブサーバ２２Ａから計算処理結果Ｒ２１を受信し、スレーブサーバ２２Ｂで分割計算タスクＤ２２の計算処理が完了して計算処理結果Ｒ２２が出力され、スレーブサーバ２２Ｃで分割計算タスクＤ２３の計算処理（１ステップ／２ステップ）が実行され、スレーブサーバ２２Ｄに分割計算タスクＤ２４が配信されてきた（ステップＳ６０９）。
【００４８】
その次に図６Ｆを参照すると、マスターサーバ２１はスレーブサーバ２２Ｂから計算処理結果Ｒ２２を受信し、スレーブサーバ２２Ａに分割計算タスクＤ２５が配信され、スレーブサーバ２２Ｃで分割計算タスクＤ２３の計算処理（２ステップ／２ステップ）が実行され、スレーブサーバ２２Ｄで分割計算タスクＤ２４の計算処理（１ステップ／２ステップ）が実行された（ステップＳ６１１）。その次に図６Ｇを参照すると、スレーブサーバ２２Ａで分割計算タスクＤ２５の計算処理（１ステップ／２ステップ）が実行され、スレーブサーバ２２Ｂに分割計算タスクＤ２６が配信され、スレーブサーバ２２Ｃで分割計算タスクＤ２３の計算処理が完了して計算処理結果Ｒ２３が出力され、スレーブサーバ２２Ｄで分割計算タスクＤ２４の計算処理（２ステップ／２ステップ）が実行された（ステップＳ６１３）。その次に図６Ｈを参照すると、マスターサーバ２１はスレーブサーバ２２Ｃから計算処理結果Ｒ２３を受信し、スレーブサーバ２２Ａで分割計算タスクＤ２５の計算処理（２ステップ／２ステップ）が実行され、スレーブサーバ２２Ｂで分割計算タスクＤ２６の計算処理（１ステップ／２ステップ）が実行され、スレーブサーバ２２Ｃに分割計算タスクＤ２７が配信され、スレーブサーバ２２Ｄで分割計算タスクＤ２４の計算処理が完了して計算処理結果Ｒ２４が出力された（ステップＳ６１５）。その次に図６Ｉを参照すると、マスターサーバ２１はスレーブサーバ２２Ｄから計算処理結果Ｒ２４を受信し、スレーブサーバ２２Ａで分割計算タスクＤ２５の計算処理が完了して計算処理結果Ｒ２５が出力され、スレーブサーバ２２Ｂで分割計算タスクＤ２６の計算処理（２ステップ／２ステップ）が実行され、スレーブサーバ２２Ｃで分割計算タスクＤ２７の計算処理（１ステップ／４ステップ）が実行され、スレーブサーバ２２Ｄに分割計算タスクＤ２８が配信された（ステップＳ６１７）。その次に図６Ｊを参照すると、マスターサーバ２１はスレーブサーバ２２Ａから計算処理結果Ｒ２５を受信し、スレーブサーバ２２Ａに分割計算タスクＤ２９が配信され、スレーブサーバ２２Ｂで分割計算タスクＤ２６の計算処理が完了して計算処理結果Ｒ２６が出力され、スレーブサーバ２２Ｃで分割計算タスクＤ２７の計算処理（２ステップ／４ステップ）が実行され、スレーブサーバ２２Ｄで分割計算タスクＤ２８の計算処理（１ステップ／４ステップ）が実行された（ステップＳ６１９）。
【００４９】
その次に図６Ｋを参照すると、マスターサーバ２１はスレーブサーバ２２Ｂから計算処理結果Ｒ２６を受信し、スレーブサーバ２２Ａで分割計算タスクＤ２９の計算処理（１ステップ／１ステップ）が実行され、スレーブサーバ２２Ｂに分割計算タスクＤ３０が配信され、スレーブサーバ２２Ｃで分割計算タスクＤ２７の計算処理（３ステップ／４ステップ）が実行され、スレーブサーバ２２Ｄで分割計算タスクＤ２８の計算処理（２ステップ／４ステップ）が実行された（ステップＳ６２１）。その次に図６Ｌを参照すると、スレーブサーバ２２Ａで分割計算タスクＤ２９の計算処理が完了して計算処理結果Ｒ２９が出力され、スレーブサーバ２２Ｂで分割計算タスクＤ３０の計算処理（１ステップ／１ステップ）が実行され、スレーブサーバ２２Ｃで分割計算タスクＤ２７の計算処理（４ステップ／４ステップ）が実行され、スレーブサーバ２２Ｄで分割計算タスクＤ２８の計算処理（３ステップ／４ステップ）が実行された（ステップＳ６２３）。その次に図６Ｍを参照すると、マスターサーバ２１はスレーブサーバ２２Ａから計算処理結果Ｒ２９を受信し、スレーブサーバ２２Ａに分割計算タスクＤ３１が配信され、スレーブサーバ２２Ｃで分割計算タスクＤ２７の計算処理が完了して計算処理結果Ｒ２７が出力され、スレーブサーバ２２Ｄで分割計算タスクＤ２８の計算処理（４ステップ／４ステップ）が実行された（ステップＳ６２５）。その次に図６Ｎを参照すると、マスターサーバ２１はスレーブサーバ２２Ｂから計算処理結果Ｒ３０を受信し、マスターサーバ２１はスレーブサーバ２２Ｃから計算処理結果Ｒ２７を受信し、スレーブサーバ２２Ａで分割計算タスクＤ３１の計算処理（１ステップ／１ステップ）が実行され、スレーブサーバ２２Ｂに分割計算タスクＤ３１が配信され、スレーブサーバ２２Ｄで分割計算タスクＤ２８の計算処理が完了して計算処理結果Ｒ２８が出力された（ステップＳ６２７）。その次に図６Ｏを参照すると、マスターサーバ２１はスレーブサーバ２２Ｄから計算処理結果Ｒ２８を受信し、スレーブサーバ２２Ａで分割計算タスクＤ３１の計算処理が完了して計算処理結果Ｒ３１が出力され、スレーブサーバ２２Ｂで分割計算タスクＤ３２の計算処理（１ステップ／１ステップ）が実行された（ステップＳ６２９）。
【００５０】
その次に図６Ｐを参照すると、マスターサーバ２１はスレーブサーバ２２Ａから計算処理結果Ｒ３１を受信し、スレーブサーバ２２Ｂで分割計算タスクＤ３２の計算処理が完了して計算処理結果Ｒ３２が出力された（ステップＳ６３１）。その次に図６Ｑを参照すると、マスターサーバ２１はスレーブサーバ２２Ｂから計算処理結果Ｒ３２を受信する（ステップＳ６３３）。その次に図６Ｒを参照すると、マスターサーバ２１はスレーブサーバ２２からすべての計算処理結果の受信を完了している（ステップＳ６３５）。同図の累積計算量を見ると、スレーブサーバ２２Ａは分割計算タスクＤ２１、Ｄ２５、Ｄ２９、およびＤ３１の計算処理を実行し、スレーブサーバ２２Ｂは分割計算タスクＤ２２、Ｄ２６、Ｄ３０、およびＤ３２の計算処理を実行し、スレーブサーバ２２Ｃは分割計算タスクＤ２３、およびＤ２７の計算処理を実行し、スレーブサーバ２２Ｄは分割計算タスクＤ２４、およびＤ２８の計算処理を実行したことが分かる。
【００５１】
図７は、本発明の分散処理による累積計算量を表わす概念図である。同図においては、その上部には図６Ｒに示された累積計算量が描かれており、その下部には、Ｄ２１、Ｄ２５、Ｄ２９、およびＤ３１の計算量を合計した計算量の合計分割計算タスクＤ４１と、Ｄ２２、Ｄ２６、Ｄ３０、およびＤ３２の計算量を合計した計算量の合計分割計算タスクＤ４２と、分割計算タスクＤ２３およびＤ２７の計算量を合計した計算量の合計分割計算タスクＤ４３と、分割計算タスクＤ２４およびＤ２８の計算量を合計した計算量の合計分割計算タスクＤ４４とが描かれている。同図から分かるように、合計分割計算タスクＤ４１〜Ｄ４４の計算量の偏りは、図１に示された分割計算タスクＤ１１〜Ｄ１４の計算量の偏りと比較すると、極めて小さくなっている。このようにして分散処理を行うことにより、それぞれのスレーブサーバの累計計算量をほぼ均等にすることが可能となる。
【００５２】
これからマスターサーバ２１といずれか１台のスレーブサーバ２２Ｘの間の処理について説明する。まず、それの構成について説明する。図８は、マスターサーバ２１とスレーブサーバ２２Ｘの構成を表わす構成図である。マスターサーバ２１は配信サーバ２１ａとデータサーバ２１ｂとから構成される。配信サーバ２１ａは、分割情報記憶手段２１ａａ、分散計算オブジェクト生成手段２１ａｂ、および分散計算オブジェクト配信手段２１ａｃから構成される。データサーバ２１ｂは、計算モデル記憶手段２１ｂａ、計算処理結果受信手段２１ｂｂ、および計算処理結果結合手段２１ｂｃから構成される。スレーブサーバ２２Ｘは、分散計算オブジェクト受入可能通知手段２２ａ、分散計算オブジェクト受信手段２２ｂ、分散計算オブジェクト処理手段２２ｃ、および計算処理結果送信手段２２ｄから構成される。それぞれの構成要素は、ハードディスクなどの記憶装置に記憶されたその機能を実現するプログラムが、ＣＰＵ、メモリなどの処理手段によって実行され、データバス、ネットワーク等のインターフェースなどを介して他の構成要素に結果を伝達することによって構成として具体化されるものである。それぞれの構成要素の機能については、以下の動作フローの説明において説明する。
【００５３】
これからマスターサーバ２１とスレーブサーバ２２Ｘの間の処理の動作フローについて図面を参照して説明する。図９Ａおよび図９Ｂは、マスターサーバ２１とスレーブサーバ２２Ｘの間の処理を表わす動作フロー図である。まずオペレータは、マスターサーバ２１に分割方法、分割数の入力を行う（ステップＳ９０１）。分割方法には、例えば、高さ方向の範囲で分割、（同じ高さにおける）ＸＹ平面上のオフセットの長さでの分割、複数のＸ−Ｙ領域での分割、加工条件（例えば、Φ６荒、Φ３荒、Φ６仕上、など）での分割、などがある。後述の加工条件に対応して、それぞれの分割方法が定められるが、１つの加工条件に対して複数の分割方法を適用してもよい。分割方法が１つしか使用されない場合は、分割数のみの入力で構わない。また、分割数に代えて、計算タスクをそれぞれどの範囲で分割するのかを入力してもよい。これによっても最終的な分割数が決定されるため、ここでの分割数という用語は、分割範囲のような分割の仕方を特定するものを広く含むものとする。入力は、クライアント２４からネットワークを通じて行うことができる。この際に、Ｗｅｂサーバ２３が提供するＷｅｂページを介して行うこともできる。次に、分割情報記憶手段２１ａａが、入力された分割方法、分割数を記憶する（ステップＳ９０３）。次にオペレータは、マスターサーバ２１に、計算タスクの基のデータである、金型の三次元形状モデル、切削する工具モデル、加工条件の入力を行う（ステップＳ９０５）。三次元形状モデルは、金型の三次元形状をＢ−スプライン曲面などの表現手法で表わしたものである。工具モデルは、工具の切削特性や切削形状などを表わしたものである。加工条件は、工具の種類、工具の直径、工具の有効長、シャンクホルダーの形状、加工種類（等高線、走査線、天面）、切削条件（Ｚピッチ、シフトピッチ、工具移動高さ、送り速度、形状の残し代、アプローチ速度）などを表わしたものである。なおこの加工条件は、スレーブサーバ２２Ｘの分散計算オブジェクト処理手段２２ｃにてパスのＧコード（加工機の工具軌跡を制御する情報）を生成する際に使用される。入力は、クライアント２４からネットワークを通じて行うことができる。この際に、Ｗｅｂサーバ２３が提供するＷｅｂページを介して行うこともできる。その次に、計算モデル記憶手段２１ｂａが、入力された三次元形状モデル、工具モデル、加工条件を含む計算モデルを記憶する（ステップＳ９０７）。
【００５４】
その次に、分散計算オブジェクト生成手段２１ａｂが、分割方法、分割数に基づき計算タスクを範囲の長さがほぼ均等な計算範囲の分割数のオブジェクトに分割し、計算範囲を表わす分割ＩＤを付すことによって分散計算オブジェクトを生成する（ステップＳ９０９）。分割は、分割された計算タスクのそれぞれに対する計算処理を並列的に実行できるような方法で行う。なお、計算タスクから分散計算オブジェクトが生成されるが、ここでは、独立してネットワークを通じて伝達され、スレーブサーバ２２Ｘにおいて自律的に計算処理を行うことができるようなまとまりをオブジェクトと呼んでいる。なお分散計算オブジェクトは、好適には、オブジェクト指向言語によって記述されたオブジェクトである。このような方法で分散計算オブジェクトを記述することによって、オブジェクト指向設計の特徴である、ソースコードの利用性、生産性、保守性、拡張性などを高レベルに維持することができる。複数のオブジェクトへの分割は、三次元形状モデルなどで表現された計算タスクを、直接分割することは必ずしも必要ではない。例えば、マスターサーバ２１、特にデータサーバ２１ｂによって、ネットワーク上の特定のパスに計算タスクが置かれている場合には、分割範囲だけを特定することによって、スレーブサーバ２２Ｘは、計算処理の実行時にそのパスから分割範囲の計算タスクを読み出すことができる。従って、このようにする場合には、分割するということは分割範囲を定めることと同義である。よって、分割は、分割範囲の特定および計算タスクのパスの特定によって行われると好適である。こうすることによって、少ないデータ量で計算タスクの分割を表現することができ、ネットワークを通じてスレーブサーバ２２Ｘに送信する際のネットワークオーバーヘッドを最低限に抑えることが可能となる。
【００５５】
計算タスクの分割は、所定のパラメータで表わされた全体の計算範囲を、入力された分割数によって等分すると好適である。所定のパラメータとしては、例えば高さ方向の位置が挙げられる。この場合、三次元形状モデルを、非常に細かく高さ方向に輪切りにし、それぞれがほぼ同じ高さの計算範囲を有する計算タスクに分割することによって、計算タスクを分割する。すなわち高さ方向の位置をパラメータとし、そのパラメータにおける範囲の長さ、すなわちそれぞれの分割された高さがほぼ均等になるように計算タスクを分割する。このように、事前予測を廃して単純に等分することによって、事前予測に要する計算時間を原理的にゼロにすることができる。
【００５６】
分散計算オブジェクトには、計算タスク全体のなかのどの部分が分割されたものであるのかを表わす分割ＩＤが付される。分割ＩＤは種々の形態を取ることができ、例えば、分割の順番を表わす番号でもいいし、どのような計算範囲であるのかを表わす分割範囲でもよい。分割を分割範囲の特定によって行っている場合には、その分割範囲はそのまま分割ＩＤとして機能することができる。このように、分割された計算タスクに分割ＩＤを付すことによって、スレーブサーバ２２Ｘで分散計算オブジェクトに対して計算処理が実行された後に、その計算処理結果を結合して全体の計算タスクに対する計算処理結果を得ることが可能となる。
【００５７】
分散計算オブジェクトには、塗りつぶしパスの計算、等高線仕上げ加工の計算などのそれぞれの加工刃の走査方法を実現する機能に応じた関数が実装される。これによって、任意の計算範囲で、そのような計算処理を行うことが可能となる。
【００５８】
その次に、スレーブサーバ２２Ｘにおいて、分散計算オブジェクト受入可能通知手段２２Ａが、次の分散計算オブジェクトの受入が可能になると、次の分散計算オブジェクトが受入可能であることを、前記ネットワークを介して前記マスターサーバに通知する（ステップＳ９１１）。通知は、スレーブサーバ２２Ｘが、受入可能である旨をマスターサーバ２１に能動的に送信することは必ずしも必要でなく、スレーブサーバ２２Ｘは受入可能である旨を表わすフラグを立てておき、マスターサーバ２１がそのフラグの状態を、ネットワークを介して読み出すことによって行うこともできる。
【００５９】
マスターサーバ２１において、分散計算オブジェクト配信手段２１ａｃが、分散計算オブジェクトが受入可能であると通知されたスレーブサーバ２２Ｘに対して、生成された分散計算オブジェクトを、ネットワークを介して送信する（ステップＳ９１３）。マスターサーバ２１は、ネットワーク上のスレーブサーバ２２Ｘの受入可能状況を常にモニターしており、受入可能であるスレーブサーバ２２Ｘに対して分散計算オブジェクトを次々と配信する。この配信処理は非常に高速に行い、受入可能なスレーブサーバ２２Ｘには即座に分散計算オブジェクトを配信するようにすることによって、分散処理システム２０の計算資源を極めて効率的に利用することができる。スレーブサーバ２２Ｘに分散計算オブジェクトを配信する際には、ネットワークを通じて適切に配信することができるように、自己（マスターサーバ２１）のアドレスや相手方（スレーブサーバ２２Ｘ）のアドレスなどのネットワーク制御情報がさらに付加される。
【００６０】
その次に、分散計算オブジェクト受信手段２２ｂが、前記マスターサーバから当該スレーブサーバ２２Ｘに対して配信される分散計算オブジェクトを、ネットワークを介して受信する（ステップＳ９１５）。その次に、分散計算オブジェクト処理手段２２ｃが、受信した分散計算オブジェクトに対して、それに含まれる分割ＩＤによって表わされる計算範囲における計算処理を、前記の分割方法および加工条件に応じた処理によって実行する（ステップＳ９１７）。分散計算オブジェクトは、好適には分割範囲と計算タスクのパスの情報を有しており、スレーブサーバ２２Ｘは、データサーバ２１ｂによってネットワーク上のパスに置かれた計算タスクの分割範囲の部分を読み出し、それに基づいて計算処理を実行する。ここで計算処理を実行する際には、計算モデル記憶手段２１ｂａが、スレーブサーバ２２Ｘからの読み出しに応答して、三次元形状モデル、工具モデル、加工条件をスレーブサーバ２２Ｘに送信する（ステップＳ９１９）。ただし、工具モデルや加工条件が全体の計算タスクにおいて同一である場合は、最初に一度だけそれらをスレーブサーバ２２Ｘに送信すれば十分である。
【００６１】
次に、計算処理結果送信手段２２ｄは、計算処理が完了した分散計算オブジェクトの計算処理結果を、ネットワークを介してデータサーバ２１ｂの計算処理結果受信手段２１ｂｂに送信する（ステップＳ９２１）。スレーブサーバ２２Ｘが計算処理結果をマスターサーバ２１に送信する際には、ネットワークを通じて適切に配信することができるように、自己のアドレスや相手方のアドレスなどのネットワーク制御情報がさらに付加される。計算処理結果受信手段２１ｂｂは、計算処理結果送信手段２２ｃから送信された計算処理結果を受信する（ステップＳ９２３）。次に計算処理結果結合手段２１ｂｃは、受信した計算処理結果を結合し、前記計算タスクに対する処理結果を得る（ステップＳ９２５）。計算処理結果の結合の際には、それの分割ＩＤに基づいて適切に結合する。
【００６２】
上記の動作は、すべての計算タスクが分割されて処理されるまで、連続的に行われる。これによって、計算タスク全体に対する計算処理結果が得られることになる。なお、本発明では、スレーブサーバの数より十分大きい数の多数の分散計算オブジェクトに細分化するが、１つの分散計算オブジェクトの送受信によって、ネットワークオーバーヘッドが発生することになる。したがって、その分割数は、スレーブサーバとマスターサーバとの間での１つの分散計算オブジェクトの送受信について発生する処理時間を分割数に乗じたものであるネットワークオーバーヘッドが、計算タスクを分割せずに計算処理した場合の純計算処理時間より十分小さいように設定する必要がある。典型的な場合のネットワークオーバーヘッドを以下に考察する。まず、スレーブサーバに送信する計算タスクに関するデータとしては、高さの範囲としてｄｏｕｂｌｅ×２＝１６ｂｙｔｅ、工程番号としてｉｎｔ×１＝４ｂｙｔｅの計２０ｂｙｔｅのデータ長のデータが必要である。これは、１００Ｍｂｐｓで送信したとすると、１回の送受信当たり１／６０万  秒の時間を必要とする。一方、スレーブサーバから送信される計算処理結果に関するデータは、パスレイヤーの配列として１００ｂｙｔｅ〜数千ｂｙｔｅ程度である。これは、１００Ｍｂｐｓで送信したとすると、１回の送受信当たり１／１０００  秒の時間を必要とする。これから、数１００回の送受信を行ったとしても、ネットワークオーバーヘッドは１秒程度であり、ほとんど無視できるレベルであることが分かる。
【００６３】
次に、上記の加工条件に含まれる加工種類について詳しく説明する。図１０は、三次元形状モデルで表わされた金型の形状を切削加工により製作するためのパスの集合体を求めるための計算タスクの種々の分割方法を表わす概念図である。同図の直方体は、三次元形状モデルが表わす形状である。同図では、（ｉ）高さ方向で分割、（ｉｉ）輪郭線ごとに分割、（ｉｉｉ）Ｘ−Ｙ領域で分割、の３種類の分割方法が示されている。まず、「（ｉ）高さ方向で分割」の項には、三次元形状モデルに関する計算タスクを高さ方向に分割する概念が表わされている。この分割方法によると、高さ範囲１００１、高さ範囲１００２というように、高さ方向（Ｚ方向）に三次元形状モデルを輪切りにしている。ここでは、このような分割方法によって、塗りつぶしという加工種類のための塗りつぶしパスの計算をする。塗りつぶしとは、ある高さ範囲における輪郭線の内側のボリュームを、１つ以上の塗りつぶしパスに沿った切削加工により削り取る工程である。同図では、輪郭線１００１Ａの内側のボリュームが塗りつぶしパス１００１Ｂおよび１００１Ｃによって削り取られ、輪郭線１００２Ａの内側のボリュームが塗りつぶしパス１００２Ｂおよび１００２Ｃによって削り取られる。図１１および図１２は、三次元形状モデルの輪郭と塗りつぶしパスの関係を示す概念図である。図１１を参照すると、上部のＺ断面のグラフには、輪郭１１０１の形状が示されている。下部のＸ−Ｙ平面のグラフには、輪郭１１０１をＸ−Ｙ平面に投影した輪郭１１０２が示されており、輪郭１１０１の谷に対応する輪郭１１０２の内側のボリュームを削り取るための塗りつぶしパス１１０３が示されている。図１２を参照すると、上部のＺ断面のグラフには、輪郭１２０１の形状が示されている。ここでは、輪郭１２０１は２つの谷を有しており、左側の谷はＡ部に谷の底部があり、右側の谷はＢ部に谷の底部がある。下部のＸ−Ｙ平面のグラフには、輪郭１２０１をＸ−Ｙ平面に投影した輪郭１２０２及び輪郭１２０４が示されており、輪郭１２０１の左側の谷に対応する輪郭１２０２の内側のボリュームを削り取るための塗りつぶしパス１２０３が示されており、輪郭１２０１の右側の谷に対応する輪郭１２０４の内側のボリュームを削り取るための塗りつぶしパス１２０５が示されている。なお、高さ範囲ごとに塗りつぶしパスの計算のための輪郭を分割した例を上記に示したが、ある高さ範囲のそれぞれの輪郭ごとに分割してもよい。図１３は、輪郭が記憶された状態を表わす概念図である。同図に示された輪郭１３０１、輪郭１３０２、輪郭１３０３、輪郭１３０４のように、それぞれの輪郭ごとに計算タスクを分割することもできる。なお、この高さ方向での分割により、後述の等高線仕上げパスの計算を行わせることもできる。
【００６４】
高さ方向の分割は、具体的には以下のように行われる。例えば、携帯電話機の金型の等高線仕上げ等高線仕上げ加工のパスの計算を高さ方向の分割で行うこととする。具体的な金型の大きさの一例を挙げると以下のとおりである。
金型の厚み：  ３５ｍｍ
等高線仕上げ加工の加工範囲：１０．７５ｍｍ
層の厚み（Ｚピッチ）：  ３ミクロン
層の数：  １０，７５０÷３＝３，５８４= ３，５８４層
この金型に対するパスの計算を１層あたり１つの分散計算オブジェクトに分割して実施するとしたら、分散計算オブジェクトの数は以下のとおりとなる。
分散計算オブジェクト数：  ３，５８４個
このように、一般的な金型では高さ方向の加工単位の層ごとに計算タスクを分割することによって、並列的に処理することが可能な数千個程度の分散計算オブジェクトに分割することができる。１つの分散計算オブジェクトの送受信に対するネットワークオーバーヘッドは数ミリ秒であり、すなわち、この場合の計算全体のネットワークオーバーヘッドは数秒程度であって、問題になる数値ではない一方、分割方法が単純な高さ方向であり、分割単位と加工単位とが一致しているので、分割数を多くしながらも、分割処理を容易に行うことができる。一般的に高さ方向の計算量は、その場所によって大きく異なるが、１つの層を１つの分散計算オブジェクトとすることで計算タスクを極めて細粒化させることができるため、それぞれのスレーブサーバの負荷をほぼ均一にすることができる。なお、複数の加工単位の層をまとめて１つの分散計算オブジェクトとすることも容易にできる。この際に、加工単位の層は必ずしも隣接している必要はなく、大まかな計算量の予測に基づいてそれぞれが同様の計算量の分散計算オブジェクトとなるように加工単位の層を組み合わせるようにしてもよい。
【００６５】
次に、図１０の「（ｉｉ）輪郭線ごとに分割」の項には、三次元形状モデルに関する計算タスクを輪郭（輪郭線）ごとに分割する概念が表わされている。この分割方法によると、輪郭線１０１１、輪郭線１０１２というように、ある高さ範囲における輪郭線ごとに三次元形状モデルを分割している。ここでは、このような分割方法によって、等高線仕上げという加工種類のための等高線仕上げパスの計算をする。等高線仕上げとは、１つの輪郭線に対して等高線に沿ったパスで切削加工を行い、必要な輪郭を削り残す行程である。図１４は、三次元形状モデルの輪郭と等高線仕上げパスの関係を示す概念図である。図１４を参照すると、上部のＺ断面のグラフには、ある高さの断面１４０１と、輪郭１４０２の形状が示されている。輪郭１４０２は、３つの山を有しており、その内の左側と右側の２つの山が、ある高さの断面１４０１より高い頂部を有している。下部のＸ−Ｙ平面のグラフには、ある高さの断面１４０１によって輪郭１４０２の左側の山を切断した断面をＸ−Ｙ平面に投影した輪郭断面線１４０３およびそれを削り残すための等高線仕上げパス１４０４が示されており、同じく右側の山を切断した断面をＸ−Ｙ平面に投影した輪郭断面線１４０５およびそれを削り残すための等高線仕上げパス１４０６が示されている。なお、分割方法を、所定の高さ範囲ごととすることもできる。
【００６６】
次に、図１０の「（ｉｉｉ）Ｘ−Ｙ領域で分割」の項には、三次元形状モデルに関する計算タスクをＸ−Ｙ領域ごとに分割する概念が表わされている。この分割方法によると、Ｘ−Ｙ領域１０２１、Ｘ−Ｙ領域１０２２というように、Ｘ−Ｙ領域ごとに三次元形状モデルを分割している。Ｘ−Ｙ領域は、正方形や長方形の形状に限られず、任意の形状とすることができる。また、このＸ−Ｙ領域での分割は、上記の（ｉ）高さ方向で分割、（ｉｉ）輪郭線ごとに分割、のそれぞれの分割方法と容易に組み合わせることができ、分割数をさらに大きくすることができる。ここでは、このような分割方法によって、図示しないが、塗りつぶしパスや等高線仕上げパス等の種々の加工パスの計算などを行うことができる。
【００６７】
次に、図示していないが、工具直径などの加工条件によって分割することも可能である。この分割方法によると、例えば、Φ６荒加工、Φ３荒加工、Φ６仕上げ加工などの、加工条件工程によって分割する。この場合、Φ６荒加工の計算は、Φ３荒加工の計算の前に行わなくてはならないため、Φ３荒加工とΦ６仕上げ加工とを同時に計算することが可能である。また、この加工条件による分割は、上記の（ｉ）高さ方向で分割、（ｉｉ）輪郭線ごとに分割、（ｉｉｉ）Ｘ−Ｙ領域で分割、のそれぞれの分割方法と容易に組み合わせることができ、分割数をさらに大きくすることができる。上述した分割方法以外の分割方法によって分散計算オブジェクトを生成することもできる。
【００６８】
また、スレーブサーバ２２の少なくともいずれかが、さらに下位のスレーブサーバに接続されており、その下位スレーブサーバにおける分散処理を統括するマスターサーバとして機能する下位マスターサーバであるような入れ子構造のサーバ構成であってもよい。このような構成にすると、さらに多くの分散化が可能となる。
【００６９】
上記の実施形態は、本発明を説明するための例示であり、本発明をこの実施形態に限定する趣旨ではない。上記の実施形態では、金型のような加工品の製作方法に関して説明してきたが、本発明の分散処理システムは、各種の設計データの計算、各種のシミュレーションなどの、それ以外の大規模な計算タスクの分散処理などの用途にも適用することができる。本発明は、その要旨を逸脱しない限りにおいて、種々の実施形態で実施することができる。
【図面の簡単な説明】
【００７０】
【図１】従来の分散処理システム１０の構成、および計算タスクＴ１０の分割方法の概念を表わしたシステム構成図である。
【図２】従来の分散処理システム１０の分散の効果をグラフにして表わしたものである。
【図３】本発明の一実施形態に係る分散処理システム２０の構成を表わすシステム構成図である。
【図４】計算タスクＴ２０の分割方法の概念を表わした概念図である。
【図５】本発明の一実施形態に係る分散処理システム２０の分散処理の概念を表わす概念図である。
【図６Ａ】本発明の一実施形態に係る分散処理システム２０の分散処理の順次的な動作を表わす模式図である。
【図６Ｂ】本発明の一実施形態に係る分散処理システム２０の分散処理の順次的な動作を表わす模式図である。
【図６Ｃ】本発明の一実施形態に係る分散処理システム２０の分散処理の順次的な動作を表わす模式図である。
【図６Ｄ】本発明の一実施形態に係る分散処理システム２０の分散処理の順次的な動作を表わす模式図である。
【図６Ｅ】本発明の一実施形態に係る分散処理システム２０の分散処理の順次的な動作を表わす模式図である。
【図６Ｆ】本発明の一実施形態に係る分散処理システム２０の分散処理の順次的な動作を表わす模式図である。
【図６Ｇ】本発明の一実施形態に係る分散処理システム２０の分散処理の順次的な動作を表わす模式図である。
【図６Ｈ】本発明の一実施形態に係る分散処理システム２０の分散処理の順次的な動作を表わす模式図である。
【図６Ｉ】本発明の一実施形態に係る分散処理システム２０の分散処理の順次的な動作を表わす模式図である。
【図６Ｊ】本発明の一実施形態に係る分散処理システム２０の分散処理の順次的な動作を表わす模式図である。
【図６Ｋ】本発明の一実施形態に係る分散処理システム２０の分散処理の順次的な動作を表わす模式図である。
【図６Ｌ】本発明の一実施形態に係る分散処理システム２０の分散処理の順次的な動作を表わす模式図である。
【図６Ｍ】本発明の一実施形態に係る分散処理システム２０の分散処理の順次的な動作を表わす模式図である。
【図６Ｎ】本発明の一実施形態に係る分散処理システム２０の分散処理の順次的な動作を表わす模式図である。
【図６Ｏ】本発明の一実施形態に係る分散処理システム２０の分散処理の順次的な動作を表わす模式図である。
【図６Ｐ】本発明の一実施形態に係る分散処理システム２０の分散処理の順次的な動作を表わす模式図である。
【図６Ｑ】本発明の一実施形態に係る分散処理システム２０の分散処理の順次的な動作を表わす模式図である。
【図６Ｒ】本発明の一実施形態に係る分散処理システム２０の分散処理の順次的な動作を表わす模式図である。
【図７】本発明の分散処理による累積計算量を表わす概念図である。
【図８】マスターサーバ２１とスレーブサーバ２２Ｘの構成を表わす構成図である。
【図９Ａ】マスターサーバ２１とスレーブサーバ２２Ｘの間の処理を表わす動作フロー図である。
【図９Ｂ】マスターサーバ２１とスレーブサーバ２２Ｘの間の処理を表わす動作フロー図である。
【図１０】三次元形状モデルで表わされた金型の形状を切削加工により製作するためのパスの集合体を求めるための計算タスクの種々の分割方法を表わす概念図である。
【図１１】三次元形状モデルの輪郭と塗りつぶしパスの関係を示す概念図である。
【図１２】三次元形状モデルの輪郭と塗りつぶしパスの関係を示す概念図である。
【図１３】輪郭が記憶された状態を表わす概念図である。
【図１４】三次元形状モデルの輪郭と等高線仕上げパスの関係を示す概念図である。
【符号の説明】
【００７１】
１１  マスターサーバ
１２  スレーブサーバ
１２Ａ  スレーブサーバ
１２Ｂ  スレーブサーバ
１２Ｃ  スレーブサーバ
１２Ｄ  スレーブサーバ
２１  マスターサーバ
２１ａ  配信サーバ
２１ｂ  データサーバ
２２  スレーブサーバ
２２Ａ  スレーブサーバ
２２Ｂ  スレーブサーバ
２２Ｃ  スレーブサーバ
２２Ｄ  スレーブサーバ
２２Ｘ  スレーブサーバ
２３  Ｗｅｂサーバ
２４  クライアント
２１ａａ  分割情報記憶手段
２１ａｂ  分散計算オブジェクト生成手段
２１ａｃ  分散計算オブジェクト配信手段
２１ｂａ  計算モデル記憶手段
２１ｂｂ  計算処理結果受信手段
２１ｂｃ  計算処理結果結合手段
２２ａ  分散計算オブジェクト受入可能通知手段
２２ｂ  分散計算オブジェクト受信手段
２２ｃ  分散計算オブジェクト処理手段
２２ｄ  計算処理結果送信手段
【図１】
2006106858.tif 000003
【図２】
2006106858.tif 000004
【図３】
2006106858.tif 000005
【図４】
2006106858.tif 000006
【図５】
2006106858.tif 000007
【図６Ａ】
2006106858.tif 000008
【図６Ｂ】
2006106858.tif 000009
【図６Ｃ】
2006106858.tif 000010
【図６Ｄ】
2006106858.tif 000011
【図６Ｅ】
2006106858.tif 000012
【図６Ｆ】
2006106858.tif 000013
【図６Ｇ】
2006106858.tif 000014
【図６Ｈ】
2006106858.tif 000015
【図６Ｉ】
2006106858.tif 000016
【図６Ｊ】
2006106858.tif 000017
【図６Ｋ】
2006106858.tif 000018
【図６Ｌ】
2006106858.tif 000019
【図６Ｍ】
2006106858.tif 000020
【図６Ｎ】
2006106858.tif 000021
【図６Ｏ】
2006106858.tif 000022
【図６Ｐ】
2006106858.tif 000023
【図６Ｑ】
2006106858.tif 000024
【図６Ｒ】
2006106858.tif 000025
【図７】
2006106858.tif 000026
【図８】
2006106858.tif 000027
【図９Ａ】
2006106858.tif 000028
【図９Ｂ】
2006106858.tif 000029
【図１０】
2006106858.tif 000030
【図１１】
2006106858.tif 000031
【図１２】
2006106858.tif 000032
【図１３】
2006106858.tif 000033
【図１４】
2006106858.tif 000034