JP6981754B2 - 複数のグラフィックカードの管理 - Google Patents

複数のグラフィックカードの管理 Download PDF

Info

Publication number
JP6981754B2
JP6981754B2 JP2017000119A JP2017000119A JP6981754B2 JP 6981754 B2 JP6981754 B2 JP 6981754B2 JP 2017000119 A JP2017000119 A JP 2017000119A JP 2017000119 A JP2017000119 A JP 2017000119A JP 6981754 B2 JP6981754 B2 JP 6981754B2
Authority
JP
Japan
Prior art keywords
graphic
resource
abstract
data
card
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.)
Active
Application number
JP2017000119A
Other languages
English (en)
Other versions
JP2017126331A (ja
Inventor
ジャン ニコラ
コロンブ ニコラ
バシェ ビクトール
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.)
Dassault Systemes SE
Original Assignee
Dassault Systemes SE
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 Dassault Systemes SE filed Critical Dassault Systemes SE
Publication of JP2017126331A publication Critical patent/JP2017126331A/ja
Application granted granted Critical
Publication of JP6981754B2 publication Critical patent/JP6981754B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/52Parallel processing
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/06Use of more than one graphics processor to process data before displaying to one or more screens
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/08Power processing, i.e. workload management for processors involved in display operations, such as CPUs or GPUs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Processing Or Creating Images (AREA)
  • Image Generation (AREA)

Description

本発明は、コンピュータプログラムおよびコンピュータシステムの分野に関し、より詳細には、複数のグラフィックカードを管理するための方法、システム、およびプログラムに関する。
3次元(3D)シーンをレンダリングするためのコンピュータグラフィックス技法は、コンピュータ画面、テレビ、プロジェクタなどのディスプレイデバイス上で3Dシーンを描くことを目的とする。3Dシーンをレンダリングすることは、3Dレンダリングとも呼ばれる。
3Dレンダリングのためのコンピュータグラフィックス技法は、互いに対話するハードウェア構成要素およびソフトウェア構成要素に依拠し、これらの構成要素は、3Dレンダリングに専用のアーキテクチャを形成する。このアーキテクチャのメインハードウェア構成要素は、いくつかのタイプの計算をより速くするように設計されたアクセラレータであるグラフィックカード(GC)である。GCは、三角形をピクセルに変換することなどのグラフィックス計算に専用である。GCは、1または複数のグラフィックプロセッシングユニット(GPU)を備え、GPUは、GCのグラフィックス計算を実行するチップである。GCは、3Dレンダリングの結果を表示する1またはいくつかのディスプレイデバイスに接続され得る。GCおよびGPUに対する指示は、モニタにコンピュータグラフィックスをレンダリングすることを支援するように設計されたコンピュータプログラムライブラリであるグラフィックライブラリ(GL)を介して送られる。GLは、GCをホストするコンピュータの中央処理装置(CPU)によって実行される(executed)(または実行される(run))。2つの最も有名なGLは、DirectX(C)およびOpenGL(C)である。実際には、GLは、ハードウェア製造業者によってではなく、ハードウェア製造業者によって提供されるハードウェア仕様によりGLを開発するサードパーティによって書かれる。レンダエンジン(RE)は、3Dシーンを入力として取り、1または複数のGCを使用して(マルチグラフィックカードレンダリングの場合に)画面にそれを描くフレームワークである。3Dシーンは、REフレームワークを使用するアプリケーションによって作成される。REは、アプリケーションによって提供される情報をグラフィックリソース(GR)に変換する。GRは、バッファ、テクスチャなどの操作が実行され得るGLによって与えられるオブジェクトである。グラフィックドライバ(GD)は、オペレーティングシステム(OS)とGCの間の通信を可能にするインターフェースを提供するコンピュータプログラムである。実際には、GDは、GC製造業者によって提供される。
マルチGCレンダリングは、アプリケーションが、同一のマザーボードに差し込まれたいくつかのGCを使用してシーンをレンダリングする能力である。マルチGC原理は最新であるにもかかわらず、それには、REフレームワークにおける多くの複雑さがかかわるため、少数のアプリケーションしかそれを使用しない。
マルチグラフィックカードレンダリングを実現する2つの一般的な技法が存在する。両方が、グラフィックドライバ作業に依拠し、レンダエンジンフレームワークには依拠しない。第1の技法は、AMD(商標)によって開発されたnVIDIA(商標)またはCrossFire(商標)によって開発されたSLI(商標)を使用する。基本的に、アプリケーションのREが1つのフレームをレンダリングしている場合、REは、コンピュータ内に1つだけのGCが存在するかのようにGLを使用する。REは、いくつかのGCが存在することを認識していない。GDは、命令を受け取り、それらをGCに拡散する。これは、2つのGCを有するコンピュータの例を示す図1上に示され、1つのGCが、画面の上側部分をレンダリングし、第2のGCが下側部分をレンダリングする。REは、アプリケーションから、GLによって受け取られるGRに変換される命令(例えば、バッファ、テクスチャなど)を受け取り、GLが、1つのGCに関する命令を送る。2つのカード(GC1、GC2)を管理するGDが、SLI(商標)/CrossFire(商標)技法を使用して2つのGCに関する命令を作成して、各GCの各GPU(GC1のGPU1、GC2のGPU2)がどのような情報を処理すべきかを知るようにする。
第2の技法は、第1の技法に基づき、モザイクモードと呼ばれる。モザイクモードは、ディスプレイドライバを使用して結果を複数の画面に拡散させて、より高い解像度でレンダリングする能力を表す。前述した第1の技法とモザイクモードを組み合わせることが、各GCが別個のディスプレイを扱う能力を提供する。
これらの第1の技法および第2の技法は、主として、ゲームアプリケーションにおいて使用されてパフォーマンスを向上させ、または飛行シミュレータにおいて使用されて、適度なパフォーマンスで複数のディスプレイに出力する。
これらの2つの技法に加えて、別の技法が、GLによってレンダリングフィーチャを開示することによって特定のマルチGCを提供する。しかし、この技術は、実験的であり、ハードウェア製造業者およびソフトウェア製造業者によって活用されていない。
マルチGCレンダリングのこれらの技法は、いくつかの欠点を抱える。第1の欠点は、それらが特定のシナリオに、マルチ画面レンダリングに関してモザイクモードに、ビデオゲームに関してSLI(商標)/CrossFire(商標)に限定されることである。事実、これらの技法は、GCに命令をディスパッチするのにGD能力に依拠するが、GDは、各時点で、ディスパッチを実行するために要求されるすべての情報を知っているわけではなく、したがって、これらのソリューションは、アプリケーション開発者によって保持された、いくつかのシナリオにしか当てはまらない。例えば、保持されないシナリオにおいて、1つのGCだけが使用され、アプリケーションは、その他のGCの計算リソースの恩恵を受けることができない。
別の限界は、これらの技法が、レンダリングされる3Dシーン上の1つの視点に限定されることである。このため、視点の変化の際に3Dシーンの表示速度を向上させる、いくつかの視点を並行に計算するためにGPUの計算リソースを活用することが可能でない。
さらなる限界は、特定の命令を特定のGCにアドレス指定することが可能でなく、この特定の命令をREに開示することが可能でないことである。前段で説明されるとおり、REは、いくつかのGCが存在することを認識していない。
このコンテキスト内で、複数のGCの向上された管理の必要性が依然として存在する。特に、管理は、レンダリング中にかかわる1または複数のGCを選択することを可能にしなければならない。
したがって、シーンをレンダリングするために使用されるグラフィックカードの数を変更するためのコンピュータ実施方法が提供される。グラフィックカードは、1または複数のグラフィックプロセッシングユニットを備える。方法は、レンダエンジンに既にロードされているシーンを提供するステップであって、シーンは、シーンのビューをレンダリングするために使用されるべき少なくとも1つのグラフィックデータを備える、ステップ、少なくとも1つのグラフィックデータのグラフィックリソースに関する抽象グラフィックリソースを変更するステップであって、抽象グラフィックリソースは、各グラフィックカードに関してグラフィックリソースの識別子を、各新たに追加されるグラフィックカードに関して前記グラフィックリソースの新たな識別子を追加することによって記憶する、ステップと、各新たに追加されるグラフィックカード上で、グラフィックカードのうちの1つの上に既に記憶されている前記少なくとも1つのグラフィックデータを転送するステップを備える。
方法は、以下のうちの1または複数を備えることが可能である:
− 各新たに追加されるグラフィックカード上で、グラフィックカードのうちの1つの上に既に記憶されている前記少なくとも1つのグラフィックデータを転送するステップは、前記少なくとも1つのグラフィックデータを記憶するグラフィックカードのうちの1つを選択するステップ、選択されたグラフィックカードのGPU上で、前記少なくとも1つのグラフィックデータのデータを取り出すステップ、およびGPUから獲得されたデータを各新たに追加されるグラフィックカードにコピーするステップを備える、
− レンダエンジンは、少なくとも2つの論理層、レンダエンジンに対するアクセスをアプリケーションに提供する上位層、およびグラフィックライブラリに対するアクセスをレンダエンジンに提供する下位層を備え、抽象グラフィックリソースを変更することは、上位層と下位層の間に備えられた抽象層によって実行される、
− 転送するステップは、グラフィックカードのうちの1つを選択することの後、グラフィックライブラリにより、選択されたグラフィックカードのGPU上でデータを要求するステップをさらに備え、前記少なくとも1つのグラフィックデータのデータは、グラフィックライブラリにより要求するステップの結果、選択されたグラフィックカードのGPU上で取り出される、
− 抽象グラフィックリソースを変更するステップの前に、下位層による、グラフィックライブラリ上で各新たに追加されるグラフィックカードに関する識別子にアクセスするステップ、および各新たに追加されるグラフィックカードの識別子を抽象層に提供するステップを備える、
− 変更された抽象グラフィックリソースは、提供された識別子と一緒にグラフィックリソースの識別子を記憶する、
− 抽象グラフィックリソースを変更するステップは、抽象グラフィックリソースを記憶するテーブルを変更するステップをさらに備え、抽象グラフィックリソースを変更するステップは、変更されるべき抽象グラフィックリソースを記憶するテーブルに対するアクセスをレンダエンジンに提供するステップを備える。
前述のことを実行するための指示を備えるレンダエンジンコンピュータプログラムがさらに提供される。
レンダエンジンコンピュータプログラムが記録されているコンピュータ可読ストレージメディアがさらに提供される。
メモリに結合され、メモリにレンダエンジンコンピュータプログラムが記録されている処理回路を備えるシステムがさらに提供される。
次に、本発明の実施形態が、非限定的な例として、添付の図面を参照して説明される。
マルチGC表示を実行するための従来技術の方法を示す流れ図である。 本発明の例を示す流れ図である。 抽象グラフィックリソースを扱うためのテーブルの作成の例を示す図である。 抽象グラフィックリソースの作成の例を示す図である。 抽象グラフィックリソースの管理のためのテーブルの例を示す図である。 グラフィックデータに対して実行される操作の例を示す図である。 コンピュータシステムの例を示す図である。
図2の流れ図を参照すると、シーンをレンダリングするために使用される複数のグラフィックカード(GC)を管理するためのコンピュータ実施方法が提案される。GCは、1または複数のグラフィックプロセッシングユニット(GPU)を備え得る。方法は、レンダエンジンに既にロードされているシーンを提供することを備える。シーンは、3次元(3D)シーンであることが可能である。シーンは、シーンのビューをレンダリングするために使用される1または複数のグラフィックデータを備える。方法は、その少なくとも1つのグラフィックデータに関して抽象グラフィックリソースを変更することをさらに備える。抽象グラフィックリソースは、3Dシーンのレンダリングにかかわる各グラフィックカードに関して3Dシーンの所与のグラフィックリソースの識別子を記憶する。抽象グラフィックリソースの変更は、各新たに追加されるグラフィックカードに関してグラフィックリソースの新たな識別子を追加することによって実行される。方法は、各新たに追加されるグラフィックカード上で、グラフィックカードのうちの1つの上に既に記憶されている1または複数のグラフィックデータを転送することも備える。
そのような方法は、現在のグラフィックライブラリ(GL)を使用しながら、複数のグラフィックカード(GC)の管理を向上させる。特に、本発明は、アプリケーションが動作しながら、1または複数のさらなるグラフィックカードを追加することを可能にする。例えば、アプリケーションが、2つのグラフィックカード上で2つの異なる視点から木を描く場合、その木のグラフィックリソースは、両方のグラフィックカード上にある必要がある。第1のグラフィックカード上で、バッファが、リソース名N1を有し、第2のものにおいて、リソース名N2を有する。このことは、レンダエンジンの各部分が、複雑さを扱い、両方のグラフィックカードに対処するのにすべてのレンダリング命令を複製しなければならないため、多くの複雑さをもたらす。次に、レンダリングされるべき6つのさらなる視点を有する同一の例を取ると、(i)単一のオブジェクト「木」に関する6つのリソース名を管理すること、および(ii)レンダリングに参加する6つのさらなるグラフィックカードを追加することが非常に難しくなる。本発明は、各グラフィックリソースに関して抽象グラフィックリソースを使用して、レンダエンジンが、リソース名を操作する代わりに、グラフィックデータに関する抽象グラフィックリソースを操作するだけであるようにする。このため、抽象グラフィックリソースに対するアクセスがレンダエンジンに与えられることを所与として、各内部命令(例えば、特定の表示をレンダエンジンに要求するアプリケーションの)は、グラフィックカード特有のリソース名をそれにマッチする抽象ハンドルによって置き換えることによって変更される。レンダエンジンは、前述の複雑さにもはや対処せず、それが受け取るすべてのレンダリング命令をもはや複製する必要がない。その結果、新たなグラフィックカードを追加すること、グラフィックカードから複数のグラフィックカードに切り換えることが実現可能になる。さらなる利点が、後段において説明される。
方法は、コンピュータ実施される。このことは、方法のステップ(または実質的にすべてのステップ)が、少なくとも1つのコンピュータ、または任意のシステムによって同様に実行されることを意味する。このため、方法のステップは、コンピュータによって、場合により、完全に自動的に、または半自動的に実行される。例において、方法のステップの少なくともいくつかをトリガすることは、ユーザ−コンピュータ対話を介して実行されることが可能である。要求されるユーザ−コンピュータ対話のレベルは、予測される自動性のレベルに依存し、ユーザの所望を実施する必要性とバランスがとられることが可能である。例において、このレベルは、ユーザ定義されること、および/または事前定義されることが可能である。
方法のコンピュータ実施の通常の例は、この目的のために適応されたシステムで方法を実行することである。システムは、メモリに結合されたプロセッサと、複数のグラフィックカードとを備え得る。レンダエンジン、およびシーンを表すデータが、メモリ上に記憶されることが可能であり、レンダエンジンは、CPU上で動作することが可能である。より一般的に、メモリには、方法を実行するための指示を備えるコンピュータプログラムが記録されていることが可能である。メモリは、データベースを記憶することも可能である。メモリは、場合により、いくつかの物理的な別々の部分(例えば、プログラムに関して1つ、場合により、データベースに関して1つ)を備える、そのようなストレージのために適応された任意のハードウェアである。「データベース」によって意味されるのは、探索および取出しのために編成されたデータ(すなわち、情報)の任意の集まり(例えば、所定の構造化言語、例えば、SQLに基づく、例えば、リレーショナルデータベース)である。メモリ上に記憶される場合、データベースは、コンピュータによる迅速な探索および取出しを可能にする。データベースは、事実、様々なデータ処理操作に関連してデータの記憶、取出し、変更、および削除を容易にするように構造化される。データベースは、その各々が1または複数のフィールドから成るレコードに細分され得るファイル、またはファイルのセットから成ることが可能である。フィールドは、データストレージの基本単位である。ユーザは、主にクエリを介してデータを取り出すことが可能である。キーワードおよびソートコマンドを使用して、ユーザは、使用されているデータベース管理システムの規則によりデータの特定の集合を取り出すこと、またはそのような集合に関するレポートを作成することを行うように多くのレコードにおけるフィールドを探索すること、再配置すること、グループ化すること、および選択することを迅速に行うことができる。
方法は、グラフィックデータを操作し、例えば、グラフィックデータは、モデル化されたオブジェクトであることが可能である。モデル化されたオブジェクトは、異なる種類のデータ、例えば、CADオブジェクト、PLMオブジェクト、PDMオブジェクト、CAEオブジェクト、CAMオブジェクト、CADデータ、PLMデータ、PDMデータ、CAMデータ、CAEデータによって定義されることが可能である。グラフィックデータは、モデル化されたオブジェクトを表すための任意のデータである。
例えば、CADシステムを使用することによって獲得される3Dシーンのコンテキストにおいて、モデル化されたオブジェクトは、通常、例えば、部分などの製品、もしくは部分のアセンブリ、または、場合により、製品のアセンブリを表す3Dモデル化されたオブジェクトであることが可能である。「3Dモデル化されたオブジェクト」によって意味されるのは、その3D表現を可能にするデータによってモデル化される任意のオブジェクトである。3D表現は、すべての角度から部分を見ることを可能にする。例えば、3Dモデル化されたオブジェクトは、3D表現された場合、その軸のいずれかを中心に、またはその表現が表示される画面における任意の軸を中心に扱われ、回転させられることが可能である。このことは、特に、3Dモデル化されていない、2Dアイコンを排除する。3D表現の表示は、設計を容易にする(すなわち、設計者が彼らのタスクを統計的に実現する速度を増加させる)。製品の設計は、製造プロセスの一部であるので、このことは、産業における製造プロセスをスピードアップする。3Dモデル化されたオブジェクトは、例えば、CADソフトウェアソリューションまたはCADシステムでその仮想設計を完了したことに続いて、現実世界において製造されるべき、(機械)部分、もしくは部分のアセンブリ、またはより一般的に任意の剛体アセンブリ(例えば、モバイル機構)などの製品の形状を表すことが可能である。CADソフトウェアソリューションは、航空宇宙、建築、建設、消費財、ハイテクデバイス、産業機器、輸送、海洋、および/または海上石油/ガス生産もしくは輸送を含む、様々な、限定されない産業分野における製品の設計を可能にする。このため、方法によって設計される3Dモデル化されたオブジェクトは、地上の乗り物の部分(例えば、自動車機器および軽トラック機器、レース用自動車、オートバイ、トラックおよびモータ機器、トラックおよびバス、列車を含む)、空の乗り物の部分(例えば、機体機器、航空宇宙機器、推進機器、防衛用製品、航空会社機器、宇宙機器を含む)、海軍の乗り物の部分(例えば、海軍機器、商船、海上機器、ヨットおよび作業船、船舶機器を含む)、一般的な機械部分(例えば、産業製造機械、重量のあるモバイル機械もしくは機器、インストールされた機器、産業機器製品、製造された金属製品、タイヤ製造製品を含む)、電子機械部分もしくは電子部分(例えば、家庭用電子機器、セキュリティ製品および/または制御製品および/または計器製品、計算機器および通信機器、半導体、医療デバイスおよび医療機器を含む)、消費財(例えば、家具、住宅製品および庭製品、レジャー製品、ファッション製品、耐久消費財小売業者の製品、織物製品小売業者の製品を含む)、パッケージング(例えば、食品パッケージングおよび飲料パッケージングおよびタバコパッケージング、美容パッケージングおよびパーソナルケアパッケージング、世帯製品パッケージングを含む)などの任意の機械部分であることが可能な産業製品を表すことが可能である。
PLMによってさらに意味されるのは、物理的な製造される製品(または製造されるべき製品)を表現するモデル化されたオブジェクトの管理のために適応された任意のシステムである。このため、PLMシステムにおいて、モデル化されたオブジェクトは、物理的なオブジェクトの製造に適したデータによって定義される。これらは、通常、寸法値および/または公差値であることが可能である。オブジェクトの正しい製造のために、事実、そのような値を有する方が良い。
CAMによってさらに意味されるのは、製品の製造データを管理するために適応された、ソフトウェアまたはハードウェアである、任意のソリューションである。製造データは、一般に、製造すべき製品、製造プロセス、および要求されるリソースと関係するデータを含む。CAMソリューションは、製品の製造プロセス全体を計画し、最適化するのに使用される。例えば、それは、CAMユーザに実現可能性、製造プロセスの持続時間、または接続プロセスの特定のステップにおいて使用されることが可能な特定のロボットなどのリソースの数に関する情報を提供することができ、このため、管理または要求される投資に関する決定を可能にする。CAMは、CADプロセスおよび潜在的なCAEプロセスの後の後続のプロセスである。そのようなCAMソリューションは、商標、DELMIA(登録商標)の下でダッソーシステムズ社によって提供される。
CAEによってさらに意味されるのは、モデル化されたオブジェクトの物理的な振舞いの解析のために適応された、ソフトウェアまたはハードウェアである、任意のソリューションである。よく知られ、広く使用されるCAE技法が、モデル化されたオブジェクトを、物理的な振舞いが数式を介して計算され、かつシミュレートされ得る要素に分割することが通常、かかわる有限要素法(FEM)である。そのようなCAEソリューションは、商標、SIMULIA(登録商標)の下でダッソーシステムズ社によって提供される。別の成長しているCAE技法には、CAD形状データなしに物理の様々な分野からの複数の構成要素から構成される複雑なシステムのモデル化および解析がかかわる。CAEソリューションは、製造すべき製品のシミュレーションを可能にし、このため、製造すべき製品の最適化、向上、および検証を可能にする。そのようなCAEソリューションは、商標、DYMOLA(登録商標)の下でダッソーシステムズ社によって提供される。
PDMは、製品データ管理を表す。PDMソリューションによって意味されるのは、特定の製品と関係するすべてのタイプのデータを管理するために適応された、ソフトウェアまたはハードウェアである、任意のソリューションである。PDMソリューションは、製品のライフサイクルにかかわるすべての当事者、すなわち、主にエンジニアであるが、管理者、財務の人々、販売の人々、および購入者も含む当事者によって使用されることが可能である。PDMソリューションは、一般に、製品指向のデータベースに基づく。それは、当事者が、彼らの製品に関する一貫性のあるデータを共有することを可能にし、したがって、当事者が相違するデータを使用するのを防止する。そのようなPDMソリューションは、商標、ENOVIA(登録商標)の下でダッソーシステムズ社によって提供される。
図7は、システムの例を示し、システムは、コンピュータシステム、例えば、ユーザのワークステーションである。
例のシステムは、内部通信バス1000に接続された中央処理装置(CPU)1010と、バスにやはり接続されたランダムアクセスメモリ(RAM)1070とを備える。システムには、バスに接続されたビデオランダムアクセスメモリ1100に関連付けられるグラフィカルプロセッシングユニット(GPU)1110がさらに提供される。ビデオRAM1100は、当技術分野においてフレームバッファとしても知られる。大容量ストレージデバイスコントローラ1020が、ハードドライブ1030などの大容量メモリデバイスに対するアクセスを管理する。コンピュータプログラム指示およびデータを有形で実現するのに適した大容量メモリデバイスは、例として、EPROM、EEPROM、およびフラッシュメモリデバイスなどの半導体メモリデバイス、内部ハードディスクおよびリムーバブルディスクなどの磁気ディスク、光磁気ディスク、ならびにCD−ROMディスク1040を含む、すべての形態の不揮発性メモリを含む。以上のいずれも、特別に設計されたASIC(特定用途向け集積回路)によって補足されること、またはそのようなASICに組み込まれることが可能である。ネットワークアダプタ1050が、ネットワーク1060に対するアクセスを管理する。システムは、カーソル制御デバイス、キーボード、または類似したものなどの触覚デバイス1090も含むことが可能である。カーソル制御デバイスが、システムにおいて、ユーザが、ディスプレイ1080上の任意の所望される位置にカーソルを選択的に位置付けることを許すために使用される。さらに、カーソル制御デバイスは、ユーザが様々なコマンドを選択すること、および制御信号を入力することを可能にする。カーソル制御デバイスは、システムに制御信号を入力するためのいくつかの信号生成デバイスを含む。通常、カーソル制御デバイスは、マウスであることが可能であり、マウスのボタンが信号を生成するのに使用される。あるいは、またはさらに、システムは、センシティブパッドおよび/またはセンシティブ画面を備えることが可能である。
コンピュータプログラムは、コンピュータ、例えば、図7のシステムによって実行可能な指示を備えることが可能である。コンピュータプログラムの指示は、前述のシステムに方法を実行させる。プログラムは、システムのメモリを含む、任意のデータストレージメディア上に記録可能であることが可能である。プログラムは、例えば、デジタル電子回路において、もしくはコンピュータハードウェア、コンピュータファームウェア、コンピュータソフトウェアにおいて、またはそれらの組合せにおいて実施されることが可能である。プログラムは、装置、例えば、プログラマブルプロセッサによって実行されるようにマシン可読ストレージデバイスにおいて有形で実現された製品として実施されることが可能である。方法ステップは、入力データを操作すること、および出力を生成することによって方法の機能を実行するように指示のプログラムを実行するプログラマブルプロセッサによって実行されることが可能である。このため、プロセッサは、プログラマブルであって、データストレージシステム、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスからデータおよび指示を受け取るように、かつそれらにデータおよび指示を伝送するように結合されることが可能である。アプリケーションプログラムは、高レベルの手続きプログラミング言語もしくはオブジェクト指向プログラミング言語において、または所望される場合、アセンブリ言語もしくはマシン言語において実施されることが可能である。いずれにしても、言語は、コンパイラ型言語またはインタプリタ型言語であることが可能である。プログラムは、完全インストールプログラムまたは更新プログラムであることが可能である。システムにプログラムを適用することは、いずれにしても、方法を実行するための指示をもたらす。
図2の流れ図を再び参照すると、本発明による複数のグラフィックカードを管理するためのコンピュータ実施方法の例が説明される。
ステップS200において、3次元(3D)シーンが提供され、3Dシーンが、レンダエンジン(RE)にロードされる。3Dシーンは、3Dシーンのビューをレンダリングするために使用されるべき少なくとも1つのグラフィックデータを備える。レンダエンジン(レンダリングエンジンとも呼ばれる)は、アプリケーションの要求があると表示されるべき画像を生成するフレームワークである。例えば、CADシステムのCADアプリケーションが、入力として3Dモデル化されたオブジェクトの3Dシーンをレンダエンジンに提供し、レンダエンジンが、CADシステムの1または複数のグラフィックカードを使用して画面に3Dシーンを描く。フレームワークは、アプリケーションが表示されることを要求するデータを入力として取り、かつ表示され得る画像を出力するソフトウェア構成要素として実施される。
通常のレンダエンジンは、当技術分野において知られているとおり、レンダエンジンの実施詳細を隠すためにいくつかの論理層のコードを包含する。各層が、他の層、システムのハードウェア構成要素、またはシステムによって実行されるアプリケーションと通信するための機能およびインターフェースのセットを提供する。論理層の数は、様々であることが可能である。上位層nは、層n−1に依拠し、以下同様である。層n−1は、層nと比べてハードウェアにより近い。
本発明の例において、レンダエンジンは、少なくとも3つの論理層、すなわち、上位層、下位層、および抽象層を備える。上位層は、レンダエンジンに対するアクセスをアプリケーション(例えば、CADアプリケーション)に提供することを目的とし、例えば、上位層は、APIなどのインターフェースを備える。上位層は、3Dシーンを提供するためにアプリケーション自体によってアクセスされ得る。下位層は、当技術分野において知られているとおり、ディスプレイにコンピュータグラフィックスをレンダリングするのを支援するように設計されたコンピュータプログラムライブラリであるグラフィックライブラリに対するアクセスをレンダエンジンに提供する。抽象層は、上位層と下位層の間にあり、作成された抽象グラフィックリソースを管理することを目的とする。最下位の層だけが、グラフィックリソースのリソース名に対するアクセスを有し、上位層だけが、抽象グラフィックリソースに対処する。
レンダエンジンは、通常、レンダエンジンコンピュータプログラムと呼ばれるコンピュータプログラムである。したがって、レンダエンジンは、方法のステップが実行される場合に実行される。
レンダエンジンに3Dシーンをロードすることは、3Dシーンを表すデータ(例えば、ファイル)が、レンダエンジンに提供されること、すなわち、レンダエンジンが、そのデータにアクセスし、それに対して計算を実行することができることを意味する。3Dシーンという表現は、少なくとも1つの3Dモデルが配置された3D空間を意味する。システムの見地から、シーンは、3Dシーンのビューをレンダリングするために使用されるべき少なくとも1つのグラフィックデータを備えるファイルである。
次に図3を参照して、抽象グラフィックリソースの作成が次に説明される。
3Dシーンがレンダエンジンにロードされると(S300)、ステップS300においてロードされた3Dシーンの少なくとも1つのグラフィックデータに関して抽象グラフィックリソースが作成される(S310)。作成は、前段で説明される抽象層によって実行されることが可能である。抽象グラフィックリソースは、グラフィックカードのうちの少なくとも1つに関してグラフィックリソースの識別子を記憶する。グラフィックリソースは、グラフィックカードによって表示可能なデータである、すなわち、それは、前にロードされたグラフィックデータからグラフィックライブラリによって計算される。グラフィックデータをグラフィックリソースに変換することは、当技術分野において知られているとおり、実行される。グラフィックデータは、通常、表示されるべき形状を記憶するバイナリアセットであり、それは、テクスチャ、バッファ、照光、シェーディング情報、視点などの、この形状を表すためのオプションのパラメータをさらに備えることが可能である。グラフィックライブラリの見地から、グラフィックリソースは、形状、バッファ、テクスチャ、フレームバッファ、サンプラ、シェーダ、視点などであることが可能であるが、以上には限定されない。シーンは、シーンのビューをレンダリングするために使用されるべき少なくとも1つのグラフィックデータを備え、通常のシーンは、一般に、数千のグラフィックデータを備えるものと理解される。
このため、ステップS310は、システムの各グラフィックカードに関して同一のグラフィックリソースの(ロードされたシーンのグラフィックデータの)識別を実行することを備え、識別されるグラフィックリソースのセットはそれ自体、グラフィックリソースの一意の識別子の役割をする抽象グラフィックリソースで識別される。
ステップS310において、作成される抽象グラフィックリソースは、システムの各グラフィックカード上のグラフィックリソースの一意の識別子を記憶する。実際には、抽象グラフィックリソースは、システムの各グラフィックカードに関する識別子、1つのグラフィックカードに関して1つの識別子をさらに記憶することが可能である。このため、抽象グラフィックリソースは、グラフィックリソースの識別子を、グラフィックリソースがロードされるグラフィックカードの識別子と一緒に扱う。識別子は、数字、英数字などであることが可能であるが、以上には限定されない。例えば、各グラフィックカードが、整数として実施されるキーに結び付けられることが可能であり、その数値は、グラフィックカード1に関して1であり、グラフィックカード2に関して2であり、グラフィックカードnに関してnであり、以下同様である。
グラフィックリソースの識別子は、グラフィックライブラリに対するレンダエンジンのクエリがあると、獲得される。例において、レンダエンジンの下位層が、グラフィックリソースを作成したグラフィックライブラリにアクセスし、グラフィックライブラリが、システムのグラフィックカードのうちの1つの上のグラフィックリソースの識別子を提供する。下位層が識別子を獲得すると、それが抽象層に提供される。好ましくは、抽象グラフィックリソースの作成速度を向上させるために、所与のグラフィックリソースのすべての識別子に一度にクエリが行われる。
実際には、グラフィックカード上のグラフィックリソースの識別子は、リソース名とも呼ばれる。リソース名は、グラフィックデータがグラフィックリソースに変換される時点でグラフィックライブラリによって作成される。
次に、ステップS320において、抽象グラフィックリソースがテーブルに記憶され、例えば、そのテーブルが、システムのメモリ上に記憶される。テーブルは、既に存在することが可能であり、この場合、テーブルは、新たな抽象グラフィックリソースで完成させられる。テーブルがまったく存在しない場合、それが最初に作成され(すなわち、テーブルは、メモリにおいて利用可能である)、次に、新たな抽象グラフィックリソースで完成させられる。実際には、レンダエンジンは、実行される場合、メモリにロードされるソフトウェアであり、実行されるレンダエンジンには、抽象グラフィックリソースを記憶するためのテーブルがついてくる。このため、レンダエンジンには、3Dシーンをロードすることの結果、作成される抽象グラフィックリソースを記憶するテーブルに対するアクセスが提供される(S340)。このようにして、レンダエンジンは、3Dシーンのグラフィックデータを扱うこと(または管理すること)ができる。
次に、ステップS330において、グラフィックリソース(抽象グラフィックリソースを介してシステムの各グラフィックカード上で今や識別されている)が、システムの各グラフィックカード上にコピーされる。グラフィックカード上にコピーされる情報は、グラフィックカードによって活用されることが可能であり、すなわち、グラフィックリソースは、グラフィックカードの少なくとも1つのグラフィカルプロセッシングユニットによって操作が実行され得るグラフィックライブラリによって与えられたオブジェクトである。グラフィックカードにグラフィックリソースをコピーすることは、当技術分野において知られているとおり、実行され、例えば、グラフィックリソースが、グラフィックカードのメモリ上に記憶されることを理解されたい。かつステップS340において、レンダエンジンは、3Dシーンをロードすることの結果、作成された抽象グラフィックリソースを記憶するテーブルにアクセスすることができる。
図4から図6を次に参照して、レンダエンジンがアプリケーションの命令を受け取った場合のステップS300からS330の例が説明される。レンダエンジン命令は、レンダエンジンが実行しなければならないコマンドである。命令は、例えば、特定の色で形状を描くこと、または画面をクリアすることであり得る。命令は、レンダエンジンがどのように構造化されるかに依存して、レンダエンジンを使用するユーザから(例えば、表示要求を実行するアプリケーションを介して)、またはレンダエンジンから直接に来ることが可能である。一般的なレンダエンジンにおいて、命令は、通常、アクション(描く、クリアするなど)と、グラフィックリソース(例えば、描くべき形状グラフィックリソース)を識別する1または複数のリソース名とから成る。本発明において、レンダエンジンの抽象層が、実行されるべき命令において、グラフィックリソースのリソース名を、グラフィックリソースに関連付けられた抽象グラフィックリソースで置き換える。命令は、システムのグラフィックカードの数により実行される。例えば、システムが、8のグラフィックカードを備える場合、命令は、8回、1つのグラフィックカードに関して1つの実行で、実行される。
図4において、抽象グラフィックリソースとリソース名とグラフィックカードとの間の関係が表される。グラフィックデータが、アプリケーションの要求があって、レンダエンジン上にロードされている(3Dシーンをロードする場合)。抽象グラフィックリソースが、グラフィックデータをロードすることの結果、作成されている。抽象グラフィックリソースは、コンピュータシステムの2つのグラフィックカード、すなわち、グラフィックカード1およびグラフィックカード2の上のグラフィックリソース(ロードされたグラフィックデータからグラフィックライブラリによって計算された)を表す。各グラフィックリソースは、リソース名とも呼ばれる一意の識別子を有し、ここで、グラフィックリソースは、グラフィックカード1上のリソース名1と、グラフィックカード2上のリソース名2とを有する。グラフィックカード上にグラフィックリソースをコピーすることは、抽象グラフィックリソースの作成より前に実行されることも可能であり、すなわち、ステップS330が、ステップS310より前に実行されることを理解されたい。ステップS330より前にステップS310を実行することは、グラフィックカード上のグラフィックリソースの関連付けを向上させ、抽象グラフィックリソースの作成および管理も向上させる。
図6は、グラフィックデータがレンダエンジンにロードされた場合、実行されるステップを示す。作成された抽象グラフィックリソースは、グラフィックリソースのnのリソース名を表し、各リソース名がnのグラフィックカードのうちの1つに関連付けられる。グラフィックリソースは、グラフィックカード上にコピーされる。コピーすることが終了されると(ステップS330)、前に作成された(ステップS320)抽象グラフィックリソースがアプリケーションに戻される。リソース名の代わりに抽象グラフィックリソースが使用されることは、抽象グラフィックリソースが複数のグラフィックリソースを表すことを認識していないアプリケーションに透過的である。このため、アプリケーションの変更はまったく要求されず、抽象グラフィックリソースの作成/管理は、レンダエンジンの抽象層によって実行される。抽象層は、作成された抽象グラフィックリソースを上位層に提供するように構成されることが可能である。このようにして、アプリケーションは、アプリケーションがアクセスすることができる上位層経由で新たな抽象グラフィックリソースの作成について直接に通知され得る。このことは、システムに1つだけのグラフィックカードしか存在しないかのように、グラフィックカード管理および作業の複雑さを隠すことを可能にする。
次に図5を参照すると、作成された抽象グラフィックリソースを記憶するため、および管理するために使用されるアーキテクチャの例が次に説明される。この例のアーキテクチャは、テーブルの良好な行を探索するのに使用される抽象グラフィックリソースを有するダブルエントリタビュラ(double entry tabular)と同様であり、グラフィックカード識別子(グラフィックカードに関するキーとも呼ばれる)がテーブルの良好な列を探索するのに使用される。例えば、抽象ハンドル40が、いくつかの列42a〜42cを備えるテーブルの行42を識別することを可能にし、各列は、1つのグラフィックカード識別子を記憶する。次に、列から、グラフィックリソースのすべてのリソース名(すなわち、各グラフィックカード上のリソース名)を獲得することが可能である。実際には、リソース名は、グラフィックカードの識別子と一緒にテーブル上に、例えば、行42a〜42c上に記憶され得る。
次に、2つの異なる視点で3Dシーンを表示するための抽象グラフィックリソース作成および使用の例が説明される。この例において、システムは、2つのグラフィックカードを備え、各グラフィックカードは、1つの視点で3Dシーンを表示することを担う。アプリケーションが、2つの異なる視点で3Dシーンを表示するようレンダエンジンに要求した後、グラフィックライブラリ命令(グラフィックライブラリアクションとも呼ばれる)がレンダエンジンによって受け取られる。前段で見られるとおり、シーン上の視点は、グラフィックライブラリによって与えられ、かつ操作が実行され得るオブジェクトであるグラフィックリソースである。かつこの視点グラフィックリソースは、レンダエンジンに命令を送ることによってアプリケーションによって要求され得る。説明される例において、アプリケーションは、同一のシーン上の2つの視点を要求する命令を送る。レンダエンジンの上位層は、通常、アプリケーションの命令を受け取ることを担い、言い換えると、アプリケーションは、上位層経由でレンダエンジンに対するアクセスを有する。命令が受け取られると、レンダエンジンは、この命令によって関与させられる抽象グラフィックリソースを識別する、例えば、テーブルにおいて抽象グラフィックリソースが探索される。実際には、このことは、レンダエンジンがアプリケーションに、ロードされたグラフィックデータに関連付けられた抽象グラフィックリソースを提供しているために可能にされる。抽象グラフィックリソースのテーブル行が、すべてのグラフィックカード上のリソース名を獲得するために走査され、グラフィックリソースは、知られており、命令は、命令において抽象グラフィックリソースを対応するリソース名によって置き換えることによって実行され得る。命令は、各グラフィックカードに関して、各グラフィックカード上に記憶されたグラフィックリソースのリソース名で実行されることを理解されたい。
抽象グラフィックリソースの削除は、類似した様態で実行される。アプリケーションが、レンダエンジンにグラフィックデータを削除する命令を送る。その命令(またはアクション)が、アプリケーションがレンダエンジンに、例えば、レンダエンジンの上位層を介してアクセスすることができるので、レンダエンジンによって受け取られる。命令は、アプリケーションがグラフィックデータ(グラフィックカード上のグラフィックリソースとしてコピーされた)を抽象グラフィックリソースで識別するので、抽象グラフィックリソースにアドレス指定される。次に、レンダエンジンが、抽象グラフィックリソーステーブルにクエリを行い、システムのグラフィックカード上のグラフィックリソースの識別子を識別する。次に、命令は、抽象グラフィックリソースを、テーブルにおいて見出されるグラフィックリソースによって置き換えることによって変更されることが可能であり、新たな命令が、抽象グラフィックリソースに関連付けられた各グラフィックリソースに関して作成される。その結果、削除命令が、実行されることが可能であり、グラフィックリソースが、グラフィックカードメモリから消去されることが可能である。
図2の流れ図を再び参照すると、ステップS210において、各新たに追加されるグラフィックカードに関する識別子が提供される。前段で既に説明されるとおり、グラフィックカードの識別子は、数字、英数字であることが可能であるが、以上には限定されず、グラフィックリソースの識別子は、グラフィックライブラリに対するレンダエンジンのクエリがあると、獲得される。
新たなグラフィックカードという表現は、1または複数のさらなるグラフィックカードがコンピュータ(例えば、図7のシステム)上で利用可能であることを意味し、さらなるグラフィックカードは、3Dシーンの現在のレンダリングにかかわらないグラフィックカードである。
新たなグラフィックカードは、いくつかの方法で追加され得る。例えば、グラフィックカードの論理活性化が使用されることが可能であり、例えば、グラフィックカードは、コードの一部分のアクションがあると、活性化される。別の例として、物理活性化が実行されることが可能であり、例えば、グラフィックカードは、GCをホストするシステムに差し込まれる。
ステップS210は、レンダエンジンを使用するアプリケーションの要求があると、実行されることが可能である。例えば、3Dシーン上のさらなる視点が、これらのさらなる視点をレンダリングするために新たなグラフィックカードが使用され得ることを認識しているアプリケーションによって要求される。あるいは、アプリケーションは、新たなグラフィックカードが利用可能であることを認識していないが、レンダエンジンは認識しており、それが、これらの新たなグラフィックカードを活用するようアプリケーションに提案することができる。アプリケーションおよび/またはレンダエンジンが、1または複数の新たなグラフィックカードを論理的に活性化するための能力を有することが可能である。
次に、1または複数の新たなグラフィックカードが、ステップS220において選択される。新たなグラフィックカードの選択が、アプリケーションのニーズおよび要件により実行される。例えば、3つの新たな視点がレンダリングされなければならない場合、3つの新たなグラフィックカードが選択される。このため、新たなグラフィックカードの選択は、レンダリングすべき新たな視点の数により新たなグラフィックカードの数を選択することを備え得る。新たなグラフィックカードの選択は、各新たなグラフィックカードのハードウェア容量により実行されること(または追加で実行されること)が可能であり、例えば、より高性能のGPUまたは最大のメモリを有するGCが選択される。
新たなグラフィックカードが選択され、使用されることになる場合、レンダエンジンに、アプリケーションによって、レンダエンジンを構成する特定の命令を使用することによって通知が行われる。このため、本発明は、マルチグラフィックカードシステムの管理を大幅に向上させることを可能にし、このため、シーンの動的なレンダリングを向上させることを可能にする。
1または複数のグラフィックカードが選択されると、3Dシーンの各グラフィックデータの抽象グラフィックリソースが、各新たに追加されるグラフィックカードに関してグラフィックリソースの新たな識別子を追加することによって変更される(S230)。新たに追加されるグラフィックカードは、ステップS220において選択されるものであることを理解されたい。各新たに追加されるグラフィックカード上の各グラフィックリソースに関する新たな識別子の作成が、図5および図6に関連して説明されるとおり実行される。
3Dシーンのグラフィックリソースが、抽象グラフィックリソースを介して各新たなGCに関して識別されたので、GC上に既に記憶されているグラフィックデータが、各新たに追加されるグラフィックカード上に転送される(S240)。転送という用語は、グラフィックデータのコピーが各新たに追加されるグラフィックカード上に記憶されることを意味する。
転送は、当技術分野において知られているとおり、グラフィックライブラリの能力によりアプリケーションによって提供される元のグラフィックデータから実行されることが可能である。
あるいは、転送は、グラフィックカードのうちの1つの上に既に記憶されているグラフィックデータをこのグラフィックカードからすべての新たなグラフィックカード(ステップS220における選択された1つ)にコピーすることによって実行されることが可能である。この場合、シーンのグラフィックデータを既に記憶しているグラフィックカードのうちの1つを選択することが実行される。転送が実行される方法は、グラフィックデータのタイプに依存して様々であることが可能である。最も一般的なシナリオ(グラフィックデータのほとんどが、このシナリオを使用して転送され得る)である第1の例において、グラフィックデータは、選択されたグラフィックカードのGPUから取り出される。実際には、このことは、グラフィックデータが、GPUのメモリに記憶されること、およびそれらが、このメモリから新たなグラフィックカードのメモリにコピーされることを意味する。この操作は、当技術分野において知られているとおり、グラフィックライブラリによって提供される専用の機能を使用して行われる。その結果、各新たに追加されるグラフィックカード上で物理リソースが作成される。第2の例において、グラフィックデータは、前述の例と同様にGPUから直接に取り出されることが不可能であり、例えば、グラフィックデータは、バッファまたはテクスチャである。そのようなタイプのグラフィックデータに対して、グラフィックライブラリの特定の機能がそのデータを得るのに使用され、すなわち、特定のグラフィックライブラリ呼出しが、GPUメモリからデータを取り出すために使用される。例えば、グラフィックライブラリにおける機能が、ユーザが、選択されたグラフィックカードのビデオメモリのコンテンツを中央メモリにコピーすることを可能にし、中央メモリが、ユーザがそのデータを別のグラフィックカードにコピーすることを可能にする。グラフィックライブラリの能力に依存して、他の方法が選択され得る。
レンダエンジンの層の間の対話は、図3から図6の例において示される、新たなグラフィックリソースの作成に鑑みて説明されてきた。本発明において、抽象グラフィックリソースは、既に存在し、1または複数の補足的なグラフィックカードが3Dシーンをレンダリングするために使用される場合に変更される。レンダエンジンの層の間の対話は、同一である。このため、各新たに追加されるグラフィックカードの識別子は、レンダエンジンの下位層を介してアクセスされるグラフィックライブラリを使用することによって獲得される。次に、識別子が抽象層に提供される。レンダエンジンの抽象層が、抽象グラフィックリソースを記憶し、管理する。例えば、抽象グラフィックリソースの変更には、抽象グラフィックリソースを記憶するテーブルが変更されること、およびレンダエンジンが、変更されるべき抽象グラフィックリソースを記憶するテーブルに対するアクセスを有することがかかわる。

Claims (10)

  1. シーンをレンダリングするために使用されるグラフィックカードの数を変更するためのコンピュータ実施方法であって、グラフィックカードは、1または複数のグラフィックプロセッシングユニット(GPU)を備え、方法は、
    レンダエンジンに既にロードされているシーンを提供するステップであって、前記シーンは、前記シーンのビューをレンダリングするために使用されるべき少なくとも1つのグラフィックデータを備える、ステップと、
    前記少なくとも1つのグラフィックデータのグラフィックリソースに関する抽象グラフィックリソースを変更するステップであって、前記抽象グラフィックリソースは、各グラフィックカードに関して前記グラフィックリソースの識別子を、各新たに追加されるグラフィックカードに関して前記グラフィックリソースの新たな識別子を追加することによって記憶する、ステップと、
    各新たに追加されるグラフィックカード上で、前記グラフィックカードのうちの1つの上に既に記憶されている前記少なくとも1つのグラフィックデータを転送するステップと
    を備えることを特徴とするコンピュータ実施方法。
  2. 各新たに追加されるグラフィックカード上で、前記グラフィックカードのうちの1つの上に既に記憶されている前記少なくとも1つのグラフィックデータを転送する前記ステップは、
    前記少なくとも1つのグラフィックデータを記憶する前記グラフィックカードのうちの1つを選択するステップと、
    前記選択されたグラフィックカードのGPU上で、前記少なくとも1つのグラフィックデータのデータを取り出すステップと、
    前記GPUから獲得された前記データを各新たに追加されるグラフィックカードにコピーするステップと
    を備えることを特徴とする請求項1に記載のコンピュータ実施方法。
  3. 前記レンダエンジンは、少なくとも2つの論理層、前記レンダエンジンに対するアクセスをアプリケーションに提供する上位層、およびグラフィックライブラリに対するアクセスを前記レンダエンジンに提供する下位層を備え、前記抽象グラフィックリソースを変更する前記ステップは、前記上位層と前記下位層の間に備えられた抽象層によって実行されることを特徴とする請求項2に記載のコンピュータ実施方法。
  4. 転送する前記ステップは、前記グラフィックカードのうちの1つを前記選択するステップの後、
    前記グラフィックライブラリにより、前記選択されたグラフィックカードの前記GPU上でデータを要求するステップをさらに備え、
    前記少なくとも1つのグラフィックデータの前記データは、前記グラフィックライブラリにより要求する前記ステップの結果、前記選択されたグラフィックカードの前記GPU上で取り出されることを特徴とする請求項3に記載のコンピュータ実施方法。
  5. 前記抽象グラフィックリソースを変更する前記ステップの前に、
    前記下位層による、前記グラフィックライブラリ上で各新たに追加されるグラフィックカードに関する識別子にアクセスするステップと、
    各新たに追加されるグラフィックカードの前記識別子を前記抽象層に提供するステップと
    をさらに備えることを特徴とする請求項4に記載のコンピュータ実施方法。
  6. 前記変更された抽象グラフィックリソースは、前記提供された識別子と一緒に前記グラフィックリソースの前記識別子を記憶することを特徴とする請求項5に記載のコンピュータ実施方法。
  7. 前記抽象グラフィックリソースを変更する前記ステップは、前記抽象グラフィックリソースを記憶するテーブルを変更するステップをさらに備え、
    前記抽象グラフィックリソースを変更する前記ステップは、変更されるべき前記抽象グラフィックリソースを記憶する前記テーブルに対するアクセスを前記レンダエンジンに提供するステップを備えることを特徴とする請求項1乃至6のいずれか一項に記載のコンピュータ実施方法。
  8. 請求項1乃至7のいずれか一項に記載の方法を実行するための指示を備えることを特徴とするレンダエンジンコンピュータプログラム。
  9. 請求項8に記載のレンダエンジンコンピュータプログラムが記録されていることを特徴とするコンピュータ可読ストレージメディア。
  10. メモリに結合された処理回路を備えるシステムであって、
    前記メモリは請求項8に記載のレンダエンジンコンピュータプログラムが記録されていることを特徴とするシステム。
JP2017000119A 2015-12-29 2017-01-04 複数のグラフィックカードの管理 Active JP6981754B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP15307165.9 2015-12-29
EP15307165.9A EP3188013B1 (en) 2015-12-29 2015-12-29 Management of a plurality of graphic cards

Publications (2)

Publication Number Publication Date
JP2017126331A JP2017126331A (ja) 2017-07-20
JP6981754B2 true JP6981754B2 (ja) 2021-12-17

Family

ID=55168110

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017000119A Active JP6981754B2 (ja) 2015-12-29 2017-01-04 複数のグラフィックカードの管理

Country Status (4)

Country Link
US (1) US10163186B2 (ja)
EP (1) EP3188013B1 (ja)
JP (1) JP6981754B2 (ja)
CN (1) CN107038679B (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108334317A (zh) * 2018-01-25 2018-07-27 阿里巴巴集团控股有限公司 图形引擎、图形引擎构建方法、更新方法及装置
CN112057852B (zh) * 2020-09-02 2021-07-13 北京蔚领时代科技有限公司 一种基于多显卡的游戏画面渲染方法和系统
CN113407281B (zh) * 2021-06-23 2022-11-11 重庆卡歌科技有限公司 一种基于数据应用的陆海新通道业务动态可视化立体展示方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080211816A1 (en) * 2003-07-15 2008-09-04 Alienware Labs. Corp. Multiple parallel processor computer graphics system
US8797336B2 (en) * 2009-06-30 2014-08-05 Apple Inc. Multi-platform image processing framework
US8723877B2 (en) * 2010-05-20 2014-05-13 Apple Inc. Subbuffer objects
US20120001925A1 (en) * 2010-06-30 2012-01-05 Ati Technologies, Ulc Dynamic Feedback Load Balancing
JP5699755B2 (ja) * 2011-03-31 2015-04-15 富士通株式会社 割当方法、割当装置、および割当プログラム
US9672583B2 (en) * 2011-12-21 2017-06-06 Intel Corporation GPU accelerated address translation for graphics virtualization
US8941670B2 (en) * 2012-01-17 2015-01-27 Microsoft Corporation Para-virtualized high-performance computing and GDI acceleration
US9697579B2 (en) * 2013-06-07 2017-07-04 Apple Inc. Multi-processor graphics rendering
EP3188014B1 (en) * 2015-12-29 2022-07-13 Dassault Systèmes Management of a plurality of graphic cards

Also Published As

Publication number Publication date
US10163186B2 (en) 2018-12-25
JP2017126331A (ja) 2017-07-20
CN107038679A (zh) 2017-08-11
EP3188013A1 (en) 2017-07-05
CN107038679B (zh) 2022-04-01
EP3188013B1 (en) 2022-07-13
US20170186130A1 (en) 2017-06-29

Similar Documents

Publication Publication Date Title
US11334233B2 (en) Generation of a color of an object displayed on a GUI
US11256832B2 (en) Replica selection
JP6721332B2 (ja) 3dモデル化されたアセンブリ上で境界ボックスを生成すること
US10671773B2 (en) Automatic partitioning of a 3D scene into a plurality of zones processed by a computing resource
JP6835484B2 (ja) 類似性基準を用いてデータベースにクエリを実行すること
KR20060070462A (ko) 제품 수명주기 관리 데이터베이스를 이용하여 뷰의오브젝트를 렌더링하는 프로세스 및 시스템
JP2018109948A (ja) パラメトリックビュー関数に基づくデータベースの照会
KR20120031259A (ko) 데이터베이스와 상호작용하는 컴퓨터 지원 설계 시스템의 세션 내에서의 모델링된 객체의 설계
JP6721333B2 (ja) オブジェクトのセットの視点の選択
JP2018022476A (ja) モフォロジー基準によるデータベースの照会
KR20160024825A (ko) 순차적 업데이트의 실행
JP6981754B2 (ja) 複数のグラフィックカードの管理
JP6721330B2 (ja) マルチフィジックスシステムの設計
JP6981753B2 (ja) 複数のグラフィックカードの管理
JP2020115340A (ja) 弱型定義を用いるモデリング
JP7017852B2 (ja) 記述子を用いた3dオブジェクトの位置特定
JP6947503B2 (ja) 量子化を用いた3dオブジェクトの位置特定
US11978147B2 (en) 3D rendering
KR20140063475A (ko) 오브젝트들의 원형 스태거드 패턴의 설계
US20200211296A1 (en) Flexible modeling using a weak type definition

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191213

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210209

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20210510

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210806

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: 20211019

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211118

R150 Certificate of patent or registration of utility model

Ref document number: 6981754

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150