GPGPU

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

GPGPU(General-purpose computing on graphics processing units; GPUによる汎目的計算)とは、GPUの演算資源を画像処理以外の目的に応用する技術のことである。

概要[編集]

GPUは一般的に画像処理を専門とする演算装置であり、多くの場合、CPUと呼ばれる主演算装置の制御の下で用いられる動画信号生成専用の補助演算用ICである。動画像の実時間内での生成は高負荷な演算能力が要求されるが、その多くが定式化された単純な演算の繰り返しであるためハードウェア化に向いており、GPUを製造している半導体メーカー数社からは、高速なメモリ・インターフェイス機能と高い画像演算能力を備えたIC製品のシリーズがいくつも製造・販売されている。

特に1990年代中盤以降は3D描画性能が劇的に向上し、それに伴いベクトル・行列演算を中心としたSIMD演算機の色彩が強くなってきた。2000年代に入ると、表現力の向上を求めて固定機能シェーダーからプログラマブルシェーダーへの移行が進み、演算の自由度・柔軟性(プログラマビリティ)が飛躍的に増した。そこでこれをグラフィックス・レンダリングのみならず、他の数値演算にも利用しようというのがGPGPUのコンセプトである。

最高のシングル理論演算性能を持つGPU・MIC・CPU (2015年3月現在)
種別 単精度 倍精度
TFLOPS CPU比 TFLOPS CPU比
GPU 6.144
(NVIDIA GeForce GTX TITAN X)[1]
4.64 2.53
(AMD FirePro S9150)[2]
3.82
MIC 2.416
(Xeon Phi 7120P)[要出典]
1.82 1.208
(Xeon Phi 7120P)[要出典]
1.82
CPU 1.325
(Xeon E5-2699 v3)[要出典]
1 0.662
(Xeon E5-2699 v3)[要出典]
1

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

2015年現在、GPUの浮動小数点演算能力は単精度で6TFLOPSをオーバーした一方で、CPUはサーバー向けでも単精度は1TFLOPS台に留まっている。GPUは構成が単純であるためにCPUよりも集積化の点で有利であることから浮動小数点演算での効率がよく、またGPU専用にローカル接続されたメモリIC (VRAM) とのバンド幅を広く備えるために、CPUと比べて性能比で安価かつ成長の伸び率が高い[3]。さらにCPUよりも電力あたりの理論演算性能(ワットパフォーマンス、Performance per Watt)が高いのもGPUの特徴である。またGPUの主な使途がゲーム(PCゲーム)と動画再生で、ゲームをしないユーザーにとって余り気味の資源ということもあって注目されている。

2015年現在におけるGPGPU対応のグラフィックスカード(グラフィックスチップ)単体製品(dGPU)としては、NVIDIA社のNVIDIA GeForceおよびNVIDIA Quadroシリーズや、AMD社のAMD RadeonおよびAMD FireProシリーズなどが代表として挙げられる(ただし後述するGPGPU対応APIをサポートするのはDirectX 10世代以降の製品となる)。CPU統合型GPU(iGPU)に関しては、NVIDIA社のNVIDIA Tegraシリーズ、AMD社のAMD APUシリーズ、そしてIntel社の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)、そしてKhronosグループによる標準規格「OpenCL」が現われ、GPGPU活用の幅が広がりつつある。

なお、DirectX (Direct3D) はバージョン11でGPUによる汎用演算用のステージであるコンピュートシェーダー(DirectCompute)を、またOpenGLはバージョン4.3で同様のコンピュートシェーダーを導入する[4]など、グラフィックスAPIのほうにも従来のパイプラインに加えてGPGPU機能を活用するための変化が現れつつある。

その他、マイクロソフトの「C++ AMP」や、PGI英語版の「OpenACC英語版[5]など、DirectCompute/OpenCL/CUDAといったローレベルAPIをバックエンドとしながら、従来のC/C++FortranにおけるOpenMPに近い高レベル並列プログラミング環境を提供するアクセラレータ系ライブラリ・言語拡張も出現している。

特徴と課題[編集]

GPUはメモリにシーケンシャルにアクセスし、かつ条件分岐の無い計算(演算密度の高い処理)に強い。そのような例に行列計算がある。苦手な物の代表として二分探索がある。二分探索は条件分岐だらけなうえ、メモリにランダムアクセスする。ポインタをたどる操作もメモリにランダムアクセスするため、連結リスト木構造なども苦手である。密行列は得意だが、疎行列は苦手で、東京大学情報基盤センターによると100倍遅い[6]。グラフ計算においては、例えば最短経路問題では、完全グラフのような密グラフに対しては高速に計算できるが、頂点から数本しか辺が出ていないような疎グラフに対しては遅い[7]

条件分岐[編集]

GPUはシェーダープロセッサ(ストリームプロセッサ[8]、ストリーミングプロセッサ[9]とも)と呼ばれる演算ユニットを多数持ち、複数のシェーダープロセッサをまとめてクラスタとしている。これらの演算器に命令を与えるインストラクション・ユニットはクラスタごとに1台しか無く、クラスタを構成するシェーダープロセッサはそれぞれ異なるデータを与えられ、そのデータに対して同じ命令内容を一度に実行する。このようなSIMD型データ処理は3次元演算やマルチメディア処理に効果を発揮する一方で、命令中に条件分岐による分岐が入るとオーバーヘッドがかさみ、途端に効率を落としてしまう。今日のCPUでは、このようなペナルティを最小限にするためにプリフェッチ/プリデコードや投機実行/レジスタ・リネーミングといった機能を備えているが、GPUでは備えていない(限定的な条件付きで投機的実行を行なえるものもある。GPUでの動的分岐はDirectX 9.0c世代以降でようやく現実的になった[10][11])。

また、シェーダープロセッサ間でデータをやりとりする場合、遠くのデータバスを経由することになり、それがボトルネックとなってしまう。この点に関しては、DirectX 10世代の統合型シェーダーアーキテクチャ以降のハードウェアに搭載されている、小容量だがプロセッサグループ内で共有することのできる高速なキャッシュメモリ(共有メモリ)を介することで、プロセッサグループ内でのデータ交換やメモリI/Oの効率を高めることができる[12] [13]

一般のアプリケーションで条件分岐が存在しないものは珍しく、こういった制約によってGPUはオフィス・スイートのようなアプリケーションの実行には不向きである。GPGPUの発展にはいかに効率を落とさず条件分岐を行うかというのが1つの課題となっている。原理的にはシンプルなアルゴリズム構造を持ったプログラムによって、並列データ処理に最適化することがGPGPUの特長を最大限引き出すことにつながるといえる。

浮動小数点演算[編集]

単精度浮動小数点演算に関してはCPUをはるかに上回る理論演算性能とスケーラビリティを持つGPUだが、倍精度浮動小数点演算に関しては様相が異なる。もともとGPUが扱う多くの画像演算(特にリアルタイム3Dグラフィックス)では、整数演算や単精度の浮動小数点演算で足りてしまうために浮動小数点演算器は仮数部が24ビット程度とそれほど広くなく、単精度の演算器で倍精度の浮動小数点演算を行なうには、分割して幾度も演算器を使う必要があり、性能を大きく落とす要因となる。なお倍精度対応が必須とされる科学技術計算分野を含めたHPC向けに設計された製品では、倍精度専用の演算器を搭載・有効化しているものもある[14]

AMD2006年に自社のGPU「R580」をベースとした、単精度浮動小数点演算対応のストリームプロセッシング向け製品「AMD Stream Processor」(第1世代AMD FireStream)を発表[15]、続いて2007年R6xxコアを使用した業界初の倍精度浮動小数点演算対応HPC向けGPUである「AMD FireStream 9170」(第2世代AMD FireStream)を発売[16]した(ただし倍精度の理論演算性能は単精度の場合の1/5となる[17])。また2008年に発売されたRADEON HD 4850は1チップでは世界初の1TFLOPS(単精度)を達成し、このRADEON HD 4850にも使用されたR7xxコアを使用して低価格かつ高性能を売りに、HPC分野向けに第3世代AMD FireStreamを発売[18]することになった。2010年には、さらに高性能化した第4世代AMD FireStreamを発売している。2014年に発売されたAMD FirePro S9100/S9150では倍精度演算性能が強化され、倍精度の理論演算性能は単精度の場合の1/2になっている[19] [20]

NVIDIAも、自社のGPU「G80」をベースとした、単精度浮動小数点演算対応のHPC向け製品「Tesla C870」を2007年に投入、さらに2008年に発売された NVIDIA Tesla C1060 で倍精度に対応したが、単精度933GFLOPSに比べて倍精度は1/12の78GFLOPSとなっており[21]、倍精度演算性能が極端に低かった。2010年に発売された Fermi 世代の Tesla 20 シリーズ[22] [23]では倍精度演算性能が強化され、倍精度の理論演算性能は単精度の場合の1/2になったが、2012年に発売された Kepler 世代の Tesla K20 シリーズ[24] [25]では倍精度の理論演算性能は単精度の場合の1/3となっている。

2015年現在でも、GPUにおける倍精度演算に関してはHPC向けを除き、省電力性能やゲーミング性能を重視・維持するために必要最低限の性能しか用意されないことが多い。また倍精度専用の演算ユニットでは単精度の演算を行なうことはできないため、単精度を優先するか、それとも倍精度を優先するかはチップ設計段階におけるトレードオフとなる。総合的には、依然としてGPUは倍精度の浮動小数点演算が不得意であると言える。

IEEE 754サポートおよびFMA命令[編集]

DirectX 11対応となるEvergreen世代以降のAMD GPU、およびFermi世代以降のNVIDIA GPUでは、浮動小数点の演算精度はIEEE 754規格に準拠したものとなっている。なおNVIDIA GPUおよびAMD GPUでは融合積和演算命令 (FMA) をサポートしているため、CPUで同じ内容の処理をFMAを使わず実行した場合と比べて、GPUによる演算結果が異なることもある[26] [27] [28] [29] [30]

メモリ[編集]

メモリ環境についても、演算入力は少数の格子点データと幾分大きなテクスチャ・データだけであり[疑問点 ]、演算出力は画像1枚程度の大きさのピクセルごとに3色[疑問点 ]のデータを保持しながら順次それらを送り出すだけで済むため、相応に大きな[疑問点 ]外部の半導体メモリ(グラフィックスメモリ/ビデオメモリ/デバイスメモリ/VRAM)とかなり広い[疑問点 ]メモリバンド幅による接続で十分に対応しており、演算対象データの局所性が高いのでグラフィックスメモリと内部キャッシュによってデータの読み書き性能が向上すると同時に演算も途切れずに順次行える傾向が強い。

基本的にGPUは、配列構造の単純なデータを半精度/単精度程度の浮動小数点演算によって順番に処理することで2次元の動画像データを実時間内に生成することに特化しているため、それ以外の用途ではあまり高い性能は期待できない。リアルタイム画像処理専用ICの流用では、科学技術計算でも倍精度以上の浮動小数点演算(拡張倍精度・四倍精度など)を必要とするものや、演算の局所性が低いものではそれほど高い性能は得られない。リアルタイム画像処理専用ではなく、GPUから派生して新たに開発されたGPGPU用のICでは、倍精度浮動小数点演算やより広いメモリ空間に対応したものがあり、これらは広範な科学技術計算への利用が期待される。なお、コンシューマー向けの画像処理分野ではほとんど必要とされないメモリの冗長機構であるECCHPC分野では必須とされるため、ICを共用する場合に制約となる[31]

共有メモリ[編集]

GPUによるVRAMへのアクセスは、複数のプロセッサ群によって並列的に発生するため、連続したメモリ領域に対するコアレスアクセス(coalesce access、≒シーケンシャルアクセス)を行なうことで効率化・高速化できる[32]。NVIDIA GPUでは32のハードウェアスレッドを束ねるバッチ単位をWarp[33]と呼び、AMD GPUでは64のハードウェアスレッドを束ねるバッチ単位をWavefront[34]と呼んでいるが、これらのユニット内ではプロセッサが完全に同期して動作するため、バッチ単位ごとにまとめて連続領域にアクセス(コアレスアクセス)することで効率が良くなる。逆に言えば、バッチ単位内のスレッドがそれぞれ遠く離れたばらばらのアドレスにアクセスするような非コアレスアクセス(≒ランダムアクセス)は効率が悪くなる。

GPGPUの本質は、大量の演算器によって実現されるハードウェアマルチスレッド集合を用いたデータ並列演算により性能を稼ぐ点にある。例えば NVIDIA GPU の Fermi/Kepler マイクロアーキテクチャでは、演算器の最小単位を CUDA コア (SP, streaming processor) と呼び、また複数の CUDA コアを束ねる単位を SMX (SM, streaming multiprocessor) と呼んでいるが、GPU での演算は、複数の SMX に対して同一の命令を発行していき、各々のハードウェアスレッドに割り当てられたデータに対して並列的に演算を行なうスタイルとなる[35]。またWarp単位内における各スレッドはすべて同一の命令を実行する(SIMT英語版[36]。基本概念としてはAMDVLIWGCN英語版といったGPUアーキテクチャにおいても同様である。

しかし、このGPGPUプログラミングが特に従来型のCPUプログラミングと異なる点は、共有メモリ(shared memory、シェアードメモリ)の存在である。共有メモリは小容量だが高速で、ユーザープログラマーが明示的に管理できるキャッシュメモリ(≒L1キャッシュ)の仕組みを果たし、複数のコアでデータを共有・交換する目的に使用できる。なお各APIにおいては、CUDAは共有メモリ、OpenCLはローカルメモリ、DirectComputeはグループ共有メモリ[37]、そしてC++ AMPはタイル静的メモリ[38]という名称で、それぞれ同等機能を備えている。

例えば Fermi/Kepler マイクロアーキテクチャでは、1SMX あたり最大48KBの共有メモリを使用できるが[39]、外部にある DRAM にキャッシュなしでアクセスする場合と比べて、共有メモリのレイテンシは(スレッド間のバンクコンフリクトがないかぎり)100倍小さくなる。そのため、複数のスレッドから参照されるデータの一時書き込み場所として共有メモリを活用することにより、高速な並列アルゴリズム(たとえば高速に総和を求める並列リダクションなど)や、GPUプログラミングにおける高速化に必要なコアレスアクセス(≒シーケンシャルアクセス)を実現することができると NVIDIA は説明している[40]。しかしながら、最大でも48KBしかない共有メモリというハードウェア制約がアルゴリズムの幅に制限をかけるため、共有メモリの存在はGPUプログラミングの難しさにもつながってしまう。また、共有メモリに読み書きする際、スレッド間の同期をとるための処理もプログラマーが明示的に記述する必要がある。なおインテルの CPU の場合、キャッシュメモリが Kepler に比べて大きいため、DRAM に対するランダムアクセスの遅さを隠蔽している[要出典]

接続バスの速度[編集]

その他、コンピュータのマザーボードとディスクリートGPUを接続するPCI-Express規格は、CPU-システムメモリ間やGPU-ビデオメモリ間と比べてはるかに帯域幅が狭く、安易にGPGPUを導入しようとするとメモリ転送がボトルネックとなって逆に性能の低下を招いてしまう可能性もありうる[41]。この点に関しては、NVIDIAが開発を進めているNVLink[42]などの解決策が模索されている。

開発およびチューニングの難しさと移植性[編集]

2015年現在、GPGPU対応プログラムの開発環境・APIとして代表的なものはCUDAOpenCL、およびDirectComputeであり、GPGPU黎明期の開発環境に比べればはるかに開発しやすくなっている[43]ものの、依然としてアクセラレーターとなるハードウェアを意識したGPGPU特有のプログラミング知識が不可欠である。また、規格によってある程度標準化・抽象化されているとはいえ、いずれもデバイスとの通信を行なうローレベルのAPIを使いこなさなければならないなど、通常の C/C++Fortran を用いたソフトウェア開発とは次元の異なる難しさがあり、導入のハードルが高い。特に OpenCL と DirectCompute はハードウェアに共通にアクセスできる API を規定しているだけであり、CUDAよりもさらにローレベルの抽象度である。この点に関しては、アクセラレーターの存在を抽象化し、従来のCPUベース並列プログラミング用の共通規格 OpenMP に近い高レベルプログラミング環境を提供する OpenACC英語版C++ AMP といった規格も徐々に整備されつつある[44]

CPU上で動作するプログラムは組み込み環境を除き、ライブラリも含めて高レベルに洗練された開発環境が整っていることが多い。例えばC++JavaC#言語などの代表的な高級言語では、単純な連続メモリの配列構造だけでなく、リンクリスト二分探索木ハッシュテーブルといった基本的なデータ構造はプログラミング言語標準ライブラリで提供されていることがほとんどだが、GPUプログラミングの場合は高速に処理できないという理由から[要出典]基本的には配列構造しか用意されていない。フォトンマッピング手法の開発者であるWann Jensen博士によると、複雑なデータ構造をGPU上で扱おうとするとCPUよりもはるかに困難となる場合が多いと評されている[45]。他にも、GPUプログラミング言語であるHLSLGLSL、およびOpenCL CではC++テンプレートのようなジェネリックプログラミング機能がサポートされないため、生産性が低い。なおBLASFFTに関しては、NVIDIAによるCUDA実装のcuBLAS[46]やcuFFT[47]、およびAMDによるOpenCL実装のclMath (clBLAS, clFFT) [48]が存在する。そのほか、二分探索ソート、リダクション、スキャンといったよく使われるアルゴリズムに関しては、NVIDIAによるCUDA実装のC++テンプレートベース並列アルゴリズムライブラリThrust[49]や、AMDによるOpenCL/C++ AMP実装の同等ライブラリBolt[50]が存在するが、両者に互換性はない。

また、GPUで演算した結果をCPUで読み出して利用する場合、従来アーキテクチャではGPUメモリからCPUメモリへのデータ転送が必要となる。その逆もまた然りである。こうしたCPU-GPU間のメモリ転送にかかる処理時間およびプログラミング上の手間が、性能のボトルネックやソフトウェア開発の難しさにつながるという問題も抱えている。これは物理的にメモリが分離されているディスクリートGPUとCPUによる構成だけでなく、従来型のオンボードグラフィックスやCPU内蔵GPUといった、物理メモリを共有する構成においても同様である。CUDA[51]やOpenCL[52]にはソフトウェア(ドライバー)レベルでこの転送の手間を解決する仕組みとして統合メモリ (unified memory) 機能や共有仮想メモリ (shared virtual memory) 機能が用意されてはいるが、あくまでメモリ空間のアドレッシングを仮想化して転送処理を自動化するだけの仕組みであり、アプリケーションプログラマーが明示的に転送処理を記述してチューニング・最適化する場合と比べてパフォーマンス上の問題もある[53]。この点に関しては、AMDが推進しているHSA (Heterogeneous System Architecture英語版)[54] におけるhUMA (heterogeneous Uniform Memory Access) といった解決策が模索されている。

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

適合分野[編集]

GPGPUで性能が向上するアプリケーションとしては、

演算としては、

などが期待されている[58]

実用ソフトウェアの登場[編集]

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

2008年秋から、S3がGPUを利用したGPGPU用写真修正ソフトウェア「S3FotoPro」を発表[61]、また動画編集加工ソフトでは動画エンコードソフトの代表格であるTMPGEncがCUDAに対応した[62]ことを皮切りに、CyberlinkPowerDirector 7がCUDAとATI Streamに対応した[63]。さらに、2009年にはSuper LoiLoScope (Pixel Shader 2.0を活用) が発売[64]CyberlinkMediaShow Espresso (CUDAとATI Streamに対応) を発売している。GPGPUを利用した無料で利用可能な動画エンコードソフトとして、AMDのATI AVIVO (完全無料) やNvidiaのBadaboom (30日間無料体験版) 、MediacoderのCUDAエンコーダがあげられる。

Adobe社はCreative Suite 4 (CS4) の一部製品においてCUDAベースのGPUアクセラレーションをサポートしていたが[65]、2010年5月28日に発売[66]したCreative Suite 5 (CS5) においてGPGPUを正式にサポートした[要出典]。CS5はOpenCLベースで開発されており、ほとんどすべての機能において[要出典]GPGPUによる演算を行うことができる。本来GPUは画像処理を得意とするため、画像処理を主体とする同社のアプリケーションへの適性は高い。また、After Effects CCでは、レイトレーシングエンジンにNVIDIA OptiX英語版を採用している[67]。その他にも、V-Rayなど、レイトレーシングのアクセラレータとしてGPUを活用しているレンダラーが存在する[68]

オープンソースの統合型3DCG作成ソフトウェアBlenderでは、GIレンダリングエンジンであるCyclesにおいてNVIDIA CUDAによるGPUレンダリングが可能となっている。なお、バージョン2.6時点ではOpenCLによるGPUレンダリングも試験的に実装が進められている[69]。また、Autodesk 3ds Maxサブスクリプションなどに搭載されている物理ベースのGIレンダリングエンジンであるNVIDIA Irayでは、CUDAベースのGPUアクセラレーションが行なわれる[70] [71] [72]

その他、ネットワーク上の仮想通貨ビットコインの採掘処理にもGPUが使われている[73]

このように、学術・研究目的や産業用途以外にも、一般的なプロダクション向け・コンシューマー向けに関してもGPGPU技術を利用したソフトウェアが続々と登場しており、ようやくGPGPUを本格的に活用できる環境が整ってきたといえる。

脚注[編集]

[ヘルプ]
  1. ^ GeForce GTX TITAN X Graphics Card | GeForce | NVIDIA, 2 ops/cycle × 1000 MHz × 3072 cores.
  2. ^ AMD FirePro S9150 - FirePro Server - 製品情報 - 株式会社エーキューブ
  3. ^ GPGPUのキラーアプリケーションは「グラフィックス」 - @IT
  4. ^ 4Gamer.net ― OpenGLはDirectX 11を超え,OpenGL ESは据え置き型ゲーム機と同等以上に。Khronosの最新動向レポート
  5. ^ PGI GPU用アクセラレータコンパイラ 情報サイト - GPU / GPGPU / CUDA 対応、CUDA Fortran
  6. ^ これからの並列計算のためのGPGPU連載講座(V) 疎行列ベクトル積を題材としたCUDA最適化プログラミング
  7. ^ 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. 
  8. ^ 【レビュー】549ドルのGeForce GTX TITAN対抗馬「Radeon R9 290X」をベンチマーク - PC Watch
  9. ^ 【4Gamer.net】[特集]「GeForce 8800」のポイントをブロックダイアグラムから探る
  10. ^ 【4Gamer.net】 - 西川善司の3Dゲームエクスタシー - ATI, Radeon X1000シリーズ発表でSM3.0世代に突入
  11. ^ 【後藤弘茂のWeekly海外ニュース】GTCの目玉の1つ「Tegra 4/4i」のCPUアーキテクチャ
  12. ^ コンピュータアーキテクチャの話 (322) GPUが用いるメモリのアクセス時間の短縮方法 | マイナビニュース
  13. ^ 第5回 GPUの構造 | G-DEP
  14. ^ 4Gamer.net ― 「GeForce GTX TITAN」登場。500円玉より大きなモンスターGPUの“性能以外”を徹底解説
  15. ^ AMD、R580コアをベースにしたHPC専用プロセッサ「Stream Processor」 | マイナビニュース
  16. ^ AMDのGPGPU戦略は新章へ - ATI Streamの展望、DirectX Compute Shaderの衝撃 (1) Radeon HD 4000シリーズでネイティブGPGPU | マイナビニュース
  17. ^ AMD's RV670 does double-precision at half the speed | TG Daily
  18. ^ AMD FireStream™9250 - FirePro Server - 製品情報 - 株式会社エーキューブ
  19. ^ AMD FirePro S9100 - FirePro Server - 製品情報 - 株式会社エーキューブ
  20. ^ AMD FirePro S9150 - FirePro Server - 製品情報 - 株式会社エーキューブ
  21. ^ NVIDIA Tesla C1060 - 株式会社 日本コンピューティングシステム
  22. ^ Tesla C2050 / C2070 GPUコンピューティングプロセッサ
  23. ^ NVIDIA TESLA C2050 - 株式会社 エルザ ジャパン
  24. ^ 4Gamer.net ― NVIDIA,Keplerベースの新世代Teslaを発表。「GK110」コア採用の「Tesla K20」が年内に登場予定
  25. ^ NVIDIA Tesla K20 | 株式会社 エルザ ジャパン
  26. ^ 後藤弘茂のWeekly海外ニュース: GeForce GTX 280の倍精度浮動小数点演算
  27. ^ 4Gamer.net ― AMD,世界初のDX11 GPU「ATI Radeon HD 5800」を発表。HD 4800の大幅な進化形
  28. ^ 4Gamer.net ― 「ATI Radeon HD 5800」徹底分析(3)~3Dグラフィックスに特化したAMD
  29. ^ 科学技術計算向け演算能力が引き上げられたGPUアーキテクチャ「Fermi」 (2) 科学技術計算向けのさまざまな工夫 | マイナビニュース
  30. ^ GTC 2014 - GPUの浮動小数点演算の精度:理論と実践(前編) | マイナビニュース
  31. ^ ハイブリッドアーキテクチャでスパコン市場に挑むNVIDIA - 後藤弘茂のWeekly海外ニュース(PC Watch, Impress社、2012年4月16日配信、2012年4月16日閲覧)
  32. ^ How to Access Global Memory Efficiently in CUDA C/C++ Kernels | Parallel Forall
  33. ^ 【後藤弘茂のWeekly海外ニュース】NVIDIA新世代GPU「Maxwell」のSMアーキテクチャ - PC Watch
  34. ^ 【後藤弘茂のWeekly海外ニュース】 AMDの新GPUアーキテクチャ「Graphics Core Next」の秘密
  35. ^ 第5回 GPUの構造 | G-DEP
  36. ^ NVIDIA GPUの構造とCUDAスレッディングモデル
  37. ^ Variable Syntax (Windows)
  38. ^ tile_static Keyword
  39. ^ 高速演算記 第25回 「Kepler解説その2 〜Kepler世代の新機能〜」 | G-DEP
  40. ^ Using Shared Memory in CUDA C/C++ | Parallel Forall
  41. ^ 【1カ月集中講座】骨まで理解するPCアーキテクチャ(GPU編) 第4回 ~GPGPU性能引き上げのカギとなるCPUとGPUの連携 - PC Watch
  42. ^ 【後藤弘茂のWeekly海外ニュース】NVIDIAの次期GPU「Pascal」の概要 - PC Watch
  43. ^ » アクセラレータプログラミングの未来
  44. ^ 4Gamer.net ― 見えてきたAMDの次世代GPUアーキテクチャ。なぜAMDはVLIWを捨てるのか
  45. ^ レンダリング手法について-CPU or GPU? | KeyShot™総合サイト
  46. ^ cuBLAS - NVIDIA CUDA ZONE
  47. ^ cuFFT - NVIDIA CUDA ZONE
  48. ^ clMath - AMD
  49. ^ Thrust - NVIDIA CUDA ZONE
  50. ^ Bolt C++ Template Library - AMD
  51. ^ スパコン最大の学会「SC13」に見る先端技術 (5) SC13 - CPU-GPU統一メモリを実現したCUDA 6(後編) | マイナビニュース
  52. ^ OpenCL* 1.2 の活用: インテル® プロセッサー・グラフィックスでバッファーコピーを最小限に抑えてパフォーマンスを向上する方法 | iSUS
  53. ^ NVIDIA CUDA 6.0 Unified Memory Performance | Acceleware Ltd.
  54. ^ 【後藤弘茂のWeekly海外ニュース】AMD、新GPU「Tonga」がHSAの最終形であることを明らかに - PC Watch
  55. ^ » コンパイラ、そしてもっと:アクセラレーター・プログラミング
  56. ^ KAKEN - GPUによるFFT計算の自動チューニング手法の研究(22680002) - 2011年度研究実績報告書
  57. ^ GPUとXeon Phi、どちらが計算処理アクセラレータに最適か? - 実際の実行性能を比較するワークショップを首都大学東京が開催 (4) アクセラレータの課題と問題点が語られたパネルディスカッション | マイナビニュース
  58. ^ 変わった例ではカスペルスキー・ラボ現在[いつ?]Radeon HD 2900で行っている実証試験として、GPUのパワーを使ってセキュリティソフトによる大まかなセキュリティチェックを行う機能を開発している。これによりCPUへの負担を減らすことができるとしている[1]
  59. ^ "これからの並列計算のためのGPGPU連載講座(I) GPUとGPGPUの歴史と特徴", 東京大学情報基盤センター, 大島聡史
  60. ^ SIGGRAPH 2005 - GPUをCPU的に活用するGPGPUの可能性 (5) GPGPU向けプログラミング言語の登場が始まる | マイナビニュース
  61. ^ [2]
  62. ^ [3]
  63. ^ [4]
  64. ^ [5]
  65. ^ 4Gamer.net ― NVIDIA製GPUが「Photoshop」「After Effects」「Premiere Pro」の最新版「CS4」アクセラレーションをサポート。ムービーでその効果をチェック
  66. ^ ZDNet Japan Staff (2010年4月12日). “アドビ、クリエイティブ製品の最新版「CS5」を5月28日に一斉発売”. CNET Japan. 2010年8月18日閲覧。
  67. ^ GPU changes (for CUDA and OpenGL) in After Effects CC (12.1) | After Effects region of interest
  68. ^ GPUレイトレーシング | NVIDIA
  69. ^ Doc:JA/2.6/Manual/Render/Cycles/GPU Rendering - BlenderWiki
  70. ^ NVIDIA iray | NVIDIA
  71. ^ NVIDIA iray - Design Rendering with CUDA Parallel Processing | NVIDIA
  72. ^ NVIDIA Advanced Rendering: NVIDIA Iray
  73. ^ Bitcoinマイニングはまさに軍拡競争、素人お断りの現状とは? - GIGAZINE

関連項目[編集]