タグ付けされた質問 「gpu」

2
状態を変更するコストはいくらですか?
プログラマーは、特定の操作のコストについてかなり良い考えを持っているはずです。たとえば、CPUでの命令のコスト、L1、L2、またはL3キャッシュミスのコスト、LHSのコストなどです。 グラフィックに関して言えば、私はそれらが何であるかほとんどわからないことに気付きます。コストで注文すると、状態の変化は次のようになることを心に留めています。 シェーダーの均一な変更。 アクティブな頂点バッファーの変更。 アクティブテクスチャユニットの変更。 アクティブシェーダープログラムの変更。 アクティブなフレームバッファの変更。 しかし、それは非常に大雑把な経験則であり、正確でさえないかもしれません。単位、ns、クロックサイクル、または命令の数を入れようとすると、どれくらいのことを言っているのでしょうか?

3
ゲームでピクセルを直接描画できるのに、OpenGLやDirectXなどのグラフィックフレームワークがあるのはなぜですか?
ゲームやその他のグラフィックを多用するアプリケーションは、OpenGLやDirectXなどのフレームワークを使用します。また、ピクセルシェーダーやDX12などの機能が必要です。 しかし、ピクセル単位ですべてを描画できるのに、なぜこれらすべてのフレームワークとGPU機能が必要なのでしょうか? まず、ゲームはピクセル単位で描画されるようにコンパイルする必要があります。これにより、ゲームの実行可能サイズが大きくなる可能性がありますが、より高速で、32ビットカラーGPU(古いものでも)で動作しますか? 最初の3Dゲームはピクセルごとに描かれたのは知っていますが、なぜ今はそうしていないのですか?

1
GPUにラスタライザーがまだあるのはなぜですか?
進歩にもかかわらず、最新のGPUはまだラスタライザーを修正しています。プログラム可能なシェーダーで高度にカスタマイズ可能ですが、完全にプログラム可能ではありません。 何故ですか? GPUが、ラスタライザーがユーザーが提供するデバイス用の単なるソフトウェアであるユニバーサルコンピューティングユニットを備えた単純な超並列デバイスになれないのはなぜですか? 固定機能のハードウェアはパフォーマンス面で非常に有益であり、そのようなアプローチは実行不可能ですか?
14 gpu  rasterizer 

2
異方性フィルタリングは、通常、最新のGPUでどのように実装されていますか?
異方性フィルタリングは、「エイリアシングを回避するためのMIPマップテクスチャの試行によって通常失われるテクスチャの鮮明さを保持します」。ウィキペディアの記事は、それをどのように実装できるかについてのヒントを提供します(「異方性の任意の方向のテクスチャ(...)をプローブする」)。 プレゼンテーションのノートで説明されているテストで示唆されているように、さまざまな実装があるようです。物理ベースのレンダリングの近似モデル: 異方性フィルタリングを使用するときに正しいMIPレベルを選択するために(現代の)GPUによって実行される具体的な計算とは何ですか?

1
ルックアップテクスチャはまだ何かに使用されていますか?
それほど前のことではなく(5-10年?)、データをテクスチャにベイクし、テクスチャからデータを読み込むことが一般的で効率的だったことを知っています。データを出力します。 計算時間がテクスチャルックアップ時間と比較して安価になったため、すべてが一緒になくなったわけではないにしても、この方法は間違いなく少なくなりました。 私の質問は、ベイクアウトされたテクスチャはまだ何かに使用されていますか?モダンアーキテクチャでそれらの使用例はありますか?彼らは戻ってくる可能性が高いと思われますか?(たとえば、メモリテクノロジーまたは基本的なGPUアーキテクチャが変更された場合)
14 texture  gpu  hardware 

1
GPUプログラミングで作業効率が望ましいのはなぜですか?
私は、CUDAで並列スキャンを実行する方法に関する次の記事を読んでいます。 https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch39.html この記事では、スキャンを「作業効率」にすることに重点が置かれています。言い換えれば、GPUアルゴリズムはCPUアルゴリズムO(n)よりも多くの追加を実行するべきではありません。著者は2つのアルゴリズムを提示します。1つはO(nlogn)の追加を行う「ナイーブ」アルゴリズムで、もう1つは「作業効率」と考えるアルゴリズムです。ただし、作業効率の良いアルゴリズムでは、ループの繰り返しが2倍になります。 私の理解では、GPUは単純に巨大なSIMDプロセッサであり、ロックステップで動作するはずです。「作業効率の良い」アルゴリズムで2倍のループを実行すると、多くのスレッドがアイドル状態になり、長期的にはパフォーマンスが低下することを意味するようです。私は何が欠けていますか?

1
隣接する三角形がラスタライズされたときに重複しないのはなぜですか?
次のnoobの質問についてはお詫び申し上げます。満足のいく答えがどこにも見つからないだけです... 2つの三角形で構成される単純な軸に位置合わせされた四角形をレンダリングするとき、それらの三角形が交わる対角エッジに目に見えるアーチファクトがない理由がわかりません。それらのピクセルのいくつかは両方の三角形にある必要がありますよね?したがって、私のフラグシェーダーが常に部分的に透明な色(50%の黒など)を放出する場合、結果の四角形に濃い対角線が表示されてはいけませんか? 明らかに、これがコード化する必要のある本当の問題ではないのは素晴らしいことですが、なぜそうならないのか理解できません。これが常にうまくいくのはどのGPUマジックですか?
11 opengl  gpu  rasterizer 


1
最新のハードウェアがリアルタイムを維持しながらシーン内のポリゴンをいくつ到達でき、そこに到達する方法は?
かなり基本的な、ある意味では質問ですが、私も含めて多くの人が答えを本当に知りません。GPUメーカーは非常に高い数値を引用することが多く、さまざまなゲームエンジンがサポートすると主張するポリゴン数のばらつきは、多くの場合、数桁に及び、依然として多くの変数に大きく依存しています。 これは広く、かなり自由回答の質問であることを承知しており、お詫び申し上げます。それでも、ここで貴重な質問になると思いました。
11 gpu  optimisation 

1
AMDがSSDをGPUボードに配置したことで、なぜレイテンシがそれほど減ったのですか?
AMDは最近、いくつかのM2 SSDを搭載した興味深いRadeon Proボードのニュースを発表しています。 より詳細なストーリーのいくつか(ここまたはここなど)が指摘しているように、メリットは主に高帯域幅から発生するわけではありません(M2はそれぞれ4つのPCIeレーン上にあるため、ボード自体の16レーンコネクタはさらに多くのはずです)。低レイテンシから。 このストーリーには、「これによりメモリアクセスのレイテンシが10分の1になる」という主張が含まれています。 私の質問は基本的に:GPUボード上のPCIe接続SSDは、システムPCIeバス上のメインシステムRAMまたはストレージデバイスにアクセスするGPUよりもレイテンシを大幅に短くする必要があるのはなぜですか?メインシステムの「邪魔になる」とは何ですか。また、オンボードSSDの方がはるかに高速にアクセスできます。

2
最新のGPUで頂点データを整理する最もパフォーマンスの高い方法
私が頂点で構成モデルでは、各持っていると言うposition、normal、tangent、およびtexcoord三角形がインデックストリプルによって指定された属性を、。 頂点の属性だけに注目すると、配列の構造と構造の配列という2つの広範な戦略に気づきます。また、構造体の配列は、特定の頂点の属性のメモリの局所性(したがってキャッシュの局所性)を増加させるため、優先されると聞きました。 これが実際にパフォーマンスを向上させるのですか?これが起こると私が考えることができる主な方法は、長い間キャッシュから削除された頂点データをラスタライザが取得する必要がある頂点インデックスによるものです。頂点データへのアクセスがこのようにランダムである場合、同じキャッシュライン上の頂点のすべての属性を保持すると、確実に処理が速くなりますが、これは、三角形の指定の順序を最適化することでほとんど軽減できる問題ではありませんか? さらに、最近のGPUは、多くのタイプの構造のベクトルよりも、同じタイプの長いベクトルをアンパックする方が優れている可能性があることを理解しています。インデックスの順序が最適化されている場合、配列構造のレイアウトが同じ頂点データの構造配列のレイアウトを一貫して上回ることは可能でしょうか?

1
GPUで共有頂点法線を作成する
私は、CPUからOpenGLコンピューティングシェーダーへのマーチングキューブの実装の移植にほとんど成功しましたが、私はまだ法線に取り組んでおらず、そのための最善の方法を考えていません。 私の実装では特にバイナリ値フィールドを扱います(まだ距離推定器を持たない3Dフラクタル関数をモデル化しようとしているため)、勾配法と前方差分法は機能しません。動作する頂点を共有しました。私のCPU実装では、ここで説明するQuilezの方法を使用して、隣接する各頂点に面法線を蓄積します。 この実装を別のシェーダーに移植することもできますが、これで発生する問題は、必要なアトミックの膨大な数です。私たちはスカラー整数型でのみアトミックを使用でき、3つの符号付き整数を合計可能な方法で1にパックする方法を考えることができないので、シェーダー呼び出しごとに3軸* 3頂点= 9アトミック追加を意味します。もちろん、それらはメモリ全体に分散されるため、1つのアトミックカウンターを9回ヒットするようなものではありませんが、それでもまだかなりのようです。 もう1つの方法は、ポリゴンごとのシェーダー呼び出しを実行して面の法線リストを作成し(おそらくこの方法でx10y10z10にパックすることができます)、次に頂点ごとのシェーダーで隣接する面の法線をすべて蓄積します。ただし、これは膨大なメモリを消費しますが、最悪の場合に対処するには、面インデックスのストレージスペースに頂点ごとに12 intが必要になります。また、特定の頂点に既に書き込まれている面の数を計算するためにアトミックに頼らずに、このストレージに書き込む方法の問題もあります。 誰でもこれを行う方法についてもっと良いアイデアがありますか?

1
テクスチャキャッシュはタイルベースのレンダリングGPUでどのように機能しますか
キャッシュはタイルベースのレンダリングでどのように機能しますか? キャッシュヒット率を向上させるためのヒントはありますか?(たとえば、タイルが水平方向に処理され、同じテクスチャを持つ三角形の垂直セグメントがある場合、水平方向に三角形のレイアウトを配置する場合よりも、キャッシュの方が機能しませんか?)

1
低レベルのGPUプロファイラーの作成を開始するにはどうすればよいですか?
私は最近、ハードウェア企業のGPUプロファイラー(Qualcomm、PowerVR、Intel)を研究しています。これらのツールは、過去に使用したGPUプロファイラー(XCodeのOpenGL ESフレームキャプチャとapitrace)よりも低レベルの詳細を提供しているようです。これらは、行われたOpenGL呼び出しと現在の状態のみをリストします。リソースです。 サンプラーキャッシュミスやシェーダーアセンブラーコードなどを表示する低レベルのツールを作成する場合、どうすれば開始できますか?
8 gpu 

1
最近のGPUにはバレルシフターが含まれていますか?
最近のほとんどのGPUは、浮動小数点向けに設計されていますが、最近では整数パフォーマンスでほぼ同等であり、融合型乗算加算がないなどのいくつかの注意点があります。これがシフト操作にどのように適用されるかはわかりません。私はGPUでマーチングキューブを実行しています。最初に各サーフェスキューブの32ビットのパックされた位置を書き出し、次にこれらを次のようにそのキューブの実際の頂点へのパスでアンパックします。 ivec3 unpackedPos = ivec3( packedPos >> 20 & 0x3FF, packedPos >> 10 & 0x3FF, packedPos & 0x3FF); 最近、シェーダーユニットにバレルシフターが搭載されているのではないかと思いました。ここで2シフトまたは30シフトしていますか? 編集>>私はばかです...知っておくと便利な回答の人たちに感謝しますが、私はこれについてすべて間違っています。RGB10_A2UIテクスチャ形式を使用してから、ビットシフトをいじるのではなく、単一のイメージのロード/ストア命令でパック/アンパックする必要があります。 RE_EDIT >>かどうか...この方法は明らかに赤いボックスでは機能しますが、緑色のボックスでは機能しないため、ビットシフトに戻ります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.