(Translated by https://www.hiragana.jp/)
GPGPU - Wikipedia コンテンツにスキップ

GPGPU

出典しゅってん: フリー百科ひゃっか事典じてん『ウィキペディア(Wikipedia)』

GPGPU(General-purpose computing on graphics processing units; GPUによる汎用はんよう計算けいさん)とは、GPU演算えんざん資源しげん画像がぞう処理しょり以外いがい目的もくてき応用おうようする技術ぎじゅつのことである[1][2]ビッグデータなどをふく科学かがく技術ぎじゅつ計算けいさんたい大量たいりょう計算けいさん実行じっこうできるというメリットのため、ひろ使つかわれるようになった[3]2022ねん単一たんいつマシンとしては世界せかいはつエクサスケールコンピュータとなったべいHPEの「フロンティア」にもベクトル計算けいさんようAMDGPU搭載とうさいされるなど、世界せかい最速さいそくきそスーパーコンピュータでの利用りよう一般いっぱんてきである。

GPGPUは、GPUベクトル計算けいさんとしての特性とくせいかした汎用はんようてきストリーム・プロセッシングいち形態けいたいである。GPUはコンピュータゲーム多用たようされるリアルタイム画像がぞう処理しょりけのデータ並列へいれつ計算けいさんパイプライン処理しょりとくした命令めいれい発行はっこう形態けいたいち、またGPUとメインメモリあいだ帯域たいいきはば通例つうれいせま[注釈ちゅうしゃく 1]固定こていちょうレジスタしかあつかえない[注釈ちゅうしゃく 2]後述こうじゅつ)ものの、GPUと直結ちょっけつされるVRAMあいだには十分じゅうぶんひろ帯域たいいきはばそなえておりSIMDSIMT英語えいごばんによる並列へいれつ計算けいさんおこなえる[4]

GPGPUは制約せいやくはあるもののHPC分野ぶんや注目ちゅうもくされる応用おうよう技術ぎじゅつである。伝統でんとうてき構築こうちくされてきた、カスタムCPUとして開発かいはつされるベクトルプロセッサ主体しゅたいとしたスーパーコンピュータ比較ひかくして、疎行列そぎょうれつ計算けいさん効率こうりつ低下ていかする[注釈ちゅうしゃく 3]可変長かへんちょうベクトル命令めいれいあつかえずレジスタちょうれない要素ようそ別途べっと考慮こうりょする必要ひつようがあるという欠点けってんはある[5]ものの、GPUを主体しゅたいとして計算けいさんシステムを構成こうせいするほうコストパフォーマンスたかくなることからHPC分野ぶんやでの導入どうにゅうすすんでいる[6]

しかし、GPU特有とくゆう制約せいやくくなりつつある。2023ねん現在げんざいではプログラマブルシェーダー発展はってんによりCPUとどう程度ていどのプログラマビリティが実現じつげんされており[7]、OpenCLなどをもちいることでCPUとGPUでの相互そうご互換ごかんせいったプログラムを作成さくせいすることも可能かのうであることから[8]前述ぜんじゅつのランダムメモリアクセスによわい、可変長かへんちょうベクトル命令めいれい利用りようできないという、伝統でんとうてきベクトルプロセッサ比較ひかくした場合ばあい原理げんりてき欠点けってん以外いがいについては改善かいぜんされてきている。

GPGPUブームまでのりゃく

[編集へんしゅう]

最初さいしょこころみから一般いっぱんてき使つかえるAPIが完成かんせいするまでに10ねん歳月さいげつようした。

1998ねん: SGIのグラフィックスワークステーションをもちいた実験じっけん

[編集へんしゅう]

GPUという製品せいひんカテゴリが登場とうじょうする前年ぜんねんプログラマブルシェーダー存在そんざいしない1998ねんに、Ian Buck[9]によりSGI O2 R5000SGI Indigo2 R4400 Maximum IMPACTのグラフィックスアクセラレータで、OpenGLフレームバッファややしきかく計算けいさんステップように2まいもちいた単純たんじゅん流体りゅうたい計算けいさん高速こうそくこころみられ、実際じっさいすうばい程度ていど高速こうそくされた[10][11]。この当時とうじSGIグラフィックスワークステーションにはジオメトリエンジン独立どくりつしたLSIチップとして搭載とうさいされており、のGPUの原型げんけいともえる構成こうせいとなっていた[12]。しかし固定こてい機能きのうシェーダーしか存在そんざいしない時代じだいであったため非常ひじょう簡単かんたんなモデルしか計算けいさんできず、実用じつようには程遠ほどとお代物しろものであった。

固定こてい機能きのうシェーダーをもちいて流体りゅうたい計算けいさん高速こうそくする方法ほうほうはGPGPUの着想ちゃくそうこころみられたのみであり、今日きょうてきなGPGPUの観点かんてんからするときわめて特殊とくしゅでイメージがきづらいため、下記かきにその研究けんきゅう実行じっこうされたコードの引用いんよう[10]各行かくこう説明せつめいしめす。概要がいようとしてはOpenGLの標準ひょうじゅん機能きのうの1つである2次元じげんたたみフィルタをややしきかく計算けいさんステップにおける拡散かくさん操作そうさとして転用てんようすることで、かく領域りょういき拡散かくさん計算けいさんがハードウェアで並列へいれつされるというアイデアとなっていた。下記かきのコードをればかるとおり、物理ぶつりモデルを2次元じげんたたみフィルタとして表現ひょうげんして標準ひょうじゅん機能きのうわたすことしかできず、今日きょうてきなGPGPUと比較ひかくすればブラックボックス固定こてい機能きのうシェーダーに並列へいれつ計算けいさんまかせるしかないため、まった自由じゆうかないことがかる。またRGBのかくいろ8bitを数値すうちてるため、計算けいさん精度せいど重要じゅうよう科学かがく技術ぎじゅつ計算けいさんとして8bitをえる精度せいど計算けいさんするためにはRGBのかくいろあいだでのけたがりなども実装じっそうする必要ひつようがあったが、そのさいおおきなオーバーヘッドがしょうじて計算けいさん非常ひじょうおそくなってしまうという問題もんだいがあった。当時とうじはIan Buck自身じしんも、これらの実用じつようたって許容きょようできない制約せいやく緩和かんわするためには今後こんごのグラフィックスハードウェアの進歩しんぽ必要ひつようであるとべている。

#define k .2 // 拡散かくさん係数けいすう定義ていぎ
/* たたみフィルタの定義ていぎ */
float filter[] = {
    0.0, k, 0.0,
    k, 1-4*k, k,
    0.0, k, 0.0
};

glConvolutionFilter2D(filter)  // たたみフィルタを設定せってい
glEnable(GL_CONVOLUTION)       // たたみフィルタを有効ゆうこう
glReadBuffer(GL_FRONT)         // がわのフレームバッファ(1ステップのたた計算けいさんにおけるげんステップ(たとえばtとく)の保存ほぞんするバッファ)
glDrawBuffer(GL_BACK)          // がわのフレームバッファ(1ステップのたた計算けいさんにおけるつぎステップ(たとえばt+1とく)の保存ほぞんするバッファ)

... Draw any initial conditions ... // 任意にんい初期しょき条件じょうけん描画びょうが

glRasterPos(1,1);  // ピクセル操作そうさのラスター位置いちを(x,y)=(1,1)に設定せってい
/* たた計算けいさんかえ実行じっこう */
while(1) {
    glCopyPixels(0, 0, Width, Height, GL_COLOR);
    glxSwapbuffers(dspy, wnd);
}

1999ねん-2000ねん: GPUとプログラマブルシェーダーの登場とうじょう

[編集へんしゅう]

つづいて1999ねんGeForce 256発売はつばいによってジオメトリエンジングラフィックスアクセラレータ統合とうごうした「GPU」という製品せいひんカテゴリが登場とうじょうし、2000ねん11月9にちにはアセンブリ言語げんごで128命令めいれいのみ記述きじゅつ可能かのう原始げんしてきプログラマブルシェーダーシェーダーモデル1.x)が登場とうじょうした。2002ねん、GPUの固定こてい機能きのうシェーダーがプログラマブルシェーダーわったことでブレイクスルーきたと主張しゅちょうし、ムーアの法則ほうそくえる速度そくど進化しんかするGPUのストリーム・プロセッサとしての未来みらい予感よかんしたIan Buckにより、再度さいどGPUによるレイトレーシング計算けいさん高速こうそくについての論文ろんぶん発表はっぴょうされた[13]

2002ねん: シェーダーモデル2.0への進化しんか

[編集へんしゅう]

2002ねん12月20にちシェーダーモデル2.0の登場とうじょうにより、GPUのプログラマブルシェーダー従来じゅうらいよりはるかになが命令めいれいちょう浮動ふどう小数点しょうすうてん演算えんざんあつかえるようになった直後ちょくご2003ねんころからGPGPUが大々的だいだいてきこころみられはじめ、2004ねん8がつには世界せかいはつのGPGPU学会がっかい「GP2」(Workshop on General Purpose Computing on Graphics Processors)が開催かいさいされた[14]。しかし当時とうじ画像がぞう処理しょり専用せんようつくられていたGPU特有とくゆう制約せいやく演算えんざん精度せいど不足ふそく仮想かそうメモリがあつかえないなど)について酷評こくひょう相次あいついでいた[よう出典しゅってん]。またGPUメーカーは歩留ぶどまり向上こうじょうのため画面がめん表示ひょうじ問題もんだいがなければ計算けいさんミスがあってもGPUを出荷しゅっかするため、計算けいさんミスをこすようなGPUを検品けんぴんして排除はいじょする必要ひつようしょうじた[よう出典しゅってん]

2007ねん: CUDAの提供ていきょう開始かいし

[編集へんしゅう]

その2005ねんにIan BuckらのチームがグラフィックスAPIを経由けいゆせずC言語げんごライクにGPGPUの処理しょり記述きじゅつできるCUDA開発かいはつ着手ちゃくしゅ[11]し、2007ねん7がつCUDA 1.0を提供ていきょう開始かいししたことで、以降いこう2008ねんころからGPGPUが普及ふきゅうしてった[14]。CUDAが有名ゆうめいになったことで、NVIDIAはGPGPUでトップランナーの地位ちいめることになった。GPGPUは2010年代ねんだい前半ぜんはん以降いこうビッグデータブームや仮想かそう通貨つうかブーム、2010年代ねんだい中盤ちゅうばん以降いこう人工じんこう知能ちのうブームをしたささえする存在そんざいとなり、2020年代ねんだいにはブームのあまりの過熱かねつぶりにGPU製品せいひん供給きょうきゅう不足ふそくする事態じたいまで発生はっせいしている[15]

概要がいよう

[編集へんしゅう]

GPUは一般いっぱんてき画像がぞう処理しょり専門せんもんとする演算えんざん装置そうちであり、おおくの場合ばあいCPUばれる主演しゅえんさん装置そうち制御せいぎょしたもちいられる動画どうが信号しんごう生成せいせい専用せんよう補助ほじょ演算えんざんようICである。動画どうがぞうじつ時間じかんないでの生成せいせい高速こうそく演算えんざん要求ようきゅうされるが、そのおおくが定式ていしきされた単純たんじゅん演算えんざんかえしであるためハードウェアいており、GPUを設計せっけいしているすうしゃからは、高速こうそくメモリインタフェース機能きのうたか画像がぞう演算えんざん能力のうりょくそなえたIC製品せいひんのシリーズがいくつもリリースされている。GPUは民生みんせいよう大量たいりょう生産せいさんされているため、スーパーコンピュータにもちいられるベクトルがたのカスタムCPUからすれば非常ひじょう安価あんかである[6]ただし、GPGPUは完全かんぜんベクトルがたとして設計せっけいされていないx86ひとし一般いっぱんてきなCPUのSIMD命令めいれい比較ひかくしてたか並列へいれつほこスループットたかいが、バスアクセスのためにレイテンシおおきくなることが欠点けってんとなる。したがって、一定いっていりょうのデータをつねながみながら計算けいさんさせつづけることもっと理想りそうてき利用りよう形態けいたいストリーム・プロセッシング)であり、ぎゃくにネットワークのパケット処理しょりといった多数たすうちいさいデータの各々おのおのたいして個別こべつ処理しょりおこな場合ばあいでは効率こうりつ劇的げきてき悪化あっかする。

とくに1990年代ねんだい中盤ちゅうばん以降いこうは3D描画びょうが性能せいのう劇的げきてき向上こうじょうし、それにともなベクトル行列ぎょうれつ演算えんざん中心ちゅうしんとしたSIMD演算えんざん色彩しきさいつよくなってきた。2000年代ねんだいはいると、表現ひょうげんりょく向上こうじょうもとめて固定こてい機能きのうシェーダーからプログラマブルシェーダーへの移行いこうすすみ、演算えんざん自由じゆう柔軟じゅうなんせい(プログラマビリティ)が飛躍ひやくてきした。そこでこれをグラフィックス・レンダリングのみならず、数値すうち演算えんざんにも利用りようしようというのがGPGPUのコンセプトである。GPGPUのコンセプトは2000年代ねんだい実験じっけんて、入力にゅうりょくデータをテクスチャデータに変換へんかんして画像がぞうようのシェーダーに処理しょりさせるというまわりくどい工夫くふう[16]必要ひつようない汎用はんよう計算けいさんよう言語げんごコンピュートシェーダー開発かいはつされたのち2010ねんころビッグデータブームのなみ産業さんぎょう応用おうよう開始かいしされ、2010年代ねんだいなかばには一般いっぱんした。

最高さいこうのシングル理論りろん演算えんざん性能せいのうつGPU・MIC・CPU
(2015ねん8がつ現在げんざい)
種別しゅべつ 単精度たんせいど 倍精度ばいせいど
TFLOPS TFLOPS
GPU 8.6
(AMD Radeon R9 Fury X)[17]
2.62
(AMD FirePro S9170)[18]
MIC 2.416
(Xeon Phi 7120P)[よう出典しゅってん]
1.208
(Xeon Phi 7120P)[よう出典しゅってん]
CPU 1.325
(Xeon E5-2699 v3)[よう出典しゅってん]
0.662
(Xeon E5-2699 v3)[よう出典しゅってん]

上記じょうきひょうは 1CPU, 1MIC, 1GPU に限定げんていしたひょうである。なおAMD Radeon R9 295X2やAMD FirePro S10000、NVIDIA GeForce GTX TITAN ZやNVIDIA Tesla K80のようなデュアルGPUソリューションは除外じょがいされている。

2015ねん現在げんざい、GPUの浮動ふどう小数点しょうすうてん演算えんざん能力のうりょく単精度たんせいどで8TFLOPSをオーバーした一方いっぽうで、CPUはサーバーけでも単精度たんせいどは1TFLOPSだいとどまっている。GPUは構成こうせい単純たんじゅんであるためにCPUよりも集積しゅうせきてん有利ゆうりであることから浮動ふどう小数点しょうすうてん演算えんざんでの効率こうりつがよく、またGPU専用せんようにローカル接続せつぞくされたメモリIC (VRAM) とのバンドはばひろそなえるために、CPUとくらべて性能せいのう安価あんかかつ成長せいちょうりつたか[19]。さらにCPUよりも電力でんりょくあたりの理論りろん演算えんざん性能せいのう(ワットパフォーマンス、Performance per Watt)がたかいのもGPUの特徴とくちょうである。またGPUのおも使途しとがゲーム(PCゲーム)と動画どうが再生さいせいで、ゲームをしないユーザーにとってあま気味ぎみ資源しげんということもあって注目ちゅうもくされている。

2015ねん現在げんざいにおけるGPGPU対応たいおうグラフィックスカード(グラフィックスチップ)単体たんたい製品せいひんすなわちディスクリートGPU (discrete GPU, dGPU) としては、NVIDIANVIDIA GeForceおよびNVIDIA Quadroシリーズや、AMDAMD RadeonおよびAMD FireProシリーズなどが代表だいひょうとしてげられる(ただし後述こうじゅつするGPGPU対応たいおうAPIをサポートするのはDirectX 10世代せだい以降いこう製品せいひんとなる)。CPU統合とうごうがたGPU (integrated GPU, iGPU) にかんしては、NVIDIAのNVIDIA Tegraシリーズ、AMDのAMD APUシリーズ、そしてインテルIntel HD GraphicsシリーズなどがGPGPUに対応たいおうしている。一方いっぽう、GPGPU専用せんよう製品せいひんとしては、NVIDIAのNVIDIA Teslaシリーズ、そしてAMDのAMD FirePro Sシリーズ(きゅうAMD FireStreamシリーズ)がげられ、こちらは科学かがく技術ぎじゅつ分野ぶんやHPC市場いちばけにも投入とうにゅうされるなど、従来じゅうらいベクトル計算けいさんからのえを視野しやいた[独自どくじ研究けんきゅう?]製品せいひん展開てんかいおこなわれている。

GPGPUアプリケーション開発かいはつ環境かんきょうおよびAPIとしては、ハードウェア内部ないぶ構造こうぞう自体じたい汎用はんようせいしたDirectX 10世代せだい統合とうごうがたシェーダーアーキテクチャGPUの登場とうじょう以降いこう、NVIDIAによるGPGPU専用せんよう統合とうごう開発かいはつ環境かんきょうCUDA」や、AMDによるGPGPU基盤きばんAMD Stream」(旧称きゅうしょうATI Stream)、そしてクロノス・グループによる標準ひょうじゅん規格きかくOpenCL」があらわれ、GPGPU活用かつようはばひろがりつつある。

なお、DirectX (Direct3D/HLSL) はバージョン11でGPUによる汎用はんよう演算えんざんようのステージであるコンピュートシェーダー(DirectCompute)を、またOpenGL/GLSLはバージョン4.3で同様どうようのコンピュートシェーダーを導入どうにゅうする[20]など、グラフィックスAPIのほうにも従来じゅうらいグラフィックスパイプラインくわえてGPGPU機能きのう活用かつようするための変化へんかあらわれつつある。MetalVulkanといった後発こうはつのローレベルグラフィックスAPIにも、コンピュートシェーダーが搭載とうさいされている。

そのマイクロソフトの「C++ AMP」や、PGIの「OpenACC[21]など、DirectCompute/OpenCL/CUDAといったローレベルAPIをバックエンドとしながら、従来じゅうらいC/C++FortranにおけるOpenMPちかこうレベル並列へいれつプログラミング環境かんきょう提供ていきょうするアクセラレータけいライブラリ言語げんご拡張かくちょう出現しゅつげんしている。

特徴とくちょう課題かだい

[編集へんしゅう]

GPUはメモリにシーケンシャルにアクセスし、かつ条件じょうけん分岐ぶんき計算けいさん演算えんざん密度みつどたか処理しょり)につよい。そのようなれい行列ぎょうれつ計算けいさんがある。苦手にがてもの代表だいひょうとして二分にぶん探索たんさくがある。二分にぶん探索たんさく条件じょうけん分岐ぶんきだらけなうえ、メモリにランダムアクセスする。ポインタをたどる操作そうさもメモリにランダムアクセスするため、連結れんけつリスト構造こうぞうなども苦手にがてである。密行みっこうれつ得意とくいだが、疎行列そぎょうれつ苦手にがてで、東京大学とうきょうだいがく情報じょうほう基盤きばんセンターによると100ばいおそ[22]。グラフ計算けいさんにおいては、たとえば最短さいたん経路けいろ問題もんだいでは、完全かんぜんグラフのようなみつグラフにたいしては高速こうそく計算けいさんできるが、頂点ちょうてんからすうほんしかあたりていないようなうとグラフにたいしてはおそ[23]

条件じょうけん分岐ぶんき

[編集へんしゅう]

GPUはシェーダープロセッサ(ストリームプロセッサ[24]、ストリーミングプロセッサ[25]とも)とばれる演算えんざんユニットを多数たすうち、複数ふくすうのシェーダープロセッサをまとめてクラスタとしている。これらの演算えんざん命令めいれいあたえるインストラクション・ユニットはクラスタごとに1だいしかく、クラスタを構成こうせいするシェーダープロセッサはそれぞれことなるデータをあたえられ、そのデータにたいしておな命令めいれい内容ないよういち実行じっこうする。このようなSIMDがたデータ処理しょりは3次元じげん演算えんざんマルチメディア処理しょり効果こうか発揮はっきする一方いっぽうで、命令めいれいちゅう条件じょうけん分岐ぶんきによる分岐ぶんきはいるとオーバーヘッドがかさみ、途端とたん効率こうりつとしてしまう。今日きょうCPUでは、このようなペナルティを最小限さいしょうげんにするためにプリフェッチ/プリデコードや投機とうき実行じっこう/レジスタ・リネーミングといった機能きのうそなえているが、GPUではそなえていない(限定げんていてき条件じょうけんきで投機とうきてき実行じっこうくだりなえるものもある。GPUでの動的どうてき分岐ぶんきはDirectX 9.0c世代せだい以降いこうでようやく現実げんじつてきになった[26][27])。またPCけのGPUではシェーダープロセッサごとに分岐ぶんきするためのプログラムカウンターをたないため、条件じょうけん分岐ぶんきさい個別こべつことなる命令めいれい発行はっこうするのではなく、実際じっさい命令めいれい実行じっこうするかかをけるためのマスクレジスタを使つかって分岐ぶんきする手法しゅほう採用さいようされている[28] [29]

また、シェーダープロセッサあいだでデータをやりとりする場合ばあいとおくのデータバス経由けいゆすることになり、それがボトルネックとなってしまう。このてんかんしては、DirectX 10世代せだい統合とうごうがたシェーダーアーキテクチャ以降いこうのハードウェアに搭載とうさいされている、しょう容量ようりょうだがプロセッサグループない共有きょうゆうすることのできる高速こうそくキャッシュメモリ共有きょうゆうメモリ)をかいすることで、プロセッサグループないでのデータ交換こうかんやメモリI/Oの効率こうりつたかめることができる[30] [31]

一般いっぱんのアプリケーションで条件じょうけん分岐ぶんき存在そんざいしないものはめずらしく、こういった制約せいやくによってGPUはオフィススイートのようなアプリケーションの実行じっこうには不向ふむきである。GPGPUの発展はってんにはいかに効率こうりつとさず条件じょうけん分岐ぶんきおこなうかというのが1つの課題かだいとなっている。原理げんりてきにはシンプルなアルゴリズム構造こうぞうったプログラムによって、並列へいれつデータ処理しょり最適さいてきすることがGPGPUの特長とくちょう最大限さいだいげんすことにつながるといえる。

浮動ふどう小数点しょうすうてん演算えんざん

[編集へんしゅう]

単精度たんせいど倍精度ばいせいど

[編集へんしゅう]

単精度たんせいど浮動ふどう小数点しょうすうてん演算えんざんかんしてはCPUをはるかに上回うわまわ理論りろん演算えんざん性能せいのうスケーラビリティつGPUだが、倍精度ばいせいど浮動ふどう小数点しょうすうてん演算えんざんかんしては様相ようそうことなる。もともとGPUがあつかおおくの画像がぞう演算えんざんとくにリアルタイム3Dグラフィックス)では、整数せいすう演算えんざん単精度たんせいど浮動ふどう小数点しょうすうてん演算えんざんりてしまうために浮動ふどう小数点しょうすうてん演算えんざん仮数かすう24ビット程度ていどとそれほどひろくなく、単精度たんせいど演算えんざん倍精度ばいせいど浮動ふどう小数点しょうすうてん演算えんざんおこなうには、分割ぶんかつして幾度いくど演算えんざん使つか必要ひつようがあり、性能せいのうおおきくとす要因よういんとなる。なお倍精度ばいせいど対応たいおう必須ひっすとされる科学かがく技術ぎじゅつ計算けいさん分野ぶんやふくめたHPCけに設計せっけいされた製品せいひんでは、倍精度ばいせいど専用せんよう演算えんざん搭載とうさい有効ゆうこうしているものもある[32]

AMDは2006ねん自社じしゃのGPU「R580」をベースとした、単精度たんせいど浮動ふどう小数点しょうすうてん演算えんざん対応たいおうのストリームプロセッシング製品せいひん「AMD Stream Processor」(だい1世代せだいAMD FireStream)を発表はっぴょう[33]つづいて2007ねんR6xxコアを使用しようした業界ぎょうかいはつ倍精度ばいせいど浮動ふどう小数点しょうすうてん演算えんざん対応たいおうHPCけGPUである「AMD FireStream 9170」(だい2世代せだいAMD FireStream)を発売はつばい[34]した(ただし倍精度ばいせいど理論りろん演算えんざん性能せいのう単精度たんせいど場合ばあいの1/5となる[35])。また2008ねん発売はつばいされたRADEON HD 4850は1チップでは世界せかいはつの1TFLOPS(単精度たんせいど)を達成たっせいし、このRADEON HD 4850にも使用しようされたR7xxコアを使用しようしててい価格かかくかつ高性能こうせいのうりに、HPC分野ぶんやけにだい3世代せだいAMD FireStream発売はつばい[36]することになった。2010ねんには、さらに高性能こうせいのうしただい4世代せだいAMD FireStream発売はつばいしている。2014ねん発売はつばいされたAMD FirePro S9100/S9150では倍精度ばいせいど演算えんざん性能せいのう強化きょうかされ、倍精度ばいせいど理論りろん演算えんざん性能せいのう単精度たんせいど場合ばあいの1/2になっている[37] [38]

NVIDIAも、自社じしゃのGPU「G80」をベースとした、単精度たんせいど浮動ふどう小数点しょうすうてん演算えんざん対応たいおうのHPC製品せいひんTesla C870」を2007ねん投入とうにゅう、さらに2008ねん発売はつばいされた NVIDIA Tesla C1060 で倍精度ばいせいど対応たいおうしたが、単精度たんせいど933GFLOPSにくらべて倍精度ばいせいどは1/12の78GFLOPSとなっており[39]倍精度ばいせいど演算えんざん性能せいのう極端きょくたんひくかった。2010ねん発売はつばいされた Fermi 世代せだいの Tesla 20 シリーズ[40] [41]では倍精度ばいせいど演算えんざん性能せいのう強化きょうかされ、倍精度ばいせいど理論りろん演算えんざん性能せいのう単精度たんせいど場合ばあいの1/2になったが、2012ねん発売はつばいされたKepler世代せだいのTesla K20シリーズ[42] [43]、2013ねん発表はっぴょうされたK40[44]、2014ねん発表はっぴょうされたK80[45] [46]では倍精度ばいせいど理論りろん演算えんざん性能せいのう単精度たんせいど場合ばあいの1/3となっている。

2020ねん現在げんざいでも、GPUにおける倍精度ばいせいど演算えんざんかんしてはHPCけをのぞき、しょう電力でんりょく性能せいのうやゲーミング性能せいのう重視じゅうし維持いじするために必要ひつよう最低限さいていげん性能せいのうしか用意よういされないことがおお[注釈ちゅうしゃく 4]。また倍精度ばいせいど専用せんよう演算えんざんユニットでは単精度たんせいど演算えんざんおこなうことはできないため、単精度たんせいど優先ゆうせんするか、それとも倍精度ばいせいど優先ゆうせんするかはチップ設計せっけい段階だんかいにおけるトレードオフとなる。実際じっさい、NVIDIAのMaxwellアーキテクチャのGPUではぜん世代せだい存在そんざいした倍精度ばいせいど演算えんざん省略しょうりゃくされ、単精度たんせいど演算えんざん使つかって倍精度ばいせいど演算えんざんおこなうため、倍精度ばいせいど演算えんざんのピーク性能せいのう単精度たんせいど演算えんざんの1/32となる[48]。このため、HPC以外いがいのGPUは倍精度ばいせいど浮動ふどう小数点しょうすうてん演算えんざん不得意ふとくいであるとえる。

はん精度せいど

[編集へんしゅう]

深層しんそう学習がくしゅう計算けいさんにおいては計算けいさん精度せいどもとめられないことから、はん精度せいど(16ビット)の演算えんざん高速こうそくおこなえるようにハードウェアがわ対応たいおうすすみつつある[注釈ちゅうしゃく 5][50]深層しんそう学習がくしゅうにおいては仮数かすうこまかさよりもがオーバーフローしないほうが使つかいやすいというメリットのため、指数しすうやしたBF16(bfloat16英語えいごばん)とばれるフォーマットが考案こうあんされ、一部いちぶのGPU[注釈ちゅうしゃく 6]でサポートされている[51]

GPUから派生はせいした分野ぶんやとくがたのプロセッサとして、ディープラーニングなどのAI計算けいさん能力のうりょくたいして既存きそんのGPUでは消費しょうひ電力でんりょくおおきさが問題もんだいになることから、計算けいさん精度せいどを8ビットにおさえて、せき演算えんざんとくしたTPUテンソル・プロセッシング・ユニット)というプロセッサが実現じつげんされており、人工じんこう知能ちのうのアクセラレーターとして活用かつようされている[52]。バッテリー駆動くどう基本きほんとなるスマートフォンSoCにも電力でんりょく効率こうりつ向上こうじょう必要ひつようせいからAIアクセラレータ搭載とうさいされている。

IEEE 754サポートおよびFMA命令めいれい

[編集へんしゅう]

DirectX 11対応たいおうとなるEvergreen世代せだい以降いこうのAMD GPU、およびFermi世代せだい以降いこうのNVIDIA GPUでは、浮動ふどう小数点しょうすうてん演算えんざん精度せいどIEEE 754規格きかく準拠じゅんきょしたものとなっている。なおNVIDIA GPUおよびAMD GPUでは融合ゆうごうせき演算えんざん命令めいれい (FMA) をサポートしているが、CPUでおな内容ないよう処理しょりをFMAを使つかわず実行じっこうした場合ばあいくらべて、GPUによる演算えんざん結果けっかことなることもある[53] [54] [55] [56] [57]

メモリ環境かんきょうについても、演算えんざん入力にゅうりょく少数しょうすう格子こうしてんデータと幾分いくぶんおおきなテクスチャ・データだけであり[疑問ぎもんてん]演算えんざん出力しゅつりょく画像がぞう1まい程度ていどおおきさのピクセルごとに3しょく[疑問ぎもんてん]のデータを保持ほじしながら順次じゅんじそれらをおくすだけでむため、相応そうおうおおきな[疑問ぎもんてん]外部がいぶ半導体はんどうたいメモリ(グラフィックスメモリ/ビデオメモリ/デバイスメモリ/VRAM)とかなりひろ[疑問ぎもんてん]メモリバンドはばによる接続せつぞく十分じゅうぶん対応たいおうしており、演算えんざん対象たいしょうデータの局所きょくしょせいたかいのでグラフィックスメモリと内部ないぶキャッシュによってデータの性能せいのう向上こうじょうすると同時どうじ演算えんざん途切とぎれずに順次じゅんじおこなえる傾向けいこうつよい。

基本きほんてきにGPUは、配列はいれつ構造こうぞう単純たんじゅんなデータをはん精度せいど単精度たんせいど程度ていど浮動ふどう小数点しょうすうてん演算えんざんによって順番じゅんばん処理しょりすることで2次元じげん動画どうがぞうデータをじつ時間じかんない生成せいせいすることにとくしているため、それ以外いがい用途ようとではあまりたか性能せいのう期待きたいできない。リアルタイム画像がぞう処理しょり専用せんようICの流用りゅうようでは、科学かがく技術ぎじゅつ計算けいさんでも倍精度ばいせいど以上いじょう浮動ふどう小数点しょうすうてん演算えんざん拡張かくちょう倍精度ばいせいどよん倍精度ばいせいどなど)を必要ひつようとするものや、演算えんざん局所きょくしょせいひくいものではそれほどたか性能せいのうられない。リアルタイム画像がぞう処理しょり専用せんようではなく、GPUから派生はせいしてあらたに開発かいはつされたGPGPUようのICでは、倍精度ばいせいど浮動ふどう小数点しょうすうてん演算えんざんやよりひろいメモリ空間くうかん対応たいおうしたものがあり、これらは広範こうはん科学かがく技術ぎじゅつ計算けいさんへの利用りよう期待きたいされる。なお、コンシューマーけの画像がぞう処理しょり分野ぶんやではほとんど必要ひつようとされないメモリの冗長じょうちょう機構きこうであるECCHPC分野ぶんやでは必須ひっすとされるため、ICを共用きょうようする場合ばあい制約せいやくとなる[58]

共有きょうゆうメモリ

[編集へんしゅう]

GPUによるVRAMへのアクセスは、複数ふくすうのプロセッサぐんによって並列へいれつてき発生はっせいするため、連続れんぞくしたメモリ領域りょういきたいするコアレスアクセス(coalesce access、≒シーケンシャルアクセス)をおこなうことで効率こうりつ高速こうそくできる[59]。NVIDIA GPUでは32のハードウェアスレッドをたばねるバッチ単位たんいWarp[60]び、AMD GPUでは64のハードウェアスレッドをたばねるバッチ単位たんいWavefront[61]んでいるが、これらのユニットないではプロセッサが完全かんぜん同期どうきして動作どうさするため、バッチ単位たんいごとにまとめて連続れんぞく領域りょういきにアクセス(コアレスアクセス)することで効率こうりつくなる。ぎゃくえば、バッチ単位たんいないのスレッドがそれぞれとおはなれたばらばらのアドレスにアクセスするようなコアレスアクセス(≒ランダムアクセス)は効率こうりつわるくなる。

GPGPUの本質ほんしつは、大量たいりょう演算えんざんによって実現じつげんされるハードウェアマルチスレッド集合しゅうごうもちいたデータ並列へいれつ演算えんざんにより性能せいのうかせてんにある。たとえばNVIDIA GPUのFermi/Keplerマイクロアーキテクチャでは、演算えんざん最小さいしょう単位たんいをCUDAコア (SP, streaming processor) とび、また複数ふくすうのCUDAコアをたばねる単位たんいをSMX (SM, streaming multiprocessor) とんでいるが、GPUでの演算えんざんは、複数ふくすうのSMXにたいして同一どういつ命令めいれい発行はっこうしていき、各々おのおののハードウェアスレッドにてられたデータにたいして並列へいれつてき演算えんざんおこなうスタイルとなる[31]。またWarp単位たんいないにおけるかくスレッドはすべて同一どういつ命令めいれい実行じっこうする(SIMT英語えいごばん[62]基本きほん概念がいねんとしてはAMDVLIWGraphics Core NextといったGPUアーキテクチャにおいても同様どうようである。

しかし、このGPGPUプログラミングがとく従来じゅうらいがたのCPUプログラミングとことなるてんは、共有きょうゆうメモリ(shared memory、シェアードメモリ)の存在そんざいである。共有きょうゆうメモリはしょう容量ようりょうだが高速こうそくで、ユーザープログラマーが明示めいじてき管理かんりできるキャッシュメモリ(≒L1キャッシュ)の仕組しくみをたし、複数ふくすうのコアでデータを共有きょうゆう交換こうかんする目的もくてき使用しようできる。なおかくAPIにおいては、CUDAは共有きょうゆうメモリ、OpenCLはローカルメモリ、DirectComputeはグループ共有きょうゆうメモリ[63]、そしてC++ AMPはタイル静的せいてきメモリ[64]という名称めいしょうで、それぞれ同等どうとう機能きのうそなえている。

たとえばFermi/Keplerマイクロアーキテクチャでは、1SMXあたり最大さいだい48KBの共有きょうゆうメモリを使用しようできるが[65]外部がいぶにあるDRAMにキャッシュなしでアクセスする場合ばあいくらべて、共有きょうゆうメモリのレイテンシは(スレッドあいだのバンクコンフリクトがないかぎり)100ばいちいさくなる。そのため、複数ふくすうのスレッドから参照さんしょうされるデータの一時いちじ場所ばしょとして共有きょうゆうメモリを活用かつようすることにより、高速こうそく並列へいれつアルゴリズム(たとえば高速こうそく総和そうわもとめる並列へいれつリダクションなど)や、GPUプログラミングにおける高速こうそく必要ひつようなコアレスアクセス(≒シーケンシャルアクセス)を実現じつげんすることができるとNVIDIAは説明せつめいしている[66]。しかしながら、最大さいだいでも48KBしかない共有きょうゆうメモリというハードウェア制約せいやくがアルゴリズムのはば制限せいげんをかけるため、共有きょうゆうメモリの存在そんざいはGPUプログラミングのむずかしさにもつながってしまう。また、共有きょうゆうメモリにきするさい、スレッドあいだ同期どうきをとるための処理しょりもプログラマーが明示めいじてき記述きじゅつする必要ひつようがある。

なお、インテルCPUのL2キャッシュメモリはL1キャッシュメモリにくらべて容量ようりょうおおきく、またプロセッサコアがわ直結ちょっけつされているが、NVIDIA GPUのL2キャッシュメモリはL1キャッシュメモリにくらべて容量ようりょうがほとんどわらず、またメモリがわ直結ちょっけつされているなど、データアクセス傾向けいこうちがいがハードウェア設計せっけい思想しそうちがいにも反映はんえいされており、単純たんじゅんにキャッシュメモリの容量ようりょうだけを比較ひかくして性能せいのう優劣ゆうれつめることはできない[67] [68] [69]

接続せつぞくバスの速度そくど

[編集へんしゅう]

コンピュータのマザーボードとdGPUを接続せつぞくするPCI Express規格きかくは、CPU-システムメモリあいだやGPU-ビデオメモリあいだくらべてはるかに帯域たいいきはばせまく、安易あんいにGPGPUを導入どうにゅうしようとするとデータ転送てんそうがボトルネックとなってぎゃく性能せいのう低下ていかまねいてしまう可能かのうせいもありうる[70]。このてんかんしては、NVIDIAが開発かいはつした独自どくじのインターコネクト技術ぎじゅつであるNVLink[71] [72]などの解決かいけつさく模索もさくされている。

開発かいはつおよびチューニングのむずかしさと移植いしょくせい

[編集へんしゅう]

2015ねん現在げんざい、GPGPU対応たいおうプログラムの開発かいはつ環境かんきょうAPIとして代表だいひょうてきなものはCUDAOpenCL、およびDirectComputeであり、GPGPU黎明れいめい開発かいはつ環境かんきょうくらべればはるかに開発かいはつしやすくなっている[73]ものの、依然いぜんとしてアクセラレーターとなるハードウェアを意識いしきしたGPGPU特有とくゆうのプログラミング知識ちしき不可欠ふかけつである。また、規格きかくによってある程度ていど標準ひょうじゅん抽象ちゅうしょうされているとはいえ、いずれもデバイスとの通信つうしんおこなうローレベルのAPIを使つかいこなさなければならないなど、通常つうじょうC/C++Fortranもちいたソフトウェア開発かいはつとは次元じげんことなるむずかしさがあり、導入どうにゅうのハードルがたかい。とくに OpenCL と DirectCompute はハードウェアに共通きょうつうにアクセスできる API を規定きていしているだけであり、CUDAよりもさらにローレベルの抽象ちゅうしょうである。このてんかんしては、アクセラレーターの存在そんざい抽象ちゅうしょうし、従来じゅうらいのCPUベース並列へいれつプログラミングよう共通きょうつう規格きかく OpenMPちかこうレベルプログラミング環境かんきょう提供ていきょうする OpenACCC++ AMP といった規格きかく徐々じょじょ整備せいびされつつある[74]

CPUじょう動作どうさするプログラムは環境かんきょうのぞき、ライブラリもふくめてこうレベルに洗練せんれんされた開発かいはつ環境かんきょうととのっていることがおおい。たとえばC++JavaC#言語げんごなどの代表だいひょうてき高級こうきゅう言語げんごでは、単純たんじゅん連続れんぞくメモリの配列はいれつ構造こうぞうだけでなく、リンクリスト二分にぶん探索たんさくハッシュテーブルといった基本きほんてきなデータ構造こうぞうはプログラミング言語げんご標準ひょうじゅんライブラリで提供ていきょうされていることがほとんどだが、GPUプログラミングの場合ばあい高速こうそく処理しょりできないという理由りゆうから[よう出典しゅってん]基本きほんてきには配列はいれつ構造こうぞうしか用意よういされていない。フォトンマッピング手法しゅほう開発かいはつしゃであるWann Jensen博士はかせによると、複雑ふくざつなデータ構造こうぞうをGPUじょうあつかおうとするとCPUよりもはるかに困難こんなんとなる場合ばあいおおいとひょうされている[75]ほかにも、GPUプログラミング言語げんごであるHLSLGLSL、およびOpenCL CではC++テンプレートのようなジェネリックプログラミング機能きのうがサポートされないため、生産せいさんせいひくい。なおBLASFFTかんしては、NVIDIAによるCUDA実装じっそうのcuBLAS[76]やcuFFT[77]、およびAMDによるOpenCL実装じっそうのclMath (clBLAS, clFFT) [78]存在そんざいする。そのほか、二分にぶん探索たんさくソート、リダクション、スキャンといったよく使つかわれるアルゴリズムにかんしては、NVIDIAによるCUDA実装じっそうのC++テンプレートベース並列へいれつアルゴリズムライブラリThrust[79]や、AMDによるOpenCL/C++ AMP実装じっそう同等どうとうライブラリBolt[80]存在そんざいするが、両者りょうしゃ互換ごかんせいはない。

また、GPUで演算えんざんした結果けっかをCPUでして利用りようする場合ばあい従来じゅうらいアーキテクチャではGPUメモリからCPUメモリへのデータ転送てんそう必要ひつようとなる。そのぎゃくもまたしかりである。こうしたCPU-GPUあいだのメモリ転送てんそうにかかる処理しょり時間じかんおよびプログラミングじょう手間てまが、性能せいのうのボトルネックやソフトウェア開発かいはつむずかしさにつながるという問題もんだいかかえている。これは物理ぶつりてきにメモリが分離ぶんりされているdGPUとCPUによる構成こうせいだけでなく、従来じゅうらいがたのオンボードグラフィックスやCPU内蔵ないぞうGPUといった、物理ぶつりメモリを共有きょうゆうする構成こうせいにおいても同様どうようである。CUDA[81]やOpenCL[82]にはソフトウェア(ドライバー)レベルでこの転送てんそう手間てま解決かいけつする仕組しくみとして統合とうごうメモリ (unified memory) 機能きのう共有きょうゆう仮想かそうメモリ (shared virtual memory) 機能きのう用意よういされてはいるが、あくまでメモリ空間くうかんのアドレッシングを仮想かそうして転送てんそう処理しょり自動じどうするだけの仕組しくみであり、アプリケーションプログラマーが明示めいじてき転送てんそう処理しょり記述きじゅつしてチューニング・最適さいてきする場合ばあいくらべてパフォーマンスじょう問題もんだいもある[83]。このてんかんしては、AMDが推進すいしんしているHSA (Heterogeneous System Architecture)[84] におけるhUMA (heterogeneous Uniform Memory Access) といった解決かいけつさく模索もさくされている。

GPGPUプログラムの移植いしょくせいかんしては、CUDAはNVIDIAハードウェア専用せんようであり、また DirectCompute (DirectX) はMicrosoftプラットフォーム(Microsoft WindowsXbox Oneなど)専用せんようという制約せいやくがある。一方いっぽうでOpenCLは、GPUだけでなく対応たいおうするあらゆるハードウェア・あらゆるプラットフォームへ展開てんかいできるたか移植いしょくせいっているが、性能せいのうかんするポータビリティはかならずしも確保かくほ保証ほしょうされず、場合ばあいによってはデバイスやチップごとにコードをチューニングする必要ひつようがある[85][86][87]

適合てきごう分野ぶんや

[編集へんしゅう]

GPGPUで性能せいのう向上こうじょうするアプリケーションのれいとして、下記かきげられる。

実際じっさい演算えんざん内容ないようとしては、行列ぎょうれつ演算えんざん配列はいれつのリダクション、およびフーリエ変換へんかんなどがげられる。

わったれいではカスペルスキー・ラボ現在げんざい[いつ?]Radeon HD 2900でおこなっている実証じっしょう試験しけんとして、GPUのパワーを使つかってセキュリティソフトによるおおまかなセキュリティチェックをおこな機能きのう開発かいはつしている。これによりCPUへの負担ふたんらすことができるとしている[5]

一方いっぽうで、大量たいりょう条件じょうけん分岐ぶんきともなそうやく研究けんきゅう遺伝子いでんし解析かいせきのような用途ようとにはスカラー計算けいさんてきしており、ベクトル計算けいさんやGPGPUベースの計算けいさんにはかないとされている[90]

実用じつようソフトウェアの登場とうじょう

[編集へんしゅう]

GPGPU技術ぎじゅつ話題わだいは、コンピュータ(とく資源しげんやスペースの制約せいやくつよいパーソナルコンピュータ)の進化しんかにおいて2000年代ねんだい中盤ちゅうばんまでのトレンドであり課題かだいであった。しかし、デモンストレーションばかりが先行せんこうし、実際じっさい活用かつようできるソフトウェアが発売はつばいされることはなかった。そもそも、CUDAやOpenCLなどの汎用はんようAPIや、それらに対応たいおうするDirectX 10世代せだい統合とうごうがたシェーダーアーキテクチャGPUが出現しゅつげんするまでは、GPGPU開発かいはつ環境かんきょう制約せいやくつよいリアルタイムグラフィックスけのAPIやシェーディング言語げんご直接ちょくせつ利用りようしたものか、もしくは研究けんきゅう機関きかん独自どくじ開発かいはつした固有こゆうのプログラミング言語げんご基盤きばんであり、ハードルもたかく、けっして開発かいはつ効率こうりつさい利用りようせいいとはえなかった[91] [92]

2008ねんあきから、S3がGPUを利用りようしたGPGPUよう写真しゃしん修正しゅうせいソフトウェア「S3FotoPro」を発表はっぴょう[93]、また動画どうが編集へんしゅう加工かこうソフトでは動画どうがエンコードソフトの代表だいひょうかくであるTMPGEncがCUDAに対応たいおうした[94]ことを皮切かわきりに、サイバーリンクPowerDirector 7がCUDAとATI Streamに対応たいおうした[95]。さらに、2009ねんにはSuper LoiLoScope (Pixel Shader 2.0を活用かつよう) が発売はつばい[96]サイバーリンクMediaShow Espresso (CUDAとATI Streamに対応たいおう) を発売はつばいしている。GPGPUを利用りようした無料むりょう利用りよう可能かのう動画どうがエンコードソフトとして、AMDのATI AVIVO (完全かんぜん無料むりょう) やNvidiaのBadaboom (30日間にちかん無料むりょう体験たいけんばん) 、MediacoderのCUDAエンコーダがげられる。

べいアドビCreative Suite 4 (CS4) の一部いちぶ製品せいひんにおいてCUDAベースのGPUアクセラレーションをサポートしていたが[97]、2010ねん5がつ28にち発売はつばい[98]したCreative Suite 5 (CS5) においてGPGPUを正式せいしきにサポートした[よう出典しゅってん]。CS5はOpenCLベースで開発かいはつされており、ほとんどすべての機能きのうにおいて[よう出典しゅってん]GPGPUによる演算えんざんおこなうことができる。本来ほんらいGPUは画像がぞう処理しょり得意とくいとするため、画像がぞう処理しょり主体しゅたいとする同社どうしゃのアプリケーションへの適性てきせいたかい。また、After Effects CCでは、レイトレーシングエンジンにNVIDIA OptiX英語えいごばん採用さいようしている[99]。そのにも、V-Rayなど、レイトレーシングのアクセラレータとしてGPUを活用かつようしているレンダラーが存在そんざいする[100]。AMDもOpenCLベースのレイトレーシングエンジンとして、Radeon ProRender (旧称きゅうしょうAMD FireRender) を開発かいはつ公開こうかいしている[101] [102] [103]

オープンソース統合とうごうがた3DCG作成さくせいソフトウェアBlenderでは、GIレンダリングエンジンであるCyclesにおいてNVIDIA CUDAによるGPUレンダリングが可能かのうとなっている。なお、バージョン2.6てんではOpenCLによるGPUレンダリングも試験しけんてき実装じっそうすすめられている[104]。また、Autodesk 3ds Maxサブスクリプションなどに搭載とうさいされている物理ぶつりベースのGIレンダリングエンジンであるNVIDIA Irayでは、CUDAベースのGPUアクセラレーションがおこなわれる[105] [106] [107]

そのビットコインをはじめとした暗号あんごう通貨つうか採掘さいくつ処理しょりにもGPUが使つかわれている[108]

このように、学術がくじゅつ研究けんきゅう目的もくてき産業さんぎょう用途ようと以外いがいにも、一般いっぱんてきなプロダクションけ・コンシューマーけにかんしてもGPGPU技術ぎじゅつ利用りようしたソフトウェアが登場とうじょうしており、GPGPUを一般いっぱん利用りようしゃ活用かつようできる環境かんきょうととのってきたといえる。しかし、万能ばんのう処理しょりをこなすCPUと比較ひかくして、GPUはピーキーな特性とくせいち、ソフトウェア開発かいはつにおいてはパイプライン処理しょり並列へいれつ計算けいさんとう知識ちしきだけでなく、ハードウェア仕様しようおよびAPIの知識ちしき必要ひつようになるため、いまだにGPGPU活用かつようのノウハウが一般いっぱんしたとはがたいというめんもある。しかし、そうした特別とくべつ専門せんもん知識ちしき要求ようきゅうされる実装じっそうについてはライブラリフレームワーク処理しょり連携れんけいさきとなるソフトウェア背後はいご隠蔽いんぺいするなど[注釈ちゅうしゃく 9]して、一般いっぱんてきアプリケーション開発かいはつするソフトウェア技術ぎじゅつしゃ内部ないぶ詳細しょうさい意識いしきすることなくGPGPUによる高速こうそく利用りようできるような配慮はいりょおこなわれている。

脚注きゃくちゅう

[編集へんしゅう]

注釈ちゅうしゃく

[編集へんしゅう]
  1. ^ 処理しょりおこなCPUと、データをメインメモリあいだのバスの速度そくどコンピュータ全体ぜんたい計算けいさん性能せいのう上限じょうげん規定きていすることをフォン・ノイマン・ボトルネックう。GPUメインメモリについても同様どうようのボトルネックが発生はっせいするため欠点けってんとしてげている。
  2. ^ つまり、固定こていちょうベクトル命令めいれいしかあつかえず、固定こていちょうレジスタのながさに一致いっちしないはしすうのデータについて別途べっと考慮こうりょ必要ひつようになるという問題もんだい発生はっせいする。 伝統でんとうてきスーパーコンピュータ多用たようされてきた専用せんよう設計せっけいベクトルプロセッサであれば可変長かへんちょうベクトル命令めいれいあつかえ、はしすうのデータにたいして別途べっと考慮こうりょする必要ひつようがないうえ効率こうりつよく計算けいさんおこなえるため、GPUが採用さいようする固定こていちょうレジスタは欠点けってんとなる。
  3. ^ 疎行列そぎょうれつにアクセスするさいおこなわれる、巨大きょだい配列はいれつデータを大域たいいきてきにインデックス参照さんしょういてくるランダムメモリアクセスを多用たようする操作そうさは、一般いっぱんてきなスカラがたCPUやGPGPUにとってはフォン・ノイマン・ボトルネックにより苦手にがて処理しょりとなる。
  4. ^ NVIDIAのRTX30シリーズでは単精度たんせいど倍精度ばいせいど演算えんざん個数こすうに64ばいがあり、理論りろんじょう倍精度ばいせいど演算えんざん性能せいのう単精度たんせいどの1/64となる[47]
  5. ^ たとえばGPGPUけのTesla P100でははん精度せいどでの演算えんざん性能せいのうが2ばいになるよう設計せっけいされている[49]
  6. ^ NVIDIA Ampere A100など
  7. ^ Direct X9以前いぜんのシェーダーは固定こてい機能きのう演算えんざん提供ていきょうするものであったが、DirectX 10以降いこうのDirectComputeAPIではGPUをゲームなどでの汎用はんようてき計算けいさんもちいることが可能かのうコンピュートシェーダー利用りようできる。[88]
  8. ^ れいとしてゲームエンジンのUnreal Engine 4やLuminous StudioのパーティクルシステムにおいてGPGPU技術ぎじゅつ利用りようがある [89]
  9. ^ たとえばOpenACCOpenMPなどをもちいると並列へいれつ処理しょりようかれていない通常つうじょうのC言語げんごのソースにたいして指示しじぎょう追加ついかすることでGPUに処理しょりをオフロードすることが可能かのうである[109]

出典しゅってん

[編集へんしゅう]
  1. ^ GPGPU | ビジネスパートナー | 東芝とうしばデジタルメディアエンジニアリング株式会社かぶしきがいしゃ
  2. ^ GPGPUソリューション | HPCシステムズはすべての研究けんきゅう開発かいはつしゃ計算けいさんりょく提供ていきょうします。
  3. ^ Hisa Ando 2017, p. 19.
  4. ^ 株式会社かぶしきがいしゃインプレス (2016ねん10がつ6にち). “後藤ごとうひろししげるのWeekly海外かいがいニュース】 NVIDIA次世代じせだいSoC「Xavier」は進化しんかばんDenverとVoltaを搭載とうさい”. PC Watch. 2023ねん6がつ19にち閲覧えつらん
  5. ^ プロセッサ開発かいはつのセンス ~だい4かい ベクトル・プロセッサ~ | 株式会社かぶしきがいしゃエヌエスアイテクス (NSITEXE,Inc.)” (2023ねん2がつ22にち). 2023ねん6がつ18にち閲覧えつらん
  6. ^ a b 「ベクトルがたスパコンはたかすぎる」、GPU利用りようのHPCが本格ほんかく - @IT”. atmarkit.itmedia.co.jp. 2023ねん6がつ21にち閲覧えつらん
  7. ^ 西川にしかわよし (2019). ゲーム制作せいさくしゃになるための3Dグラフィックス技術ぎじゅつ 改訂かいてい3はん. インプレス. p. 76. ISBN 978-4295007869 
  8. ^ Hisa Ando 2017, p. 213.
  9. ^ 2005ねんからNVIDIA所属しょぞくしており、CUDA考案こうあんするなどGPGPUのだい1人ひとりしゃとして業界ぎょうかい牽引けんいんしている。
  10. ^ a b Ian Buck | Research Projects”. graphics.stanford.edu. 2023ねん5がつ30にち閲覧えつらん
  11. ^ a b published, Alan Dang (2009ねん9がつ3にち). “Exclusive Interview: Nvidia's Ian Buck Talks GPGPU” (英語えいご). Tom's Hardware. 2023ねん5がつ30にち閲覧えつらん
  12. ^ ASCII. “業界ぎょうかい痕跡こんせきのこしてえたメーカー CG業界ぎょうかい牽引けんいんしたSGI (1/4)”. ASCII.jp. 2023ねん5がつ30にち閲覧えつらん
  13. ^ Ray Tracing on Programmable Graphics Hardware”. graphics.stanford.edu. 2023ねん5がつ30にち閲覧えつらん
  14. ^ a b Inc, Aetas. “2009ねん本格ほんかく始動しどうするGPGPUの世界せかい前編ぜんぺん~GPGPUってなに”. 4Gamer.net. 2023ねん5がつ29にち閲覧えつらん
  15. ^ 株式会社かぶしきがいしゃインプレス (2022ねん1がつ24にち). “ビデオカードの品薄しなうす価格かかく高騰こうとうまわされた1ねん価格かかく購入こうにゅうより高値たかねになることも ~ アキバのショップ店員てんいんかたる2021ねん その2 ~”. AKIBA PC Hotline!. 2023ねん5がつ30にち閲覧えつらん
  16. ^ いちじょう, 宮田みやた; 誠史せいじ, 高橋たかはし; あつし, 黒田くろだ (2005). “Gpuコンピューティングの動向どうこう将来しょうらいぞう. 芸術げいじゅつ学会がっかい論文ろんぶん 4 (1): 13–19. doi:10.3756/artsci.4.13. https://www.jstage.jst.go.jp/article/artsci/4/1/4_1_13/_article/-char/ja/. 
  17. ^ AMD Radeon™ R9シリーズ・グラフィックス・カード, 2 ops/cycle × 1050 MHz × 4096 cores.
  18. ^ AMD FirePro™ S9170サーバーGPU
  19. ^ GPGPUのキラーアプリケーションは「グラフィックス」 - @IT
  20. ^ 4Gamer.net ― OpenGLはDirectX 11をえ,OpenGL ESはがたゲーム同等どうとう以上いじょうに。Khronosの最新さいしん動向どうこうレポート
  21. ^ PGI GPUようアクセラレータコンパイラ 情報じょうほうサイト - GPU / GPGPU / CUDA 対応たいおう、CUDA Fortran
  22. ^ これからの並列へいれつ計算けいさんのためのGPGPU連載れんさい講座こうざ(V) 疎行列そぎょうれつベクトルせき題材だいざいとしたCUDA最適さいてきプログラミング
  23. ^ Harish, Pawan; Narayanan, P. J. (2007). “Accelerating large graph algorithms on the GPU using CUDA”. Lecture Notes in Computer Science (Springer Berlin Heidelberg) 4873: 197-208. doi:10.1007/978-3-540-77220-0_21. http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.102.4206. 
  24. ^ 【レビュー】549ドルのGeForce GTX TITAN対抗たいこう「Radeon R9 290X」をベンチマーク - PC Watch
  25. ^ 【4Gamer.net】[特集とくしゅう]「GeForce 8800」のポイントをブロックダイアグラムからさぐ
  26. ^ 【4Gamer.net】 - 西川にしかわよしの3Dゲームエクスタシー - ATI, Radeon X1000シリーズ発表はっぴょうでSM3.0世代せだい突入とつにゅう
  27. ^ 後藤ごとうひろししげるのWeekly海外かいがいニュース】GTCの目玉めだまの1つ「Tegra 4/4i」のCPUアーキテクチャ
  28. ^ Kepler GPUアーキテクチャとプログラム最適さいてき (2) GPUはどうやって命令めいれい処理しょりしているのか | マイナビニュース
  29. ^ 後藤ごとうひろししげるのWeekly海外かいがいニュース】PlayStation 4で採用さいようされたAMDのGCNアーキテクチャ
  30. ^ コンピュータアーキテクチャのはなし (322) GPUがもちいるメモリのアクセス時間じかん短縮たんしゅく方法ほうほう | マイナビニュース
  31. ^ a b だいかい GPUの構造こうぞう | G-DEP
  32. ^ 4Gamer.net ― 「GeForce GTX TITAN」登場とうじょう。500えんだまよりおおきなモンスターGPUの“性能せいのう以外いがい”を徹底てってい解説かいせつ
  33. ^ AMD、R580コアをベースにしたHPC専用せんようプロセッサ「Stream Processor」 | マイナビニュース
  34. ^ AMDのGPGPU戦略せんりゃくしんしょうへ - ATI Streamの展望てんぼう、DirectX Compute Shaderの衝撃しょうげき (1) Radeon HD 4000シリーズでネイティブGPGPU | マイナビニュース
  35. ^ AMD's RV670 does double-precision at half the speed | TG Daily
  36. ^ AMD FireStream™9250 - FirePro Server - 製品せいひん情報じょうほう - 株式会社かぶしきがいしゃエーキューブ
  37. ^ AMD FirePro S9100 - FirePro Server - 製品せいひん情報じょうほう - 株式会社かぶしきがいしゃエーキューブ
  38. ^ AMD FirePro S9150 - FirePro Server - 製品せいひん情報じょうほう - 株式会社かぶしきがいしゃエーキューブ
  39. ^ NVIDIA Tesla C1060 - 株式会社かぶしきがいしゃ 日本にっぽんコンピューティングシステム
  40. ^ Tesla C2050 / C2070 GPUコンピューティングプロセッサ
  41. ^ NVIDIA TESLA C2050 - 株式会社かぶしきがいしゃ エルザ ジャパン
  42. ^ 4Gamer.net ― NVIDIA,Keplerベースのしん世代せだいTeslaを発表はっぴょう。「GK110」コア採用さいようの「Tesla K20」が年内ねんない登場とうじょう予定よてい
  43. ^ NVIDIA Tesla K20 | 株式会社かぶしきがいしゃ エルザ ジャパン
  44. ^ NVIDIA、さい上位じょういGPUアクセラレータ「Tesla K40」を発表はっぴょう | マイナビニュース
  45. ^ SC14 - NVIDIAがさい上位じょうい科学かがく技術ぎじゅつ計算けいさんようGPU「Tesla K80」を発表はっぴょう | マイナビニュース
  46. ^ サーバーようのGPUアクセラレーター、Tesla K40 と Tesla K80”. NVIDIA Corporation. 2015ねん10がつ28にち閲覧えつらん
  47. ^ 西川にしかわよしの3DGE:GeForce RTX 30シリーズのアーキテクチャをさぐる。CUDA Coreの増量ぞうりょうとRT Coreの高性能こうせいのう注目ちゅうもく”. 4Gamer. 2023ねん6がつ21にち閲覧えつらん
  48. ^ 大原おおはら雄介ゆうすけ (2015ねん3がつ18にち). “【レビュー】NVIDIA GeForce GTX TITAN Xをためす - Maxwell世代せだいしんフラグシップGPUの実力じつりょくさぐる (13) ベンチマーク結果けっか「Basemark CL v1.1」”. マイナビニュース. 2015ねん11月26にち閲覧えつらん
  49. ^ 後藤ごとうひろししげるのWeekly海外かいがいニュース】コンピューティングとグラフィックスへ分化ぶんかするNVIDIA GPU - PC Watch”. 2023ねん6がつ20日はつか閲覧えつらん
  50. ^ Hisa Ando 2017, p. 148,150.
  51. ^ Hisa Ando 2017, p. 304.
  52. ^ Hisa Ando 2017, p. 306.
  53. ^ 後藤ごとうひろししげるのWeekly海外かいがいニュース: GeForce GTX 280の倍精度ばいせいど浮動ふどう小数点しょうすうてん演算えんざん
  54. ^ 4Gamer.net ― AMD,世界せかいはつのDX11 GPU「ATI Radeon HD 5800」を発表はっぴょう。HD 4800の大幅おおはば進化しんかがた
  55. ^ 4Gamer.net ― 「ATI Radeon HD 5800」徹底てってい分析ぶんせき(3)~3DグラフィックスにとくしたAMD
  56. ^ 科学かがく技術ぎじゅつ計算けいさん演算えんざん能力のうりょくげられたGPUアーキテクチャ「Fermi」 (2) 科学かがく技術ぎじゅつ計算けいさんけのさまざまな工夫くふう | マイナビニュース
  57. ^ GTC 2014 - GPUの浮動ふどう小数点しょうすうてん演算えんざん精度せいど:理論りろん実践じっせん(前編ぜんぺん) | マイナビニュース
  58. ^ ハイブリッドアーキテクチャでスパコン市場いちばいどむNVIDIA - 後藤ごとうひろししげるのWeekly海外かいがいニュース(PC Watch, Impressしゃ、2012ねん4がつ16にち配信はいしん、2012ねん4がつ16にち閲覧えつらん
  59. ^ How to Access Global Memory Efficiently in CUDA C/C++ Kernels | Parallel Forall
  60. ^ 後藤ごとうひろししげるのWeekly海外かいがいニュース】NVIDIAしん世代せだいGPU「Maxwell」のSMアーキテクチャ - PC Watch
  61. ^ 後藤ごとうひろししげるのWeekly海外かいがいニュース】 AMDのしんGPUアーキテクチャ「Graphics Core Next」の秘密ひみつ
  62. ^ NVIDIA GPUの構造こうぞうとCUDAスレッディングモデル
  63. ^ Variable Syntax (Windows)
  64. ^ tile_static Keyword
  65. ^ 高速こうそく演算えんざん だい25かい 「Kepler解説かいせつその2 〜Kepler世代せだいしん機能きのう〜」 | G-DEP
  66. ^ Using Shared Memory in CUDA C/C++ | Parallel Forall
  67. ^ コンピュータアーキテクチャのはなし (336) CPUとことなるGPUにおけるコアと2キャッシュの関係かんけいせい | マイナビニュース
  68. ^ コンピュータアーキテクチャのはなし (337) じつはそれほどはやくはないGPUのメモリアクセス時間じかん | マイナビニュース
  69. ^ 「Skylake-K」とはいかなるCPUなのか。「Core i7-6700K」ベンチマークでしん世代せだいマイクロアーキテクチャの実態じったいさぐる - 4Gamer.net
  70. ^ 【1カ月かげつ集中しゅうちゅう講座こうざほねまで理解りかいするPCアーキテクチャ(GPUへん) だい4かい ~GPGPU性能せいのうげのカギとなるCPUとGPUの連携れんけい - PC Watch
  71. ^ 後藤ごとうひろししげるのWeekly海外かいがいニュース】NVIDIAの次期じきGPU「Pascal」の概要がいよう - PC Watch
  72. ^ [GTC 2016]西川にしかわよしの3DGE:Teslaとして登場とうじょうしたしん世代せだいGPU「Pascal」,その詳細しょうさいせまる - 4Gamer.net
  73. ^ » アクセラレータプログラミングの未来みらい
  74. ^ 4Gamer.net ― えてきたAMDの次世代じせだいGPUアーキテクチャ。なぜAMDはVLIWをてるのか
  75. ^ レンダリング手法しゅほうについて-CPU or GPU? | KeyShot™総合そうごうサイト
  76. ^ cuBLAS - NVIDIA CUDA ZONE
  77. ^ cuFFT - NVIDIA CUDA ZONE
  78. ^ clMath - AMD
  79. ^ Thrust - NVIDIA CUDA ZONE
  80. ^ Bolt C++ Template Library - AMD
  81. ^ スパコン最大さいだい学会がっかい「SC13」に先端せんたん技術ぎじゅつ (5) SC13 - CPU-GPU統一とういつメモリを実現じつげんしたCUDA 6(後編こうへん) | マイナビニュース
  82. ^ OpenCL* 1.2 の活用かつよう: インテル® プロセッサー・グラフィックスでバッファーコピーを最小限さいしょうげんおさえてパフォーマンスを向上こうじょうする方法ほうほう | iSUS
  83. ^ NVIDIA CUDA 6.0 Unified Memory Performance | Acceleware Ltd.
  84. ^ 後藤ごとうひろししげるのWeekly海外かいがいニュース】AMD、しんGPU「Tonga」がHSAの最終さいしゅうがたであることをあきらかに - PC Watch
  85. ^ » コンパイラ、そしてもっと:アクセラレーター・プログラミング
  86. ^ KAKEN - GPUによるFFT計算けいさん自動じどうチューニング手法しゅほう研究けんきゅう(22680002) - 2011年度ねんど研究けんきゅう実績じっせき報告ほうこくしょ
  87. ^ GPUとXeon Phi、どちらが計算けいさん処理しょりアクセラレータに最適さいてきか? - 実際じっさい実行じっこう性能せいのう比較ひかくするワークショップを首都しゅと大学だいがく東京とうきょう開催かいさい (4) アクセラレータの課題かだい問題もんだいてんかたられたパネルディスカッション | マイナビニュース
  88. ^ 清原きよはら隆行たかゆき『HLSL シェーダーのしるべしょ シェーディングの基礎きそからレイトレーシングまで』しょうおよげしゃ、2021ねん6がつ9にち、454ぺーじISBN 978-4798164281 
  89. ^ 西川にしかわよし (2019). ゲーム制作せいさくしゃになるための3Dグラフィックス技術ぎじゅつ 改訂かいてい3はん. インプレス. p. 44. ISBN 978-4295007869 
  90. ^ ベクトルがたスパコンの存在そんざい意義いぎ――地球ちきゅうシミュレータのいま (1/2) - ITmedia エンタープライズ
  91. ^ "これからの並列へいれつ計算けいさんのためのGPGPU連載れんさい講座こうざ(I) GPUとGPGPUの歴史れきし特徴とくちょう", 東京大学とうきょうだいがく情報じょうほう基盤きばんセンター, 大島おおしま聡史さとし
  92. ^ SIGGRAPH 2005 - GPUをCPUてき活用かつようするGPGPUの可能かのうせい (5) GPGPUけプログラミング言語げんご登場とうじょうはじまる | マイナビニュース
  93. ^ [1]
  94. ^ [2]
  95. ^ [3]
  96. ^ [4]
  97. ^ 4Gamer.net ― NVIDIAせいGPUが「Photoshop」「After Effects」「Premiere Pro」の最新さいしんばん「CS4」アクセラレーションをサポート。ムービーでその効果こうかをチェック
  98. ^ ZDNet Japan Staff (2010ねん4がつ12にち). “アドビ、クリエイティブ製品せいひん最新さいしんばん「CS5」を5月28にち一斉いっせい発売はつばい”. CNET Japan. 2010ねん8がつ18にち閲覧えつらん
  99. ^ GPU changes (for CUDA and OpenGL) in After Effects CC (12.1) | After Effects region of interest
  100. ^ GPUレイトレーシング | NVIDIA
  101. ^ [SIGGRAPH 2014]NVIDIAがゲームけのリアルタイム大局たいきょく照明しょうめい,IntelはHaswellようDX12ドライバのデモを一般いっぱん展示てんじセクションで披露ひろう - 4Gamer.net
  102. ^ AMDはしんGPU「Radeon Pro」を,NVIDIAは360ビデオようSDKをアピール。プロセッサメーカーによる「SIGGRAPH 2016」の展示てんじをレポート - 4Gamer.net
  103. ^ Radeon ProRender Technology - AMD
  104. ^ Doc:JA/2.6/Manual/Render/Cycles/GPU Rendering - BlenderWiki
  105. ^ NVIDIA iray | NVIDIA
  106. ^ NVIDIA iray - Design Rendering with CUDA Parallel Processing | NVIDIA
  107. ^ NVIDIA Advanced Rendering: NVIDIA Iray
  108. ^ Bitcoinマイニングはまさに軍拡ぐんかく競争きょうそう素人しろうとことわりの現状げんじょうとは? - GIGAZINE
  109. ^ Hisa Ando 2017, p. 232.

参考さんこう文献ぶんけん

[編集へんしゅう]
  • Hisa Ando『[増補ぞうほ改訂かいてい]GPUをささえる技術ぎじゅつ技術評論社ぎじゅつひょうろんしゃ、2017ねん7がつ13にちISBN 978-4-297-11954-6 

関連かんれん項目こうもく

[編集へんしゅう]