JP5242628B2 - ゲーム開発におけるプログラマーの生産性を向上させる高級言語 - Google Patents

ゲーム開発におけるプログラマーの生産性を向上させる高級言語 Download PDF

Info

Publication number
JP5242628B2
JP5242628B2 JP2010106825A JP2010106825A JP5242628B2 JP 5242628 B2 JP5242628 B2 JP 5242628B2 JP 2010106825 A JP2010106825 A JP 2010106825A JP 2010106825 A JP2010106825 A JP 2010106825A JP 5242628 B2 JP5242628 B2 JP 5242628B2
Authority
JP
Japan
Prior art keywords
data
vsipl
calculation
map
units
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
JP2010106825A
Other languages
English (en)
Other versions
JP2011237893A (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.)
Square Enix Co Ltd
Original Assignee
Square Enix 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 Square Enix Co Ltd filed Critical Square Enix Co Ltd
Priority to JP2010106825A priority Critical patent/JP5242628B2/ja
Priority to US13/094,339 priority patent/US9465666B2/en
Publication of JP2011237893A publication Critical patent/JP2011237893A/ja
Application granted granted Critical
Publication of JP5242628B2 publication Critical patent/JP5242628B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • 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/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5055Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/60Methods for processing data by generating or executing the game program

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Image Generation (AREA)
  • Stored Programmes (AREA)

Description

本発明は,光線と三角形の交差関数によって,VSIPL++APIを拡張する方法及びシステム,並びにプロセッサの代わりにデータマップをアーキテクチャコンピュータユニットへ供給させるシステム及び方法に関する。本発明は,さらに,VSIPL++APIへの新しいネスト型ストリーミングパターンデータに関する。
ゲームコードは,ますます複雑になっている。例えば,Unreal Engine 3は,200から300万のコード列を有する。同時に,ゲーム開発費は急騰している。第7世代のゲーム機の開発費は,シングルプラットフォームに対してほぼ1000万ドルである。これは,第6世代のゲーム機の2倍から3倍の開発費である。クロスプラットフォータイトルに関する費用は,さらに2倍から3倍となり,ほぼ3000万ドルとなる。Ubisoft社のCEO兼会長のイヴギルモットは,開発費は約6000万ドルに上昇すると予期しており,いくつかのAAAタイトルはすでに,この金額を超えた。
ゲームが搭載されるハードウエアの複雑さが,この費用の高騰と複雑さをもたらす主要因である。プロセッサは,1つのコアからXbox360(商標登録)のXenonの3つのコアへ,プレイステーション3(商標登録)のセルボードエンジン(CBE)の9つのコアへとなっている。コア数は次世代のゲーム機においてはさらに増えると予想されている。第7世代のゲームシステムに関して,シングルスレッドでは,デッドロック,タイミングエラー及び同期エラーのような並列コンピューティングに関する問題が生じることがあるため,シングルスレッドは、マルチスレッドコードに変換されなければならない。これらのプログラミングトラップは,過去の少ないコアでのスケーリングでは,今日のゲーム機に大きな課題を生じさせる。
さらに,各並列アーキテクチャは,クロスプラットフォームの配備を困難にさせるため,他とは極端に異なっている。このクロスプラットフォームの配備は,PS3(商標登録)やXbox360(商標登録)用に発売されたものだけでなく,現世代の小型ゲーム機用,又は他のプラットフォームの現世代ゲーム機用に,過去に長年作られてきたゲームの再販も含む。例えば,ファイナルファンタジー(商標登録)がある。これは,任天堂エンターテイメントシステム社(NES)がファミコン用に1987年に発売したものであるが,今ではプレイステーションポータブル(PSP)(商標登録)や他のプラットフォームにおいても利用可能である。CPUを基にしたPSPのMIPSR4000は,さらに大きく進歩し,NESのRicoh2A03と異なっている。
並列言語の試み
ビデオゲーム開発業界は,計算能力の必要性や複雑化の劇的な高まりに対する取り組みだけではなく,並列言語に関連付けられたいくつかの陥りやすい誤りを軽減するのに役立つように,さらに多くの試みがプログラミング言語の開発にかけられている。それによって並列システムの生産性が高まっている。高性能コンピュータ業界において,2002年以来,DARPAは高性能コンピュータシステム(HPCS)計画を支援している。この計画は,‘プログラムの性能,プログラミング,移植性,及びロバスト性の組み合わせ’と規定される生産性において,プログラム生産を増加させようとしている。SUNのFortress,IBMのX10及びCrayのChapelは,すべてHPCSの一環として開発されているプログラム言語である。3つのプログラム言語はすべてグローバルな視点でのプログラミングモデルを使用する。しかしながら,各言語は,それぞれ他の言語と大きく異なっている。Fortressは,プログラムを実行させる言語である。この言語は,数学的な表現とよく似たインタープリター型言語である。X10は,並列サポート構造を加えたJabaの部分集合である。Chapelは,C言語,フォートラン,Jaba,及びAdaを多く取り入れる,コンパイル言語である。
信号処理業界を埋め込む実時間は,1996年に,ベクトル,信号,及び画像処理に関する業界基準のライブラリを取り組み始めた。これは1999年にベクトル,信号,及び画像処理ライブラリ(VSIPL)APIを,2005年にはVSIPL++(対象に適応したVSIPL)を,2006年に並列VSIPL++を構築した。このAPIは,高性能な計算技術を組み込む独創的なソフトウエア(HPEC−SI)により支持されている。HPEC−SIは,産業界,学術界及び政府団体の共同運営である。
学術界では,ZPLのような高水準の並列言語及びShのようなドメイン固有のプログラム言語を作り出している。ZPLは,便利で有用な配列操作ができる高級プログラミング言語である。ZPLは,並列機械間に共通する多くの特徴を有する基礎的抽象計算機を基にしている。これら二つのアイデアは並列化から離れ抽象化する。これは,通信または同期コードを実装するプログラマーを必要とする。これは順に,ZPLプログラムを簡潔にさせ,修正するのを容易にする。Shは,柔軟なシェーダとしてウォータールー大学で開発され,StreaMITは,プログラムのストリーミングアプリケーションを助けるため,MITで開発された。
最後に,グラフィックスの業界ではより柔軟な汎用プログラミング言語に拡張されたシェーダ言語がたくさん作り出されている。これらは,Nvidia(登録商標)のCUDA,KhronosGroupのOpenCL,Shから生まれたCT/RapidMindを含み,OpenCLは,並列プログラミングを簡素化するためにいくつかのハードウエア部から離れて抽象化する低級言語である。OpenCLは,AMDとNvidiaのグラフィックハードウェア上及びx86で使用することができ,CUDAはNvidiaのグラフィック上で作動する。
CT/RapidMindは,商業用に始められ,Shプログラミング言語のバージョンを支援している高級言語である。これは,複数のデータを取り入れた単一のプラグラム(SPMD)型の計算技術を特徴としている。その主要な革新は,‘プログラム’型である。これらは,GPUのシェーダに類似している。‘プログラム’は,2つの様式で実行できる。‘イミディエイトモード’はプログラムを瞬時に実行する。
‘リテインモード’は,‘プログラム’の状態を取り込み,後にそれを実行する。この特徴は,複数の‘プログラム’の集合をメガ‘プログラム’にする。これは独自のコンパイラとランタイムを持っている。‘リテインモード’は,‘タイトバインディング’と‘ルーズバインディング’を特徴としている。‘タイトバインディング’は,出力に影響しないプログラムへの入力データに変わることを意味する。‘ルーズバインディング’は,出力に現れる入力データに変わることを意味する。また‘リテインモード’は,スキャッターギャザープリミティブも有している。
米国特許出願番号2010/0079452の明細書は,kdツリーによるグラフィックハードウェア上の光子マッピングを開示している。国際公開WO2008―016515号パンフレットは,VSIPL++に関するマップを開示している。これらの文書と以下に記す文書は,その全体が参照により本明細書に組み込まれる。
米国特許出願番号2010/0079452 国際公開番号WO2008―016515号パンフレット
BILL THIES, M. K., AND AMARASINGHE, S.2001. Streamit: A language for streaming applications. Tech. rep., Massachusetts Instituteof Technology, August B.L. CHAMBERLAIN, D. CALLAHAN, H. Z. 2007.Parallelprogrammability and the chapel language. International Journal of HighPerformanceComputing Applications 21, 3 (August), 291-312 BRADFORD L. CHAMBERLAIN, SUNG-EUN CHOI, E. C. L. C. L. L. S. W. D.W. 1998. IEEE Computational Science and Engineering5, 3 (September), 76-86 CHARLES, P., GROTHOFF, C., SARASWAT, V.,DONAWA, C., KIELSTRA, A.,EBCIOGLU, K., VON PRAUN, C., AND SARKAR,V. 2005.X10: anobject-oriented approach to non uniform cluster computing. ACMSpecial InterestGroup on Programming Languages, 519-538 CODESOURCERY, L., 2006. Vsipl++specification-parallel specification. Web, April. DOBRA, A., 2009. Ubisoft:Game development will cost $60 million in the future. Web, June. JAMES LEBAK, JEREMY KEPNER, H. H. E. R. 2005. Parallelvsipl++: An open standard software library for high performanceparallelsignal processing. Proceedings of the IEEE 93, 2 (February), 313-330 KIM, H., AND BOND, R. 2009. Multi core software technologies. IEEESignal Processing Magazine 26, 6 (November), 80-89 MCCOOL, M., AND TOIT, S. D. 2004. Meta programmingGPUs with Sh. A.K. Peters, Ltd MCCOOL, M. D. 2006. Data-parallelprogramming on the cell be and the bpu using the rapidmind development platform MELONI,W., 2010. Thebrief - 2009 ups and downs.Web, January. WEILAND,M. 2007. Chapel, fortress andx10: novel languages for hpc. Tech. rep., EPCC, The University of Edinburgh,October
本発明の1つの目的は,拡張並列VSIPL++APIを基礎とするC++言語に関するシステムと方法を提供することである。拡張並列VSIPL++APIは,光線と三角形の交差などの,操作に関するゲームエンジンの基盤から成る。また,拡張並列VSIPL++APIは,データを複合計算ユニットに分散させるために,マップを使用する。複合計算ユニットは,開発しやすく,クロスプラットフォームの配備を容易にすることができるよう,基本的並列実装から機能を分ける。
本発明の第1の側面は,ゲームエンジンのシステム101に関する。システム101は,メモリ102,複合計算ユニット103,及び1又は複数のマップを作り出すマップ手段104を含んでいる。メモリ102は,データベース,RAM,ROM,及びハードデスクを含む様々なメモリを含んでもよい。
マップ手段104は,メモリ102からデータを読み取る。そのデータは,第1の機能を特定し,複合計算ユニット103を実行するようにされている。マップ手段104は,データを複合計算ユニットに分散させることにより計算タスクを第1の機能に割当てるために,1つのマップまたは複数のマップを作り出す。この割当ては,タスクに関連付けられたデータの一部を,タスクを実行する各計算ユニットへ格納することを含む。
そのデータの計算操作を行うタスクを,今から有することになるという意味において,データは計算ユニットに割当てされる。このデータは,好きなだけ主要メモリ上に残すことができる。各計算ユニットは,このデータをチップ上で実行するタイミング,及びこのデータを処理するタイミングを決定する。
本発明の第1の側面の1つの実施形態として,データは第1の機能及び第2の機能を特定する。言い換えれば,本システムは複数の機能を扱う。マップ手段104は,データを複合計算ユニットに分散させることにより計算タスクを第1の機能に割当てるために,1つのマップまたは複数のマップを作り出す。その割当ては,タスクに関連付けられたデータの一部を,タスクを実行する各計算ユニットへ格納することを含む。
本発明の第2の側面は,複合計算ユニットシステムにデータをマッピングする方法に関する。本システムは,特にゲーム用の複合計算ユニット103を含む。本方法は,メモリ102からデータを読み取るステップと,そのデータが第1の機能を特定するステップと,データを複合計算ユニットに分散させることにより計算タスクを第1の機能に割当てるために,1つのマップまたは複数のマップを作り出すステップを含む。このデータは,複合計算ユニットを実行することが予定されている。
本発明の第2の側面の実施形態の1つとして,データは第1の機能及び第2の機能を特定する。
本発明のシステムが計算のためにGPUを使用している場合,このシステムはスクリーンに画像をレンダリングするのに利用される働きのため,同様の計算ユニットを使用している。これは非効率だが,GPUで計算する誰もが,操作しなければならないことの1つである。本発明のマップは,実際の計算ユニットを介して実際に計算するためのデータをマッピングする。これらの計算ユニットは,いくつもの異なる計算アーキテクチャファミリーを基礎とするものであってもよい。例えば,それらは,プロセッサ,GPUでストリーミングしたユニット,またはセル・ブロードバンド・エンジンのシナジェテッィクプロセッサエレメンツ(SPE)であってもよい。
さらに本発明は,光線と三角形の交差関数をVSIPL++APIに伝える。これは,レンダリング及び物理学における多くの事柄の基礎となる関数として重要なものである。この関数は,複数のx86(パワーPCプロセッサ)を介して平行して進行されるか,または複数のSPEを介してセルブロードバンド(PS3)上で進行されるか,またはGPUの全てのストリーミングまたはCUDAユニットを使用するGPU上で進行される。この関数は,複数の異なるタイプのレンダリングアルゴリズムを実装するのに使用される。光線と三角形の交差関数をVSIPL++APIに加えることは,APIにストリーミングパターンのデータを加える必要がある。パターンをストリーミングされたデータは,‘テンポラルマップ’と呼ばれことがある。‘テンポラルマップ‘によれば,二つの異なるストリームデータのネスト型ストリーミングが可能になる。
本発明は,拡張並列VSIPL++APIを基礎とするC++言語に関するシステムと方法を提供する。拡張並列VSIPL++APIは,光と三角形の交差などの,操作に関するゲームエンジンの基盤からなる。また,拡張並列VSIPL++APIは,データを複合計算ユニットに分散させるために,マップを使用する。複合計算ユニットは,開発しやすく,クロスプラットフォームの配備を容易にすることができるよう,基本的並列実装から機能を分割する。
本発明者の知る限りにおいて,本発明は,誰もがC++言語を使ってモンテカルロパストレーサを書くことができ,単一のコードを変更することなく,異なる3つのハードウエアアーキテクチャでモンテカルロパストレーサを実行することができる最初の発明である。
図1は,本発明のブロック図を示す。 図2は,従来のストリーミングパターンのデータを示す。 図3は,本発明の新しいストリーミングパターンの一般的な提案を示す。 図4は,256×256ピクセルで,948個の三角形のスタンフォードバニーを実行した場合のストロングスケーリングによる初期のセル・ブロードバンド・エンジンのスケーリング性能を示すグラフである。縦軸は秒を示し,横軸はSPEの数を示している。 図5は,256×256ピクセルで,948個の三角形のスタンフォードバニーを実行した場合のストロングスケーリングによる初期のスケーリング性能を示すグラフである。縦軸は加速係数を示し,横軸はSPEの数を示している。 図6は,本発明の一形態に係る,図1に示されるコンピュータの構成例を示すブロック図である。
本発明は,光線と三角形の交差操作をVSIPL++APIをもたらす。この操作は,グローバルイルミネーションの基本となり,物理エンジンで使用される交差対象の特殊化でもあるため,ゲーム業界では不可欠である。本発明は,有用なプログラムを実装するAPIの能力を発揮するために,モンテカルロパストレーサを実装することにより,この操作を行う。モンテカルロパストレーサは,どのコードも変更せずに4つの異なるアーキテクチャを実行できる。それぞれのケースにおいて,本発明は,プロセッサ間に目線を配り,三角形に対してそれぞれプロセッサテストを行う。そうすることで,信号処理業界で現在行われているプロセッサの代わりにシステムの計算ユニットへマッピングするために,本発明は,VSIPL++のデータマップを著しく変更する。本発明はまた,各光線に対するすべての三角形のテストを処理するために,APIにネスト型ストリーミングパターンデータを導入する。
本発明の第1の側面は,ゲームエンジンのシステム101に関する。システム101は,メモリ102,複合計算ユニット103,及び1つのマップまたは複数のマップを作り出すマップ104を含む。メモリ102は,データベース,RAM,ROM,及びハードデスクを含む様々なタイプのメモリを含む。
マップ手段104は,メモリ102からデータを読み取る。そのデータは,第1の機能を特定し,複合計算ユニット103を実行することが予定されている。マップ手段104は,データを複合計算ユニットに分散させることで,第1の機能の計算タスクを割当てるため,1つのマップまたは複数のマップを作り出す。その割当ては,タスクに関係するデータの一部を,タスクを実行する予定の各計算ユニットへ格納することを含む。
計算ユニットがそのデータの計算操作を行う責任を有することになるという意味で,データは計算ユニットに割当てされる。このデータは,好きなだけ主要メモリ上に残すことができる。
本発明の第1の側面の1つの実施形態として,データは第1の機能及び第2の機能を特定する。言い換えれば,本システムは複数の機能を扱う。マップ手段104は,データを複合計算ユニット103に分散させることで,第1の機能及び第2の機能に計算タスクを割当てるため,1つのマップまたは複数のマップを作り出す。その割当ては,タスクに関係するデータの一部を,タスクを実行する予定の各計算ユニットへ格納することを含む。
本発明の第2の側面は,複合計算ユニットシステムのためのデータをマッピングする方法に関する。このシステムは,特にゲーム用として複合計算ユニット103を含む。本方法は,以下のステップを含む。第1の機能を特定し,複合計算ユニットシステムを実行する予定のデータをメモリから読み取るステップ(ステップ101)と,データを複合計算ユニットに分散させることで計算タスクを第1の機能に割当てるため,1又は複数のマップを作り出すステップ(ステップ102)を含む。
本発明の第2の側面の実施形態の1つとして,データは第1の機能及び第2の機能を特定する。
例えば,このシステムは,8つのx86プロセッサが組み込まれたx86機を有する。VSIPLの以前のバージョンでは,8つのプロセッサがあり,これらのプロセッサにマップをマッピングしようとする。しかしながら,本発明では,同じシステムのグラフィックカード上でGPUを使って,マッピングの計算をすることができる。GPUは,256以上の計算ユニットを有している。それら256の計算ユニットが実際の仕事をする1つであるとき,本発明は,8つのコアのx86プロセッサではなく,256の計算ユニットにマップを準備することができる。8つのコアのx86プロセッサではなく,256の計算ユニットに仕事を分散させることは,VSIPLの現在のバージョンではできない。
信号処理業界では,一時に起動するのは,ただ1つの計算タイプであるのが一般的である。しかしながら,ゲーム業界では,一度に複数の異なる計算タイプの起動が必要となる。例えば,グラフィック,次に物理学,次にAI,及びI/Oを一度にすべて実行する必要がある。したがって,特定のタスクに割当てされている実際の計算ユニットがどのくらいかをコントロールすることは重要である。
実装されたマップは唯一,物理的プロセッサに対応している。計算ユニットの用語は,実際の計算を実行することを目的とされている。例えば8つのプロセッサを有するx86のシステムは,256のCUDAユニットにインストールされたGPUも有することができる。256のCUDAユニットは,実際の計算をするものである。その時CUDAは,計算ユニットとなる。したがって,本発明のマップは,等しいか又は256以下であるCUDAユニットにデータをマッピングする。VSIPLの以前のバージョンでは,機体にインストールされた強力なGPUなどがあるにもかかわらず,8つのコアを有するx86プロセッサにデータをマップすることができる。他の例として,セルブロードバンドエンジン(CBE)がある。CBE内にはハイパースレッディング(2つのスレッドを実行できる)に似たパワープロセッサエレメント(PPE)及び8つのシナジスティックプロセッサエレメント(SPE)がある。VSIPLの以前のバージョンでは,PPEの2つのスレッドにデータをマップする。本発明では,PPEの2つのスレッドではなく,8つのSPEsにデータをマップする。
並列SIPL++API
並列VSIPL++APIの中心的概念は,並列処理の仕様からアプリケーション機能を独立して表す能力である。これを可能にするメカニズムはマップである。
マップは,計算ノードの集合とそれらのノードがどのように使用されるのかの記述からなる。マップを行える対象は,‘マップ可能’と呼ばれる(非特許文献7)。関数とデータは共に様々な計算ノードにマップされることができる。信号処理業界では,行列,ベクトル,及びテンソルは,マップ可能なデータを頻繁に使用するオブジェクトである。
マッピングは,A,B,及びCを利用可能な計算ノードに分配するメカニズムを危惧することなく,A=B+C(1)のような文を書かせることができる。ここで,A,B及びCは,すでに計算ノードにマップされたマップ可能なオブジェクトである。
プログラマーは並列実装の独立した機能を表現できることから,そのコードはさらに高い移植性を有することになる。この異なるプラットフォームの対象は,コンパイル時間に現れる。上記言語のうち,CT/RapidMindはVSIPL++にとても似ている。それらは共にC++言語で記述されており,並列言語データである。
VSIPL++は,多くの重要な点でCT/RapidMinとは異なる。第1にVSIPL++は,自己最適化のメカニズムのランタイムを有していない。第2にVSIPL++は,マップのデータ構造により多くの焦点をあてている。それは,プログラマーにデータが計算ユニットに分配される方法を管理させる。しかしながら,CT/RapidMindと異なりVSIPL++は,格納と計算の効率化を考慮して,複合的操作をまとめられるように,テンプレート形式を使用する。VSIPL++は,標準化団体の安定した結果を開示する。支援されたVSIPL++の実装は購入することができるが,自身の目的のために維持,改変,修正,修正される実装が自由に分配されることもある。CT/RapidMindは商用製品としてサポートされているが,オープンスタンダードではなく,エンドユーザによって拡張することはできない。
ゲームのための並列VSIPL++API
並列VSIPL++APIは,信号処理業界で有用されるベクトル加算,行列乗算,及び高速フーリエ変換のようなプリミティブを多数提供する。これらのプリミティブの多くは,ゲーム業界においても有用である。しかし,いずれかのAPIの成功の鍵は,有用で大きなプログラムの集合に組み合わせ可能な基本的な機能を提供することである。この目的のために,本発明のシステムは,光線と三角形の交差関数とkdツリー関数の両方を実装している。これら二つの関数はグローバルイルミネーション領域と物理エンジン領域の両方に非常に有用である。光線と三角形の交差関数は,物理エンジンで使用するためにオブジェクトとオブジェクトの交差に一般化される。
貢献度
この働きは,力強い光線と三角形の交差関数を含むため,VSIPL++APIを拡張する。これは,x86,CBE,及びNvidiaGPUアーキテクチャを介して複数の異なるタイプのグローバルイルミネーションアルゴリズムの実装を許容する。発明者の知る限りでは,基礎となる並列アーキテクチャから実装された光線と三角形の交差を抽象化するために,マップのデータ構造が使用されるのは初めてのことである。また,コードを一行も変換することなく3つのアーキテクチャ上でパストレーサを実装するためにマップが正常に使用されることも初めてのことである。この項目では,ホスト又はコプロセッサモデルの使用制限を示し,この制限を説明する。
本発明はさらに,VSIPL++にパターンを転送する新しいネスト型ダブルバッファリングデータも提供する。このストリーミングパターンデータは,異なるループ内に1つのネスト型ループがある状況のいずれにも使用されえる。
またこの働きは,VSIPL++の実装をプロセッサではなく計算ユニットのマップデータに変更する。従来,VSIPL++はプロセッサにマップする。計算ユニットはマッピング関数からを完全に隠れる。本発明は,計算ユニットとしてCBEのSPEs及びGPUのスレッドユニットを公開している。ゲーム環境はVSIPL++からなる信号処理環境とは異なるため,この特徴は重要である。VSIPL++はある任意の一時点において唯一の計算タスクが実行される環境のために設計された。ゲーム環境では,複数の同時シュミレーションが実行できる。例えば,グラフィックエンジンは,AIエンジン,サウンドエンジン,及び物理エンジンなどで同時に実行できる。プログラマーが,実際の計算ユニットにマップできることで,プログラマーは,特定のタスクに割り振られたすべてのシステムリソース以上の割合をより良く制御できる。
並列VSIPL++は,上記で述べた他の高級言語とは大きく異なる。上記の高級言語のうち,インテルのCT/RapidMindは,並列VSIPL++にとても似ている。しかしながら,二つの言語は,実装化及び抽象化のレベルにおいては大きく異なっている。インテルのCT/RapidMindのデータ抽象化のレベルはVSIPL++よりもわずかに高い。VSIPL++とCT/RapidMindは共に,ファーストクラスタイプの配列を有し,並列コンピューティングのSPMDタイプを使用する。しかしながら,CT/RapidMindの配列は,非常に効率的なランタイム環境によって自動的に計算ユニットに分配される。一方VSIPL++は,データが利用可能な計算ユニットに分配されるべき方法を特定するように,マップを使用するプログラマーを必要とする。どちらの方法もそれぞれ利点がある。CT/RapidMindの方法は,プログラマーが望んでいる場合を除き,基礎となるハードウエアへの危惧からプログラマーを解放する。VSIPL++は,計算ユニットに分配されたデータをどのような場合に望むのか考えを持っているプログラマーを必要とする,とはいえ,それはランタイム環境を持っていないため,ゲーム開発者によって採用された現在のプログラミングパラダイムから離れるステップはあまりない。
本発明は,4つの主要な成果を提供する。本発明は,光線と三角形の交差関数によってVSIPL++APIを拡張し,データマップを実際に起動するプロセッサの代わりにアーキテクチャの計算ユニットに分配させ,VSIPL++APIに新しいネスト型ストリーミングパターンデータを実装し,導入した。そして,本発明は,いずれのコードも変更することなく4つの異なるプラットフォームのいずれか1つで実行できるモンテカルロパストレーサを実装することにより,APIの性能,生産性,移植性を実証した。
初めに,本発明は,光線と三角形の交差関数によってVSIPL++APIを拡張した。これは,レンダリングの際の多くのアルゴリズムの基本的機能として重要であり,物理学で使用されるオブジェクトとオブジェクトの交差に概念的に同様の基本的機能として重要である。このように,本発明は,レンダリングのために高水準のクロスフラットAPIを実装することができ,理論的にはそれは物理学上で行うことが可能である。本発明の機能は,並列x86プロセッサ(又はパワーPCプロセッサ)上で,又は複数のシナジェティックプロセッサエンジンを介してセルボードエンジン(PS3)上で,又はGPUのストリーミングCUDAユニットを使用するGPU上で実行される。アーキテクチャの選択は,テンプレートメタプログラムを使用することにより,コンパイル時に終了する。テンプレートメタプログラムは,割当てされたアーキテクチャ用の適切な関数を選択する。
次に本発明は,並列VSIPL++がデータをマップする方法を変更した。従来,並列VSIPL++は,データをシステムプロセッサにマップしている。これは,開発者からシステムコプロセッサを隠す。本発明は,実際の計算ユニットを通るように,VSIPLマップを変更する。これらの計算ユニットは,複数の異なる計算アーキテクチャファミリーからなる。例えば,それらは,x86プロセッサもしくはGPU上のストリーミングユニット又はセルボードエンジン上のシナジェティックプロセッサエンジンであってもよい。
図2は従来のストリーミングパターンのデータを示しており,言い換えれば,すでにVSIPL++で行うことができる,あるストリーミングパターンの可視化を提供している。図3は,本発明の現在提案する新しいストリーミングを示しており,VSIPL++のための新しいストリーミングパターンの可視化を提供している。データのストリームは,プロセッサとメモリ間のデータの流れをいう。ストリーミングパターンは,データの大きな塊がどのようにストリームされるのか,どこに発信され,メモリ内のどこに至るのかを説明する。
VSIPL++APIへの光線と三角形の交差関数を加えるには,APIへ新しいネスト型ストリーミングパターンデータを加える必要がある。本発明のネスト型ストリーミングパターンは,ネスト型に良く似た他のループの内部に1つのストリームデータをネストする。VSIPL++にはすでに多くの異なるストリーミングパターンが含まれている。これらのパターンは信号処理とゲームの業界の両方に非常に有用であるが,光線と三角形の交差には簡単には使用できない。含まれているのは,3つのストリーミングパターンで示される補足的なイメージ‘XXX’である。これらのパターンは,‘一般的使用状態’,‘全ての入力ソリューション’,及び‘ストリーミングソリューション’と分類されている。各ソリューションのデータは2つの入力ブロックがある。これらは,入力1と入力2と分類されている。各入力図の濃いブロックは,現在データが操作されていることを示している。VSIPL++はすでに,‘一般的使用状態’と‘全ての入力ソリューション’の限定バージョンを実装することができる。本発明は,‘ネスト型ストリーミングソリューション’を実装した。
最後に,本発明は,ゲームのために,VSIPL++にモンテカルロパストレーサを実装することにより,有用なアルゴリズムを実装する効果的な高級言語の使用を明示する。また,本発明は,パストレーサを,コードを変更することなく非常に異なる4つのハードウエアアーキテクチャ上で実行する。
図4は,CBE上の計算ユニット(SPEs)の数によって,与えられた問題の大きさに対する処理時間が短縮していることを示している。図5は,CBE上の計算ユニット(SPEs)の数によって,処理スピードが上昇していることを示している。
図6は,本発明の1つの実施形態に係る図1に示されるコンピュータの例を示すブロック図である。
操作入力部21は,動力スイッチなどのスイッチと十字キーなどのキーで構成されている。
機械本体10内に配置されたサーキットは,制御部11,RAM12,ハードディスクドライブ(HDD)13,音響処理部14,グラフィックス処理部15,通信インターフェース17,インターフェース部18,フレームメモリ19,及びカードスロット20を含む。制御部11,RAM12,HDD13,音響処理部14,グラフィックス処理部15,通信インターフェース17,及びインターフェース部18は,それぞれインターバス22に接続されている。
CPU,ROMなどを含む制御部11は,HDD13又は記憶媒体70に格納された制御プログラムに従って,ゲーム機100全体を制御する。制御手段11は,例えば割り込みタイマーを生成するのに使用される内蔵タイマーが備わっている。RAM12も制御部11の作動領域として使用される。
音響信号のD/A及びA/D変換を行う音響出入力インターフェース機能を備える,音響処理部14は,例えばスピーカーで構成される音響出力装置30に接続されている。音響処理部14は,制御部11からの音響出力指示に従って,音響信号を音響出力装置30に出力する。制御部11は,複数の制御プログラムに従って,処理を実行する。
グラフィックス処理部15は,第1の画像表示部51と第2の画像表示部52を有する画像装置50に接続されている。グラフィックス処理部15は,制御部11の描画指示に従って,画像をフレームメモリ19に送る。また,グラフィックス処理部15は,画像を画像表示部51と52に表示するために,ビデオ信号を表示装置50に出力する。ビデオ信号によって表示された画像の切り替え時間は,例えば,フレームごとに1/30秒に割当てる。
プログラムなどが格納されている記録媒体70は,カードスロット20に挿入されている。本実施形態の記録媒体70は,書き込み可能なフラッシュメモリなどの半導体メモリである。通信インターフェース17は,無線又は有線の他のゲーム機100に接続でき,インターネットなどの通信ネットワークにも接続可能である。機械本体10は,通信インターフェース17の通信機能により,他のゲーム機100と互いにやり取りができる。
操作入力部21,カードスロット20,及びタッチパネル40は,インターフェース部18に接続されている。RAM12上のインターフェース部18は,プレーヤー(ユーザー)の操作に基づく操作入力部21から指示データを格納し,タッチペン41などにより,タッチパネルへのプレーヤーの操作に基づく指示データを格納する。それから,制御部11は,RAM12に格納された指示データに従って,算術処理を実行する。
タッチパネル40は,画像表示部51及び52の一方又は両方の表示画面の端に積層されている。従って,タッチパネル40が積層されている,画像表示部51及び52の一方又は両方の表示画面の端の表示タイミングと,タッチペン41によるタッチパネル40への操作タイミングと,位置座標を管理,制御することにより,プレーヤーの入力操作に応じる入力情報を認識する。表示装置50は,画像表示部51及び52などの複数の画像表示部を有する代わりに,1つの画像表示部により表示画面を構成してもよい。
インターフェース部18は,制御部11からの指示に従って,RAM12に格納されたゲームの進行を表示するデータをカードスロット20が挿入されている記憶媒体76に格納すること,又は,記憶媒体70に格納された中断時のゲームデータを読み出すことなどの,処理を実行する。
ゲーム機100上でゲームを楽しむための制御プログラムなどの様々なデータは,記憶媒体70に格納されている。記憶媒体70に格納されている制御プログラムなどの様々なデータは,記憶媒体70に挿入されるカードスロット20を通して制御部11により読み出され,RAM12にロードされる。
制御部11は,RAM12にロードされた制御プログラムに従って,グラフィックス処理部15に描画指示を出力すること,又は,音響処理部14に音響出力指示を出力することなど,様々な処理を行う。制御部11はその様な処理を行う一方で,ゲームの進行に応じて中途で発生するデータは,作業メモリとして使用されるRAM12に格納される。
結論
この働きは,変更したVSIPL++を使用することが標準的なC++言語でのプログラミングよりも優れているので,多くの利点を明示している。特に,本発明のVSIPL++は,特定の実装からプログラムの機能を分離するのに効果的であることを明示している。これにより,多くの人が,本発明のVSIPL++の実装に基づく有用なレンダリングアルゴリズム(モンテカルロパストレーサ)を書き込むことができるようになった。これは,プログラムを書くのに必要なラインコードを削減することによって明らかにされる。このアプリケーションは,単一のコードを変更することなく,マルチコアx86システム,デュアルスレッドのPowerPCシステム,セルボードエンジン,及びNvidiaGPUを基礎としたシステム上で本発明のモンテカルロパストレーサを実行することによって,本発明のVSIPL++コードの移植性を実証した。このアプリケーションは,LISPのような異国的なプログラミング言語に頼ることなく高いレベルのAPIで生産性の向上が達成されえることを実証した。またそれは,高い移植性であっても高性能が達成されることを示している。
本発明はゲーム及びエンターテイメント産業で利用することができる。





Claims (2)

  1. メモリ(102)と,
    複数の計算ユニットを含む複合計算ユニット(103)と,
    マップ手段(104)と,を含む,
    ゲームエンジンのシステム(101)であって,
    前記マップ手段(104)は,
    データを前記メモリ(102)から読み取り,
    前記データを前記複合計算ユニットに分散させることで計算タスクを前記計算ユニットのそれぞれに割当てるために,前記計算タスクに関係するデータの一部を,前記計算タスクを実行する前記計算ユニットのそれぞれへ格納するものであり,
    該データをストリームする際に,計算タスクが計算ユニットに割当てられた複数の形態のループからなるストリームパターンの該形態の内部に,さらに,計算タスクが計算ユニットに割当てられた複数の形態のループをネストすることを特徴とする
    システム。
  2. 複数の計算ユニットを含む複合計算ユニットにデータをマッピングする方法であって,
    データをメモリから読み取るステップと,
    前記データを前記複合計算ユニットに分散させることで計算タスクを前記計算ユニットのそれぞれに割当てるために,前記計算タスクに関係するデータの一部を,前記計算タスクを実行する前記計算ユニットのそれぞれへ格納するステップと,を含み,
    該データをストリームする際に,計算タスクが計算ユニットに割当てられた複数の形態のループからなるストリームパターンの該形態の内部に,さらに,計算タスクが計算ユニットに割当てられた複数の形態のループをネストすることを特徴とする
    方法。
JP2010106825A 2010-05-06 2010-05-06 ゲーム開発におけるプログラマーの生産性を向上させる高級言語 Active JP5242628B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010106825A JP5242628B2 (ja) 2010-05-06 2010-05-06 ゲーム開発におけるプログラマーの生産性を向上させる高級言語
US13/094,339 US9465666B2 (en) 2010-05-06 2011-04-26 Game engine and method for providing an extension of the VSIPL++ API

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010106825A JP5242628B2 (ja) 2010-05-06 2010-05-06 ゲーム開発におけるプログラマーの生産性を向上させる高級言語

Publications (2)

Publication Number Publication Date
JP2011237893A JP2011237893A (ja) 2011-11-24
JP5242628B2 true JP5242628B2 (ja) 2013-07-24

Family

ID=44902847

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010106825A Active JP5242628B2 (ja) 2010-05-06 2010-05-06 ゲーム開発におけるプログラマーの生産性を向上させる高級言語

Country Status (2)

Country Link
US (1) US9465666B2 (ja)
JP (1) JP5242628B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111580790B (zh) * 2020-04-22 2023-07-21 电子科技大学 一种用于软件化雷达中间件的构建方法
CN113703732B (zh) * 2021-11-01 2022-02-11 深圳易帆互动科技有限公司 一种游戏后端多语言开发的实现方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8248416B2 (en) * 2000-06-19 2012-08-21 Mental Images Gmbh Efficient ray tracing without acceleration data structure
US6862027B2 (en) * 2003-06-30 2005-03-01 Microsoft Corp. System and method for parallel execution of data generation tasks
DE102004007835A1 (de) * 2004-02-17 2005-09-15 Universität des Saarlandes Vorrichtung zur Darstellung von dynamischen komplexen Szenen
GB2435335A (en) * 2006-02-21 2007-08-22 Sony Computer Entertainment Inc Multi-processor emulation by a multi-processor
US8666712B2 (en) * 2006-07-24 2014-03-04 Ati Technologies Inc. Physical simulations on a graphics processor
EP2050002A2 (en) * 2006-08-01 2009-04-22 Massachusetts Institute of Technology Extreme virtual memory
JP4789777B2 (ja) * 2006-11-07 2011-10-12 株式会社ソニー・コンピュータエンタテインメント タスクの分配方法および情報処理装置
US8448067B2 (en) * 2006-12-07 2013-05-21 Sony Computer Entertainment America, LLC Graphics command management tool and methods for analyzing performance for command changes before application modification
US8928658B2 (en) 2008-09-30 2015-01-06 Microsoft Corporation Photon mapping on graphics hardware using kd-trees
WO2011035800A2 (en) * 2009-07-24 2011-03-31 Uws Ventures Ltd. Direct ray tracing of 3d scenes
US8558835B2 (en) * 2009-07-30 2013-10-15 Nvida Corporation System, method, and computer program product for consistent image synthesis

Also Published As

Publication number Publication date
US9465666B2 (en) 2016-10-11
US20110276970A1 (en) 2011-11-10
JP2011237893A (ja) 2011-11-24

Similar Documents

Publication Publication Date Title
US11847508B2 (en) Convergence among concurrently executing threads
Navarro et al. A survey on parallel computing and its applications in data-parallel problems using GPU architectures
KR101732288B1 (ko) 스프라이트 그래픽 렌더링 시스템
KR101231291B1 (ko) 자원 결합 방법 및 그를 위한 컴퓨터 판독가능 매체 및 애플리케이션 프로그래밍 인터페이스와, 종속성 트리 재구성 방법
TWI363294B (en) Virtual architecture and instruction set for parallel thread computing
Zink et al. Practical rendering and computation with Direct3D 11
Brodtkorb et al. GPU computing in discrete optimization. Part I: Introduction to the GPU
Wynters Parallel processing on NVIDIA graphics processing units using CUDA
Baker et al. A light-weight API for portable multicore programming
JP5242628B2 (ja) ゲーム開発におけるプログラマーの生産性を向上させる高級言語
Rahman et al. Towards accelerated agent-based crowd simulation for Hajj and Umrah
Zamith et al. A game loop architecture for the gpu used as a math coprocessor in real-time applications
Janjic et al. Lapedo: hybrid skeletons for programming heterogeneous multicore machines in Erlang
Watt et al. Multithreading for Visual Effects
US9098917B2 (en) Method and system for accelerating collision resolution on a reconfigurable processor
Eimandar DirectX 11.1 Game Programming
Peddie Compute Accelerators and Other GPUs
Chadzynski Parallel Techniques in Modeling Particle System Using Vulkan API
Guo et al. Harnessing the power of GPUs without losing abstractions in SAC and ArrayOL: A comparative study
Ragnemalm Attack In Packs
Chelliah The ntnu hpc snow simulator on the fermi gpu
Jakobsson Parallelization of Animation Blending on the PlayStation® 3
Tello Panea Optimization techniques for a 2D Engine
Soyata Introduction to GPU Parallelism and CUDA
Bourges-Sevenier Graphics Programming on the Web WebCL Course Notes

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120425

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120501

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120702

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121127

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130125

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130403

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

Free format text: PAYMENT UNTIL: 20160412

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5242628

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250