「GPGPU」の版間の差分
(→古代) |
Administrator (トーク | 投稿記録) (→近代) |
||
(2人の利用者による、間の12版が非表示) | |||
2行目: | 2行目: | ||
== 概要 == | == 概要 == | ||
− | + | 最近話題の[[人工知能]]の[[深層学習]]でも使われている。 | |
− | [[人工知能]]の[[深層学習]]でも使われている。 | ||
− | + | 2D画像処理の各種フィルタをGPGPUで実装している例も多い。GPUといえば画像処理であるが、2D画像処理に関してはアルゴリズムによってはピクセルシェーダーで計算するよりもコンピュートシェーダーで計算した方が書きやすいこともある。 | |
+ | |||
+ | かつてはGPGPUは[[仮想通貨]]の[[マイニング]]でも使われた。ただ仮想通貨のマイニングの計算式は特定の[[アルゴリズム]]([[ハッシュ関数]])であり頻繁に変化するものではないため、[[コスパ]]を向上させる目的でGPGPUから[[FPGA]]へ、FPGAから[[ASIC]]へと変移していった。 | ||
+ | |||
+ | |||
+ | == 向いていない処理 == | ||
+ | === 小さい処理 === | ||
+ | CPUからGPUを呼び出すには「準備」が必要です。この準備段階はものすごく重たい処理なのでメインの処理量が少ない場合は逆に遅くなることがあります。 | ||
== 歴史 == | == 歴史 == | ||
14行目: | 20行目: | ||
* 巨大なint型などの[[配列]]を[[テクスチャ画像]]に無理やり変換し、 | * 巨大なint型などの[[配列]]を[[テクスチャ画像]]に無理やり変換し、 | ||
* それを[[ピクセルシェーダー]]で数値として取り出し計算させ、 | * それを[[ピクセルシェーダー]]で数値として取り出し計算させ、 | ||
− | * | + | * [[レンダーターゲット]]([[GPU]]の描画先テクスチャ)を巨大な配列に変換する |
+ | |||
+ | 「[[構造体]]の配列を送信できる[[バーテックスバッファ]]と[[バーテックスシェーダー]]を使ったほうが便利じゃん」と思うかもしれないが、この当時(SM 3.0 = DirectX 9)は[[GPU]]から[[データ]]を取得する手段が[[レンダーターゲット]](GPUの描画先テクスチャ)以外になかった。正確には「一部のGPUでは」取り出せなかった。 | ||
+ | |||
+ | CPU側からGPU側に送信したデータを見ることすらできない。完全に一方通行。 | ||
+ | [[3DCG]]でも高度に[[カプセル化]]された3Dモデルを扱う[[ライブラリ]]から頂点データ(private宣言されている)を抜き出す手段がなく「GPUからGetDataできたら嬉しいな。このメーカーのGPUだけ動かねえ」なんてことがあった。 | ||
− | + | なのでピクセルシェーダーとレンダーターゲットが使われていた。 | |
=== 近代 === | === 近代 === | ||
− | その後、SM4. | + | その後、SM4.0から「[[コンピュートシェーダー]]」が登場したことで無理にデータをテスクチャ画像化する必要がなくなり、[[バーテックスバッファ]]のように「構造体の配列」を送信する手法が使えるようになった。これにより飛躍的に手軽になった。 |
− | + | ||
− | + | この世代から処理は主にゲームであればバーテックスシェーダーで使われる回路で実行されるようになりました。 | |
+ | つまり従来はピクセルシェーダーの性能に依存していましたがバーテックスシェーダーの性能が重要になりました。 | ||
+ | |||
+ | このような状況もあり、[[NVIDIA A100]]などの主にゲームであればバーテックスシェーダーで使われる回路の性能に全振りした「GPGPU特化型のビデオカード」というものが登場するようになりました。これらでゲームを動かすとまったく速度がでないようです。 | ||
+ | |||
+ | [[category: GPU]] |
2024年4月16日 (火) 06:42時点における最新版
GPGPU(読み:じーぴーじーぴーゆー)とは、GPUで画像処理以外の計算をやらせてみようというものである。
目次
概要編集
2D画像処理の各種フィルタをGPGPUで実装している例も多い。GPUといえば画像処理であるが、2D画像処理に関してはアルゴリズムによってはピクセルシェーダーで計算するよりもコンピュートシェーダーで計算した方が書きやすいこともある。
かつてはGPGPUは仮想通貨のマイニングでも使われた。ただ仮想通貨のマイニングの計算式は特定のアルゴリズム(ハッシュ関数)であり頻繁に変化するものではないため、コスパを向上させる目的でGPGPUからFPGAへ、FPGAからASICへと変移していった。
向いていない処理編集
小さい処理編集
CPUからGPUを呼び出すには「準備」が必要です。この準備段階はものすごく重たい処理なのでメインの処理量が少ない場合は逆に遅くなることがあります。
歴史編集
古代編集
「これSIMDの代わりに使えるんじゃね?」
その昔、こんなことを思いついた人がいた。
「構造体の配列を送信できるバーテックスバッファとバーテックスシェーダーを使ったほうが便利じゃん」と思うかもしれないが、この当時(SM 3.0 = DirectX 9)はGPUからデータを取得する手段がレンダーターゲット(GPUの描画先テクスチャ)以外になかった。正確には「一部のGPUでは」取り出せなかった。
CPU側からGPU側に送信したデータを見ることすらできない。完全に一方通行。 3DCGでも高度にカプセル化された3Dモデルを扱うライブラリから頂点データ(private宣言されている)を抜き出す手段がなく「GPUからGetDataできたら嬉しいな。このメーカーのGPUだけ動かねえ」なんてことがあった。
なのでピクセルシェーダーとレンダーターゲットが使われていた。
近代編集
その後、SM4.0から「コンピュートシェーダー」が登場したことで無理にデータをテスクチャ画像化する必要がなくなり、バーテックスバッファのように「構造体の配列」を送信する手法が使えるようになった。これにより飛躍的に手軽になった。
この世代から処理は主にゲームであればバーテックスシェーダーで使われる回路で実行されるようになりました。 つまり従来はピクセルシェーダーの性能に依存していましたがバーテックスシェーダーの性能が重要になりました。
このような状況もあり、NVIDIA A100などの主にゲームであればバーテックスシェーダーで使われる回路の性能に全振りした「GPGPU特化型のビデオカード」というものが登場するようになりました。これらでゲームを動かすとまったく速度がでないようです。