問題タブ [amd-processor]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - AMD 6310 GLSL / FBO コピーは、最初のいくつかの最下位ビットを破損します (ただし、たまにのみ)
OpenGL 2.0 と FBO を使用して RGBA テクスチャから RGB テクスチャにデータをコピーしていますが、コピー中に一部のピクセル コンポーネントの最初の最下位ビットが「破損」することがあるという問題に遭遇しました。
テクスチャ コピーはいくつかのステップに分割され、FBO のサイズを変更しています。
最初は、FBO のサイズを変更する方法、またはテクスチャをサンプリングする方法に関連する問題ではないかと考えましたが、問題が常に発生するとは限りません。ピクセルがコピーされたり、問題のある各ピクセルのすべてのコンポーネントに対して発生したりすることはありません。言い換えれば、プログラムの実行ごとに同じ入力 float 値が使用された場合に同じエラーが発生するほど決定論的であることを除いて、ほぼランダムに見えます。
また、常に 1x1 の FBO サイズを使用している場合、問題は決して発生しません (これは、サンプリングの問題であると私に思わせたので、誤解を招く可能性がありますが、おそらくそうではないので、問題のあるすべてのピクセルのすべてのコンポーネントが「破損」しています)。残念ながら、1x1 の FBO サイズを使用しても、数ピクセル以上を含むテクスチャをコピーする現実の世界ではまったく役に立ちません。
この問題は Windows 7 と Ubuntu で発生し、MSVC++ または g++ の std rand() または Mersenne Twister を使用して入力テクスチャ値を生成すると問題が発生します (コピー操作は定義上独立しているため、値の生成方法は重要ではありません)。コピーするデータが事前にどのように生成されたかの説明) ..
入力テクスチャ値以外は、プログラムの実行間で何も変更されないテスト プログラム (以下のコードを参照) を作成しました。
このテスト プログラムを実行できる AMD 6310 (またはその他の種類のハードウェア) を持っている人はいますか? エラーが発生する場合と発生しない場合があるため、数回実行する必要があります。ハードウェアでエラーが発生するかどうか知りたいです。私はパターンを見つけることができません.私の素朴な考えでは、これは常に機能するか、まったく機能しないかのどちらかです-それほど散発的ではありません.
また、最終的には、OpenGL を使用してコピーを行う方法と関係がある可能性があることを受け入れるつもりです。これは、簡単で信頼できる解決策があることを意味するため、実際には緩和されます。そうであることを願っています。
おそらくどこかに glTexParameteri への無関係な呼び出しがいくつかありますが、このテストプログラムの作業中に「残念ながらより安全な」方法を試していました。
いずれにせよ、この問題により、一部のピクセル コンポーネントに約 1e-8 程度のエラーが発生します。はい、それは非常に小さなエラーですが、私がやっていることにはまったく受け入れられません.
optimization - AMD チップ上で Intel コンパイラを使用して C++ プログラムを最適化する方法
ここの初心者。ハイ パフォーマンス コンピューティングで実行する必要がある大きな有限解析コードがあります。人々は、Intel コンパイラーの方が通常は速度が速いと言い続けます (以前は gcc を使用していました)。そして、私たちの Intel クラスターにも当てはまることがわかりました。しかし最近、新しい AMD クラスターができました。icpc
のコンパイル オプションを使用してプログラムを最適化する方法について混乱しています。
基本的に、2 つの質問があります。
質問 1
AMDチップを搭載したクラスターは次のとおりです。
を使用して小さなコードをコンパイルするときicpc hello.cpp -O3 -xP
、どのオプションを使用すればよいか正確にわかりません。エラーは次のとおりです。
質問2
Intel チップ クラスタと AMD チップ クラスタの両方でバイナリを使用したい場合、コードをコンパイルするために別のオプションを使用する必要がありますか?
profiling - OpenCL CodeXL Profiler がカーネルを数回実行する
CodeXL (またはそれ以上のポイント sprofile) を使用して、いくつかの Opencl コードのプロファイルを作成しようとしています。performancecounter モードでプロファイリングすると (ただし、 trace オプションを使用する場合はそうではありません-t
)、常に間違った出力が返されるので、その理由を調べてみました。いくつかの実験の後、各カーネルが 3 回実行されると、既存のデータを上書きするのではなく変更するカーネルの間違った結果につながるという結論に達しました。次のおもちゃプログラムは、この動作を示しています。
私の質問は次のとおりです。なぜそれがそのように動作するのか、そしてそれを止める方法を知っている人はいますか?
私の OS は Fedora Linux 18 CodeXL バージョン: CodeXL-Linux-1.1.1537.0 グラフィック カード: ATI Technologies Inc Device 6798
実行コマンドは次のとおりです。
私のコード:
カーネル:
これは私が結果として得るものです:
assembly - MMX レジスタは最新のプロセッサに常に存在しますか?
最近のプロセッサの図や概要を見ても [1]、MMX レジスタ MM0 ~ MM7 についての言及は見当たりません。でも、スペックからしてまだ残っているようです。SSEをサポートするすべてのプロセッサにそれらが存在することに依存できますか? それらは、さらに古い FPU スタック以外のものと競合しますか? それらは一般的な 64 ビットのものと同じ物理レジスタですか?
ベクトルには XMM と YMM の方がはるかに優れていますが、MMX レジスタを使用して、そうでなければスタックにスピルする値を格納したい場合があります。速度的には、これで少し良くなりました。また、追加のストアとロードを避けたい場合もあります。
pointers - OpenCL void ポインター演算 - 奇妙な動作
頂点とインデックスを読み取るために opencl-opengl 相互運用性を使用する OpenCL カーネルを作成しましたが、インデックスで特定の頂点を取得するために単純なポインターの追加を行っているだけなので、おそらくこれは重要ではありません。
ここでは絶対位置をバイト単位で計算しています。この例では、pos は 28,643,328 で、ストライドは 28、インデックス = 0、ベース = 1,022,976 です。まあ、それは正しいようです。
残念ながら、vload3
offset パラメータはバイト単位の絶対アドレスとして計算されないため、直接使用することはできません。pos
だから私はポインタに追加するだけですvoid* vertices_gl
new_addr
私の例では = 0x2f90000 であり、これが奇妙な部分の始まりです。
vertices_gl
= 0x303f000
結果 ( new_addr
) は 0x4B90000 (0x303f000 + 28,643,328) になります。
アドレス vertices_gl が 716,800 (0xAF000) 減少する理由がわかりません
GPU をターゲットにしています: AMD Radeon HD5830
Ps: 疑問に思っている人のために、私はこれらの値を取得するために printf を使用しています :) (CodeXL を動作させることができませんでした)
c++ - C++ - AMD ソース ライブラリを使用したリンク エラー
親愛なるインターネットの皆様、こんにちは。
そこで、ここにある clAmdFft ライブラリをダウンロードしました。
私も先に進んでこれを行いました(ソースファイル/ライブラリをコンパイラ/システムパスに追加します)。ここに彼らは事後です:
このライブラリを使用したい .cpp ファイルの 1 つを次に示します。
そして最後に、これが私のシュガースイートの Makefile です (ここで複雑なことは何もありません。私はこれまで一貫してこのように行ってきました)。
では、親愛なるインターネットの皆さん、なぜ次のエラーが表示されるのでしょうか?
つまり、これは非常に簡単に思えます。このサイトと一般的なグーグルをざっと読んだ後、なぜこれが正しく機能しないのかについて、確かな答えが見つからないようです。皆さんが助けてくれることを願っています! ありがとう。
compiler-errors - OpenCL AMD SDK - コンパイルでスタックする
GPU に画像ベースの照明アルゴリズムを実装するために、マスターのプロジェクトで OpenCL を試しています。これまでのところ、大きな問題はありませんが、今日、非常に厄介な問題に遭遇しました。ビルド メソッドを呼び出すと、スタックするだけです... コアの 1 つが 100% で実行され、無限ループに陥ったようです。コンパイルしようとしているコードは次のとおりです。
Linux Mint Debian Edition で、SDK とCatalyst の両方の最新バージョンを実行しています。私はここで無知です。誰かが私を助けてくれることを願っています。私のグラフィックカードは HD 5770 です。