JP2000207434A - 形状処理方法 - Google Patents

形状処理方法

Info

Publication number
JP2000207434A
JP2000207434A JP11005421A JP542199A JP2000207434A JP 2000207434 A JP2000207434 A JP 2000207434A JP 11005421 A JP11005421 A JP 11005421A JP 542199 A JP542199 A JP 542199A JP 2000207434 A JP2000207434 A JP 2000207434A
Authority
JP
Japan
Prior art keywords
shape
data
thread
processing
cpus
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP11005421A
Other languages
English (en)
Other versions
JP3847020B2 (ja
Inventor
Kouichi Konno
晃市 今野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP00542199A priority Critical patent/JP3847020B2/ja
Publication of JP2000207434A publication Critical patent/JP2000207434A/ja
Application granted granted Critical
Publication of JP3847020B2 publication Critical patent/JP3847020B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Processing Or Creating Images (AREA)
  • Image Generation (AREA)

Abstract

(57)【要約】 【課題】 データ変換の機能をマルチスレッドにより並
列に実行することによって変換に要する時間を短縮し、
時間的制約によりデータ交換が事実上不可能であったケ
ースで、データ交換を可能にする方法を提案する。 【解決手段】 CPU数を検出する。CPU数はスレッ
ド関数を生成する目安となる(STEP1)。3次元形
状のデータから曲面を全て取り出し、メモリに格納する
(STEP2)。STEP2で得られた曲面データをC
PU数で分割し、複数のデータに分ける(STEP
3)。STEP1で得られたCPU数分だけ曲面オブジ
ェクトを形状変換するスレッド関数を動作させる(ST
EP4)。STEP2で得られた曲面データをCPU数
で分割し、それぞれの曲面データ群をSTEP3で生成
したスレッド関数に割り当てて、データ変換処理を行う
(STEP5)。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、形状処理方法、よ
り詳細には、分散型3次元形状データの変換方法に関
し、例えば、3次元CAD/CAM/CAEにおける形
状データの交換等に応用可能なものである。
【0002】
【従来の技術】3次元形状設定において、データ交換
は、設計効率を左右する重要な機能の一つである。形状
設計は一つのCAD(Computer Aided Design)/CA
M(Computer Aided Manufactureing)システムだけで
行われるのではなく、設計物に応じて複数のシステムを
使い分けるので、システム間で3次元形状を受け渡す必
要が生じることが理由の一つである。
【0003】一般に、データ交換は、IGES(Smith,
B.,Rinaudot,G.R.,Reed,K.A.,and Wright,T.:INITIAL G
RAPHICS EXCHANGE SPECIFICATION(IGES) VERSION 4.0,N
ational Bureau of Standard,Spring field,VA,(198
8).)やSTEP(岸浪建史:STEPによる技術デー
タ統合の現状と動向,精密工学会誌,第62巻,第1
号,pp.19-23(1996).)などの標準的なデータフォーマ
ットを介して行われるか、システム間で直接データを変
換するダイレクトトランスレーターを利用するかのどち
らかの手法により実現されている。最近では、COM/
DCOM技術を利用した形状データ交換用APIによる
データ交換技術も提案されている(http://www.dmac.or
g/)。
【0004】データ交換では、形状データが他のシステ
ムに高速かつ正確に受け渡されることが要求される。し
かし、一般には、システム間の形状表現方法や精度の違
いが障害となり、表現方法の変換や幾何形状の近似計算
を行いながらデータを取り込む。この時、ユーザは、幾
何形状の近似精度を変更しながら何度かデータ変換を試
み、近似された形状が意図通りになる最適な精度を探索
する。このように、データ変換は試行錯誤による計算量
が膨大であり、幾何形状の近似計算自体も計算負荷が高
いため、短時間で意図するデータを得ることが困難な場
合も多い。
【0005】データ変換のための実行時間を短縮するた
めの一つの方法として、例えば、同一プロセス内で並列
処理を実現する手段として、マルチスレッドプログラミ
ングを利用することが考えられる(Microsoft Develope
r Studioのヘルプ参照)。マルチスレッドプログラミン
グでは、スレッドと呼ばれる実行単位(OSによりスケ
ジュールされる最小単位)を複数生成し、それぞれのス
レッドに別々の作業を割り当てることができる。従っ
て、複数のCPUを搭載する計算機では、それぞれのC
PUにスレッドが割り当てられ並列にスレッドが実行さ
れるため、実行時間の短縮が期待できる。
【0006】
【発明が解決しようとする課題】あるシステムで作成し
た3次元形状を別のシステムへ受け渡すためのデータ変
換技術は、形状データの共有化を促進し、データを有効
利用する上でも必須の技術である。しかし、データ交換
ではシステム間の幾何精度の違いや、表現形式の違いに
よりデータを変換できない、あるいは、データ量が多い
場合や複雑な形状の場合には、変換に多大な時間を必要
とするため事実上変換不可能となるなどの問題がある。
【0007】本発明は、上述のごとき実情に鑑みてなさ
れたもので、データ変換の機能をマルチスレッドにより
並列に実行することによって変換に要する時間を短縮
し、時間的制約によりデータ交換が事実上不可能であっ
たケースで、データ交換を可能にする方法を提案するこ
とを目的として成されたものである。
【0008】
【課題を解決するための手段】請求項1の発明は、ある
形式で表現された3次元形状を形状処理システムに読み
込む際に、形状オブジェクトを読み込みシステムのCP
U数に合わせて分割し、それぞれのCPUに読み込み処
理を行わせることによって、3次元形状の読み込み機能
を高速に実現することを特徴としたものである。
【0009】請求項2の発明は、請求項1の発明におい
て、読み込み処理のためにマルチスレッド技術を利用し
て、3次元形状の読み込みのためのスレッド実行関数を
作成し、読み込み機能を並列に処理することによって、
3次元形状の読み込み機能を高速に実現することを特徴
としたものである。
【0010】請求項3の発明は、請求項2の発明におい
て、読み込み処理のためにマルチスレッド技術を利用し
て、3次元形状の読み込みのためのスレッド実行関数を
2つ作成し、読み込み機能を2つのCPUに並列に実行
させることによって、3次元形状の読み込み機能を高速
に実現することを特徴としたものである。
【0011】
【発明の実施の形態】本発明は、前述の目的を達成する
ために、曲面オブジェクトを形状変換するスレッド関数
を作成し、スレッド関数をマルチスレッド技術により複
数動作させ、個々のスレッドに異なった曲面オブジェク
トを割り当てて並列に動作させるようにしたものであ
る。
【0012】図1は、本発明の一実施例を説明するため
のフローチャートで、STEP1では、CPU数を検出
する。CPU数はスレッド関数を生成する目安となる。
STEP2では、3次元形状のデータから曲面を全て取
り出し、メモリに格納する。STEP3では、STEP
2で得られた曲面データをCPU数で分割し、複数のデ
ータに分ける。STEP4では、STEP1で得られた
CPU数分だけ曲面オブジェクトを形状変換するスレッ
ド関数を動作させる。STEP5では、STEP2で得
られた曲面データをCPU数で分割し、それぞれの曲面
データ群をSTEP3で生成したスレッド関数に割り当
てて、データ変換処理を行う。
【0013】本出願人は、マルチスレッドプログラム対
応の3次元データ交換のためのカーネル上で3次元デー
タを変換する応用プログラムを作成し、データ交換の処
理時間が短縮されることを確認し、応用プログラムの有
効性を検証した。すなわち、2つ以上のCPUを搭載す
るパーソナルコンピュータ(PC)上で、複数のCPU
に処理を分散する分散型データ交換プログラムを作成
し、従来の逐次処理との速度を比較することで、マルチ
スレッドを利用した方式が、逐次処理方式と比較して高
速化されることを実証した。
【0014】(形状処理ツールキットの概要)最初に、
本発明で行う評価のための3次元形状処理ツールキット
について説明する。マルチスレッドを利用して、3次元
形状を分散処理するにあたり、MT−SAFE(湯浅太
一,安村通晃,中田登志之:初めての並列プログラミン
グ,共立出版(1998).)な3次元形状処理ツールキット
が必要である。そこで、本出願人は、データ交換を主眼
に置きMT−SAFEなツールキットを開発した。ここ
では、3次元形状の分散型データ交換プログラムである
Translatorを実現するための3次元形状処理ツールキッ
トMiniKernelについて説明する。
【0015】一般に、CADシステム間では、3次元形
状の位相構造や幾何形状の許容誤差などが異なっている
ため、データの受け側では、位相構造の再構築や形状の
近似などを行う。この時、幾何学的に整合する形状をま
ず構築できないと、位相構造生成のための幾何計算が意
図通りなされない。従って、データ交換でまず重要なこ
とは、曲線,曲面といった幾何要素が受け側の許容誤差
内で取り込めることである。
【0016】境界表現(Braid,I.C. and Lang,C.A.:Comp
uter-aided design of mechanicalcomponents with vol
ume building bricks,In Proceedings of PROLAMAT '7
3,(1973).)を用いた3次元形状は、曲線,曲面といった
幾何要素と幾何要素の繋がりを表す位相要素により表現
されている。幾何要素には、NURBS(Non Uniform
Rational B-Spline)表現や平面,2次曲面などの解析
表現などが主に用いられる。また、位相要素は、CAD
システムにより異なるが、立体,シェル,面,ループ,
稜線,頂点などで構成される(Mantyla,(¨省略)M.:An I
ntroduction ToSolid Modeling,Computer science pres
s,USA(1988),鳥谷浩志,千代倉弘明:3次元CADの
基礎と応用,共立出版(1991).)。
【0017】面,ループ,稜線,頂点と幾何要素との関
係に着目すると、面は曲面を持ち、稜線は曲線を持つ。
また、面とループによりトリム曲面を表し、3次元空間
における面上線を稜線が持つ曲線で表す。一方、頂点は
稜線の端点を表すが、頂点が持つ3次元空間上の座標値
と稜線が持つ曲線の端点,頂点の位置に対応する曲面上
の点の3点が整合する必要があり、3つの情報を整合さ
せながら維持管理するのは手間がかかる。また、ある演
算を行うときに、頂点の位置情報,曲線の端点,面上の
点のどれかを利用するかで処理結果が変わる可能性もあ
る。面,ループ,稜線,頂点は、曲面と曲面の境界稜線
の関係を表しており、曲面が境界曲線列として直接トリ
ム情報を持てば、位相要素は冗長であるとと考えられ
る。前述したように、データ交換は幾何形状主導で行わ
れることを考えれば、位相要素は極力排除した方が受け
取ったデータの管理方法が単純になる。
【0018】以上のような考え方により、MiniKernelで
は、モデル,立体,領域,シェルを位相要素として持
つ。一方、幾何要素としては、曲面とパラメータ空間曲
線,3次元空間曲線の3つを持つ。幾何要素が表現でき
る曲線,曲面表現形式には次のものがある。 ・パラメータ空間曲線(2次元の曲線) 直線(線分),円(円弧),(有理)B−Spline
曲線 ・3次元空間曲線 直線(線分),円(円弧),(有理)B−Spline
曲線 ・曲面 平面,球面,円柱面,円錐面,トーラス面,(有理)B
−Spline曲線 ここで述べた位相,幾何要素により3次元形状を表現す
る。また、上記のデータ以外は形式変換する。
【0019】MiniKernelは、次のような特徴を持つ。 ・MT−SAFEである。MiniKernelを利用したマルチ
スレッド対応の応用プログラムを作成することができ
る。
【0020】・NURBS表現と解析表現が連携する。
NURBS表現と解析表現ではパラメータ化が異なるた
め、混在して利用するときには、形状変換を行わなけれ
ばならない。例えば、回転面の境界面線には円弧が含ま
れるが、回転面を表現しているNURBS曲面の境界曲
線はNURBS曲線で表現されるため、同一の形状が円
弧とNURBS曲面とで表されることがある。このよう
な場合には、円弧をNURBS曲線に変換するか、NU
RBS曲線を円弧に変換する必要がある。形状変換にか
かるコストを低減するために、NURBS表現と主表
現,解析的表現を従表現とし、常に両方の表現形式を維
持することができる。
【0021】・計算結果の寿命を管理することにより、
計算コストを低減する。曲線の端点の座標値や微分ベク
トルなど、幾何形状の評価結果を保存し、適宜利用する
ことで形状評価による計算コストを低減する。
【0022】・G1連続およびPeriodicなNURBS曲
線,曲面を扱う。様々なCADシステムで生成された幾
何形状を取り込むために、NURBS表現上の拘束条件
を緩めに設定しておく。ただし、C0連続な形状は折れ
ていることが形状特徴であるという認識により、MiniKe
rnelではC0の位置で分割して扱う。
【0023】図2は、MiniKernelが持つモデル(Mode
l),立体(Body),領域(Region),シェル(Shell)
などのオブジェクト構造を示している。太線で囲まれた
ものがオブジェクトであり、矢印はオブジェクト間のリ
ンクを表す。また、細線や破線で囲まれるものは、それ
ぞれのオブジェクトが持つメンバーである。更に、破線
で囲まれたメンバーはリング上の双方向リストを表し、
リストノードには位相または幾何要素が設定される。例
えば、モデルはモデルに含まれる立体のリストを持ち、
個々の立体はその親のモデルへのリンクを持つ構造であ
る。
【0024】図2からも分かるように、MiniKernelで
は、モデル,立体,領域,シェルは、境界表現で表され
る形状モデルの位相要素を意味する。シェルは、そのシ
ェルを構成する曲面(Surf)のリストを持ち、曲面は、
曲面の元になる母曲面(Base)と曲面の境界(bound)
を表す境界線列からなる。母曲面は、NURBS曲面が
主表現であり形状に応じて従表現を持つ。境界線列は、
母曲面のu,v方向のパラメータ区間がそれぞれ[0,
1]であると想定したときのパラメータ空間曲線列であ
る。よって、母曲面のパラメータ空間曲線で表された境
界線列により、トリム曲面を表現することができる。図
3では、パラメータ空間曲線と3次元空間曲線の関係を
示している。これらは、Mantylaが提案する半稜線構造
(Mantyla,M.:An Introduction To Solid Modeling,Comp
uter science press,USA(1988)をなしており、隣接する
2つの曲面のそれぞれのパラメータ空間曲線が、3次元
空間上の共有境界曲線を指し示し、3次元空間曲線が元
になるパラメータ空間曲線を指し示す双方向リンクとな
っている。
【0025】上述のような構造を持つMiniKernel上に3
次元形状を構築するときには、次のような手順で行う。 (1)曲面を生成する。曲面の幾何情報とパラメータ空
間曲線を生成し、(トリム)曲面を生成する。 (2)Modelオブジェクトを生成する。Model
は3次元形状のルートにあたる概念である。立体形状
は、すべてModelからリンクすることができる。 (3)Bodyを生成する。(2)で生成したMode
lに属するBodyオブジェクトを生成し、適切なリン
クをはる。 (4)立体のスケルトンを生成する。(3)で生成した
Bodyに属するRegion,Sellオブジェクト
をそれぞれ一つずつ生成し、適切なリンクをはる。これ
によって、空のShellを含む立体が一つずつ生成さ
れる。なお、Regionは中空シェルを表現するため
のオブジェクトである。 (5)(1)で生成した曲面を(4)で生成したShe
llの持つ曲面リストに追加する。これにより、She
llは1枚の曲面を持つサーフェスシェルになる。
【0026】複数の曲面を生成するときには、前記
(4)から(5)を繰り返すことにより、サーフェスモ
デルを表す3次元形状をMiniKernel上に構築できる。ソ
リッドモデルを生成する場合には、個々のShellを
接合すればよい。以上に述べた方法で、3次元形状デー
タ交換のための形状構築を行う。以下にその詳細につい
て説明する。
【0027】本出願人は、以上に説明したMiniKernelを
利用し、商用の3次元形状ツールキットDESIGNB
ASE(鳥谷浩志,千代倉弘明:3次元CADの基礎と
応用,共立出版(1991).)から形状データを取り込むデー
タ交換ツール(Translatorと呼ぶ)を開発した。以下
に、Translatorの構成とアルゴリズムについて説明す
る。また、並列に実行するときの並列化効率についても
説明する。
【0028】図4は、本出願人が開発したTranslatorの
構成を示している。Translatorは、DESIGNBAS
Eの形状データをMiniKernelの形状データに変換する機
能を持つ。図4の黒い矢印は、関数の呼び出し関係を示
している。このTranslatorは、DESIGNBASEの
一つのコマンドとして作成したもので、DESIGNB
ASEデータをMiniKernelに取り込む場合には、DES
IGNBASEのコマンドインターフェースを利用して
コマンド実行関数を呼び出し、コマンド実行関数がTran
slator本体を呼び出す方式を取った。
【0029】Translator本体では、大きく分けて以下に
示す3つの機能を実装した。これら3種類の処理を部品
として利用し、後述の手法により並列化したアルゴリズ
ムを提案する。 (1)形状の取得:DESIGNBASEから3次元形
状を取得する。DESIGNBASEが持っている、モ
デル,立体,ループをたどり、(トリム)曲面情報を得
る。 (2)曲面の形式変換:DESIGNBASEの曲面構
造をMiniKernelのものに変換する。 (3)形状の生成:MiniKernelの曲面をカーネルに登録
する。(2)で変換したMiniKernelの曲面を、MiniKern
elのシェルとして生成する。ここで生成されたシェル
は、1つの曲面のみを持つ。
【0030】並列処理は、専用の並列計算機や並列コン
パイラなどを利用して実装するのが一般的に行われてお
り、大規模な科学技術計算や、専用のハードウエア上で
の並列化手法(中田秀基,村上聡,荒木拓也,小池汎
平,田中秀彦:並列計算機PIE64ににおけるCommit
ted-choice型言語Flengの負荷分散手法,情報処理学会
論文誌,第38巻,第2号,pp.332-340(1997))などが
提案されている。多くのCAD/CAMシステムは、逐
次処理を前提にしているので、逐次的なプログラムを複
数のタスクに分割し、タスク間の並列性を利用して並列
処理する考え方を取り入れることが容易である。また、
3次元形状モデルは、立体,シェル,面,稜線,頂点な
どのオブジェクトにより表現されているので、オブジェ
クトを分散させて同一の処理を行う手法も考えられる。
ここでは、タスク間の並列性を利用する手法を並列タス
ク型並列処理,オブジェクトを分割する手法をオブジェ
クト分割並列処理と呼ぶことにする。
【0031】前述のTranslatorの内部機能(1)〜
(3)を並列タスク型,オブジェクト分割型並列処理に
あてはめ、次のように実装し並列化評価のためのTransl
atorを開発した。なお、並列化評価の基準となる逐次処
理についても合わせて説明する。
【0032】(逐次処理)前記(1)から(3)までを
逐次的に処理するプログラムであり、マルチスレッドプ
ログラムではない。以下に、プログラム例を示す(エラ
ー処理などは省略する)。
【0033】 Single( ){ // Model オブジェクトを生成する。 Model=Generate.Body(Model); // Body オブジェクトを生成する。 Body=Generate.Model( ); //形状取得(DESIGNBASEの曲面を得る) dbsf=new DBSurface [max+1]; mksf=new MKSurface [max+1]; for (loop=1;loop<=max;loop++){ //個々の面の幾何情報を得る。 GetSurfaceFromDB (bid,loop,dbsf [loop]); } //曲面の形式変換 for (loop=1;loop<=max;loop++){ TranslateForm (dbsf [loop], mksf [loop]); } //形状(シェル)を生成 for(loop=1;loop<=max;loop++){ Shell=Generate.Skeleton(Body); GenerateShell(Shell,mksf[loop]); } }
【0034】(並列タスク型並列処理)(1)から
(3)までの3つの処理を別々のスレッド実行関数とし
パイプライン処理するようにした(プログラム例参
照)。すなわち、スレッド1は、3次元形状モデルの曲
面と境界曲線をDESIGNBASE形式でdbsfに
出力する。スレッド2は、スレッド1が出力したDES
IGNBASE形式の曲面と境界曲線をMiniKernelで扱
える形式に変換し、mksfに出力する。スレッド3
は、スレッド2で生成した曲面オブジェクトを利用し
て、位相を含めた3次元形状(シェル)を生成する。
【0035】それぞれのスレッドは、自分が処理するべ
きデータが渡されるまでは、待ち状態にあり、データが
渡されたときにだけ処理する。以下に、プログラム例を
示す。エラー処理などは省略する。また、関数名はわか
りやすいものに変更されている。
【0036】
【0037】 Thread1( ){ //形状取得(DESIGNBASEの曲面を得る) for (loop=1;loop<=max;loop++){ //個々の面の幾何情報を得る。 GetSurfaceFromDB (bid, loop, dbsf [loop]); } }
【0038】
【0039】
【0040】(オブジェクト分割型並列処理)データ変
換の対象となる曲面を複数のスレッド実行関数で処理す
る。それぞれのスレッドは、(1)から(3)までの処
理を行う。すなわち、それぞれのスレッドは、同一の処
理を行うが、扱う形状データが異なっている。オブジェ
クトを分割するときの目安はCPU数とする。以下に、
プログラム例を示す。エラー処理などは省略する。ま
た、関数名は、わかりやすいものに変更されている。
【0041】 Para2( ){ // Model オブジェクトを生成する。 Model=Generate.Model( ); // Body オブジェクトを生成する。 Body=Generate.Body(Model); //作業領域を確保する。 dbsf=new DBSurface [max+1]; mksf=new MKSurface [max+1]; ここでは、CPU数を2とする。 //2個の子スレッドを生成する。 start1=1;end1=max/2; CreateThread (ThreadFunc,start1,end1); start1=end+1;end2=max; CreateThread (ThreadFunc,start2,end2); }
【0042】 ThreadFunc(int start,int end){ //形状取得(DESIGNBASEの曲面を得る) //startからendまでの形状を処理する。 for (loop=start;loop<=end;loop++){ //個々の面の幾何情報を得る。 GetSurfaceFromDB (bid,loop,dbsf [loop]); } //曲面の形式変換 for(loop=start;loop<=end;loop++){ TranslateForm (dbsf[loop],mksf [loop]); } //形状(シェル)を生成 for(loop=start;loop<=end;loop++){ Shell=Generate.Skeleton(Body); GenerateShell(Shell,mksf[loop]); } }
【0043】次に、以上に述べたTranslatorの実装法に
ついて、どの程度並列化による実行時間の短縮が図れる
かどうかを説明する。図5は、逐次処理,並列タスク型
並列処理,オブジェクト分割型並列処理の3種類につい
てTranslatorの動作と時間との関係を示している。逐次
処理では、データ交換するすべての曲面オブジェクトに
対して、形状取得,形式変換,形状生成が順番に実行さ
れるので、それぞれのフェーズでかかった時間が総実行
時間となる。並列タスク型並列処理では、まず、処理の
最初で形状取得のためのスレッド(スレッド1),形式
変換のためのスレッド(スレッド2),形状生成のため
のスレッド(スレッド3)を起動される。スレッド1か
らスレッド3までは、それぞれの入出力が同期してお
り、データが到着するかどうかをそれぞれのスレッドが
監視している。それぞれのスレッドで扱えるデータが到
着すると同時に処理を行う。いわゆる、パイプライン方
式で動作する。それぞれのスレッドは、処理すべきデー
タがなくなったところで自滅する。従って、スレッド1
での処理が開始されたときから、スレッド3が自滅する
までが、総実行時間となる。オブジェクト分割型並列処
理では、CPU数に合わせて、オブジェクトを分割し、
スレッド関数をCPU数だけ立ち上げ、個々のスレッド
が割り当てられたオブジェクトを処理する。データ交換
の一連の処理を複数のスレッドで並列に実行されるた
め、総実行時間は、スレッドの立ち上げが開始されたと
きからスレッドがすべて終了したときまでの時間とな
る。
【0044】曲面変換の総実行時間Tは、次式で表現す
ることができる。 T=(t×n)×(1−C)+o …(1) ただし、tは1枚の曲面変換に費やす時間、nは処理す
る曲面数、C(C≦1とする)は並列性による寄与率、
oは同期などの並列オーバーヘッドとする。例えば、逐
次処理の場合には、C=0、o=0なので、総実行時間
sは、 Ts=(t×n) …(2) である。
【0045】並列処理方式に対する逐次処理との速度比
は、図6のようになると予想できる。図6は、横軸はデ
ータ変換する曲面の数を、縦軸は逐次処理との速度比を
示した。比は、1より大きければ、並列処理が逐次処理
よりも高速であることを示す。すなわち、逐次処理の総
実行時間をTs、並列処理の総実行時間をTpとしたとき
に、
【0046】
【数1】
【0047】
【数2】
【0048】で表すことができるので、これを式(3)
に代入すると、 o<Ts×C 並列処理が高速 o=Ts×C 速度は同一 o>Ts×C 逐次処理が高速 …(5) が得られる。
【0049】式(5)より、一定の曲面数をデータ変換
するときには、並列化により短縮された時間Ts×Cが
並列オーバーヘッドよりも多いときには、並列処理が高
速になることが分かる。逆に、並列化により短縮された
時間Ts×Cが並列オーバーヘッドよりも少ないときに
は、逐次処理が高速になる。また、処理するべき曲面数
が増加したときは、処理時間であるTsは増大するため
s×Cも増大し、並列オーバーヘッドoよりも大きく
なったところで、並列処理が高速になることが予想でき
る。つまり、図6の横軸の曲面数AからEまでが単調増
加すると仮定すると、ある数以上の曲面を処理すると、
並列オーバーヘッドよりも並列化により短縮された時間
s×Cが多くなり、並列処理が高速になることが予想
できる。
【0050】次に、以上に説明したTranslatorを利用
し、3次元形状のデータ交換に要する時間を計測,評価
した結果について説明する。実行時間を計測する計算機
は、CPUがPentiumIIプロセッサ(266MH
z)を2個搭載し、メモリ128MBのパーソナルコン
ピュータ(PC)である。OSは、Windows N
T4.0である。また、DESIGNBASEはV7.
0、コンパイラはVC++5.0)を利用した。データ
交換に利用したデータは、平面,トーラス面,スイープ
面の3種類である(図7,図8,図9参照)。それぞれ
のデータをDESIGNBASEの形状生成コマンドで
生成し、その立体形状をMiniKernelに読み込むDESI
GNBASEコマンドを実行し、Translator本体の実行
時間を計測する。面数と時間の関係を得るために、図7
から図9に示した形状をコピーして面数を増やし、それ
ぞれの面数での読み込み時間を計測した。
【0051】表1から表3は、平面,トーラス面,スイ
ープ面を面数が256枚から、16384枚までを逐次
処理,並列タスク型並列処理,オブジェクト分割並列処
理の3種類の方法でMiniKernelへ読み込んだときの実行
時間を計測したものである。なお、単位は秒とする。ま
た。図10は、逐次処理とオブジェクト分割型並列処
理,並列タスク型並列処理との速度比を示している。実
線が逐次処理とオブジェクト分割型並列処理の速度比
を、破線が逐次処理と並列タスク型並列処理の速度比を
示している。
【0052】図10では、横軸が面数を表し、縦軸が速
度比を表す。速度比が1.0以下では、逐次処理が高速
であり、1.0より大きければ並列処理が高速であるこ
とを示す。図10から分かるように、並列タスク型並列
処理では、逐次処理との速度を比較しても速度向上は達
成されていない。並列タスク型並列処理では、オブジェ
クト(曲面形状)がスレッドを渡り歩くパイプライン処
理になり、各スレッドは、オブジェクトの到着を監視す
るために頻繁に同期を取る必要がある。すなわち、同期
にかかる時間やオブジェクトが到着するまでの待ち時間
が並列オーバーヘッドになる。また、処理が並列に行わ
れている時間が長くないときは、並列度が高くないた
め、速度向上は望めない。すなわち、オーバーヘッドを
含めた負荷の均等かがうまくいかないと効率が上がらな
い、典型的な例になった。
【0053】一方、オブジェクト分割型並列処理では、
平面,トーラス面,スイープ面のどの場合でも、曲面数
が2048枚以上で逐次処理よりも高速になることが分
かる。このことから、ある一定以上の曲面処理時間が並
列オーバーヘッドよりも多くなり、並列処理が高速化さ
れたことが実証できた。以上のことから、逐次処理アル
ゴリズムを利用したオブジェクト分割型並列処理では、
変換形状の元になるモデラが再入可能であれば、並列化
効率は高まることが予測できる。また、CPU数が2の
場合に2つのスレッドに処理を分担させることによっ
て、約2倍の高速化が達成された。CPU数がnの場合
には、n個のスレッドに処理を分担すればよいことが予
想できる。このように、オブジェクト分割型並列処理は
データ交換に有効であると考えられる。
【0054】
【表1】
【0055】
【表2】
【0056】
【表3】
【0057】
【発明の効果】上述のように、本出願人は、再入可能な
3次元カーネルMiniKernelを作成し、マルチスレッドプ
ログラミングによる速度評価を行った。MiniKernelを利
用したアプリケーションとして3次元形状のデータ変換
プログラムを作成し、逐次処理,並列タスク型並列処
理,オブジェクト分割並列処理の3種類の方法をインプ
リメントし、平面,トーラス面,スイープ面の面数を変
更して読み込みに要する時間を計測した。アルゴリズム
から並列性を見出す並列タスク型並列処理では、高速化
されなかった。オブジェクトをCPU数分だけ分割する
オブジェクト分割型並列処理では、並列化により速度が
向上された。実験では2CPUのPCを利用し、オブジ
ェクトを2つに分割し処理することで約2倍の速度向上
が図れた。3次元形状処理は、対話的な処理が要求され
るにもかかわらず、計算量も多い。しかも、逐次処理的
なアルゴリズムが主流であり、立体,面,線などのオブ
ジェクトが多数存在する。従って、逐次処理をスレッド
関数として、マルチスレッドで並列化することは容易に
適用することができる。
【0058】以上のように、マルチスレッドプログラミ
ングを利用したオブジェクト分割型並列処理は、3次元
形状処理においても有効であることが実証された。
【図面の簡単な説明】
【図1】 本発明の動作説明をするためのフローチャー
トである。
【図2】 MiniKernelが持つモデル(Model),立体(B
ody),領域(Region),シェル(Shell)などのオブジ
ェクト構造を示す図である。
【図3】 パラメータ空間曲線と3次元空間曲線の関係
を示す図である。
【図4】 本出願人が開発したTranslatorの構成を示す
図である。
【図5】 逐次処理,並列タスク型並列処理,オブジェ
クト分割型並列処理の3種類についてTranslatorの動作
と時間との関係を示す図である。
【図6】 横軸にデータ変換する曲面の数を、縦軸に逐
次処理との速度比を示す図である。
【図7】 評価用の3次元形状(平面)を示す図であ
る。
【図8】 評価用の3次元形状(トーラス面)を示す図
である。
【図9】 評価用の3次元形状(スイープ面)を示す図
である。
【図10】 逐次処理とオブジェクト分割型並列処理,
並列タスク型処理との速度比を示す図である。

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 ある形式で表現された3次元形状を形状
    処理システムに読み込む際に、形状オブジェクトを読み
    込みシステムのCPU数に合わせて分割し、それぞれの
    CPUに読み込み処理を行わせることによって、3次元
    形状の読み込み機能を高速に実現することを特徴とする
    形状処理方法。
  2. 【請求項2】 請求項1に記載の形状処理方法におい
    て、読み込み処理のためにマルチスレッド技術を利用し
    て、3次元形状の読み込みのためのスレッド実行関数を
    作成し、読み込み機能を並列に処理することによって、
    3次元形状の読み込み機能を高速に実現することを特徴
    とする形状処理方法。
  3. 【請求項3】 請求項2に記載の形状処理方法におい
    て、読み込み処理のためにマルチスレッド技術を利用し
    て、3次元形状の読み込みのためのスレッド実行関数を
    2つ作成し、読み込み機能を2つのCPUに並列に実行
    させることによって、3次元形状の読み込み機能を高速
    に実現することを特徴とする形状処理方法。
JP00542199A 1999-01-12 1999-01-12 形状処理方法 Expired - Fee Related JP3847020B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP00542199A JP3847020B2 (ja) 1999-01-12 1999-01-12 形状処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP00542199A JP3847020B2 (ja) 1999-01-12 1999-01-12 形状処理方法

Publications (2)

Publication Number Publication Date
JP2000207434A true JP2000207434A (ja) 2000-07-28
JP3847020B2 JP3847020B2 (ja) 2006-11-15

Family

ID=11610708

Family Applications (1)

Application Number Title Priority Date Filing Date
JP00542199A Expired - Fee Related JP3847020B2 (ja) 1999-01-12 1999-01-12 形状処理方法

Country Status (1)

Country Link
JP (1) JP3847020B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008094001A (ja) * 2006-10-12 2008-04-24 Cmet Inc 積層造形装置と積層造形方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008094001A (ja) * 2006-10-12 2008-04-24 Cmet Inc 積層造形装置と積層造形方法

Also Published As

Publication number Publication date
JP3847020B2 (ja) 2006-11-15

Similar Documents

Publication Publication Date Title
Gueunet et al. Task-based augmented contour trees with fibonacci heaps
Shi et al. A quantitative survey of communication optimizations in distributed deep learning
Haimes et al. EGADSlite: a lightweight geometry kernel for HPC
JP2014006908A (ja) メッシュ化方法およびメッシュ化装置
Blazewicz et al. Scheduling malleable tasks on parallel processors to minimize the makespan
WO2023216915A1 (zh) 一种基于图形处理器的直升机流场数值模拟系统及方法
Eleliemy et al. Efficient generation of parallel spin-images using dynamic loop scheduling
Copik et al. Work-stealing prefix scan: Addressing load imbalance in large-scale image registration
CN116861023B (zh) 一种在三维空间中确定相同几何对象的方法及系统
Zheng et al. Parallel and automatic isotropic tetrahedral mesh generation of misaligned assemblies
Jensen et al. A two-level real-time vision machine combining coarse-and fine-grained parallelism
Moustafa et al. 3D cartesian transport sweep for massively parallel architectures with PARSEC
Ma et al. Fast parallel algorithm for slicing STL based on pipeline
JP2000207434A (ja) 形状処理方法
Al Maruf et al. Optimizing DNNs Model Partitioning for Enhanced Performance on Edge Devices.
Morell-Giménez et al. Efficient tool path computation using multi-core GPUs
Jain et al. Computational anatomy gateway: leveraging xsede computational resources for shape analysis
CN113222099A (zh) 卷积运算方法及芯片
Yau et al. A region-growing algorithm using parallel computing for surface reconstruction from unorganized points
Fletcher et al. A SOA approach to improve performance of metal additive manufacturing simulation
Andreev et al. The introduction of multi-level parallelism solvers in multibody dynamics
CN111325854A (zh) 形状模型修正装置及形状模型修正方法以及存储介质
Cheng et al. DD-graph: a highly cost-effective distributed disk-based graph-processing framework
Xie et al. Parallel acceleration of elas on arm
Louhichi et al. An optimization-based computational method for surface fitting to update the geometric information of an existing B-Rep CAD model

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060418

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060608

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060822

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060822

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090901

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100901

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110901

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120901

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130901

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees