問題タブ [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.
intel - Intel および AMD アーキテクチャで 32 ビット整数を double に変換するコストはいくらですか?
これら 2 つの表現の間を行ったり来たりする変換は、最新のハードウェアでは高価な操作ではないという印象を受けましたが、これは本当ですか?
assembly - これは、AMD Fusion CPU のバグで「発生しないはず」のクラッシュですか?
システムでアクセス違反が発生してプログラムがクラッシュしたため、私の会社に多くの顧客から電話がかかってきました。
クラッシュは、アプリケーションの一部として出荷されている SQLite 3.6.23.1 で発生します。(アプリの残りの部分と同じ VC++ ライブラリを使用するために、カスタム ビルドを出荷しますが、これはストック SQLite コードです。)
WinDbg コールスタックで示されているように、 をpcache1Fetch
実行するとクラッシュが発生します。call 00000000
関連する C コードの行は次のとおりです。
コンパイラは inlinessqlite3BeginBenignMalloc
を次のように定義します。
そして、このためのアセンブリは次のとおりです。
レジスタは次のとおりです。
が 0 の場合eax
(これはそうです)、 によってゼロ フラグを設定する必要がありますが、ゼロではありませんtest eax, eax
。ゼロフラグが設定されていないため、je
ジャンプせず、実行しようとしてアプリがクラッシュしcall eax (00000000)
ます。
更新:コードのビルドでは設定されていないeax
ため、ここでは常に 0 にする必要があります。定義済みでsqlite3Hooks.xBenignBegin
SQLite を再構築できます。これにより、コードが有効になり、このコード パスが完全に省略されます。これで問題は解決するかもしれませんが、「本当の」修正とは思えません。他のコードパスでそれが起こるのを止めるものは何ですか?SQLITE_OMIT_BUILTIN_TEST
#define sqlite3BeginBenignMalloc()
これまでのところ、すべての顧客が「Windows 7 Home Premium 64 ビット (6.1、Build 7601) Service Pack 1」を実行しており、次のいずれかの CPU を搭載しているという共通点があります (DxDiag による)。
- AMD A6-3400M APU、Radeon(tm) HD グラフィックス (4 CPU)、~1.4GHz
- AMD A8-3500M APU、Radeon(tm) HD グラフィックス (4 CPU)、~1.5GHz
- AMD A8-3850 APU、Radeon(tm) HD グラフィックス (4 CPU)、~2.9GHz
ウィキペディアのAMD Fusion の記事によると、これらはすべて K10 コアをベースにした「Llano」モデルの AMD Fusion チップであり、2011 年 6 月にリリースされたもので、最初に報告を受け始めた時期です。
最も一般的な顧客システムは Toshiba Satellite L775D ですが、HP Pavilion dv6 & dv7 および Gateway システムからのクラッシュ レポートもあります。
このクラッシュの原因は CPU エラー ( Errata for AMD Family 12h Processors を参照) でしょうか、それとも他に見落としている可能性があるのでしょうか? (Raymond によると、それはオーバークロックである可能性がありますが、もしそうなら、この特定の CPU モデルだけが影響を受けるのは奇妙です。)
正直なところ、これが実際に CPU または OS のエラーである可能性は低いと思われます。なぜなら、顧客はブルースクリーンや他のアプリケーションでのクラッシュを経験していないからです。他にもっと可能性が高い説明があるに違いありませんが、何ですか?
8 月 15 日更新: AMD A6-3400M プロセッサを搭載した Toshiba L745D ノートブックを入手しました。プログラムを実行すると、一貫してクラッシュを再現できます。クラッシュは常に同じ命令で発生します。.time
クラッシュ前のユーザー時間は 1 分 30 秒から 7 分です。最初の投稿で言及しなかった 1 つの事実 (この問題に関連している可能性があります) は、アプリケーションがマルチスレッドであり、CPU と I/O の両方の使用率が高いということです。アプリケーションはデフォルトで 4 つのワーカー スレッドを生成し、クラッシュするまで 80% 以上の CPU 使用率を示します (I/O と SQLite コードのミューテックスのブロックがあります)。2 つのスレッドのみを使用するようにアプリケーションを変更しましたが、それでもクラッシュしました (ただし、発生するまでには時間がかかりました)。現在、スレッドを 1 つだけ使用してテストを実行していますが、まだクラッシュしていません。
また、純粋に CPU 負荷の問題ではないようです。システムでエラーなしで Prime95 を実行でき、CPU 温度が 70°C を超えるまで上昇しますが、実行中のアプリケーションの温度はほとんど 50°C を超えません。
8 月 16 日更新:指示を少し変更すると、問題が「解消」されます。mov eax,dword ptr [SQLite_Interop!sqlite3Hooks (71a7813c)]
たとえば、メモリ負荷 ( ) を次のように置き換えるとxor eax, eax
、クラッシュが回避されます。元の C コードを変更してステートメントに余分なチェックを追加するif( createFlag==1 )
と、コンパイルされたコード内のさまざまなジャンプの相対オフセット (test eax, eax
およびcall eax
ステートメントの場所) が変更され、問題が回避されるようにも見えます。
私がこれまでに見つけた最も奇妙な結果は、jne
at719f9fa0
を 2 つの命令に変更すると ( /の値に関係なく、nop
制御が常に命令にフォールスルーされるように)、プログラムがクラッシュすることなく実行できるようになることです。test eax, eax
createFlag
esi
asp.net - ASP.NETアプリケーションをIntelマシンからAMDに移行することを検討しますか?
私はメモリを広範囲に使用する動作中のASP.NETアプリケーションを持っており、最近、AMDマシンに移行することを計画しています。世話をする必要があるものはありますか(つまり、Bin
フォルダーで使用するライブラリ、SQL Server 2008など)
intel - 実行可能ファイルを作成するためのAMD対Intelプロセッサ
おそらくばかげた質問ですが、私は次のような状況にあります。
現在、開発マシンはすべて64ビットのIntelベースのシステムであり、アプリケーションの32ビットバージョンと64ビットバージョンを作成しています。また、(AMDベースのシステムではなく)Intelベースのシステムを使用することをお客様に推奨します。
現在、ITマネージャーは、いくつかの新しい開発システムを購入し、(64ビット)AMDベースのシステムの購入を検討しているコストを削減したいと考えています。Visual Studio(2010)は、実行中のプロセッサをおそらく気にせず、生成されたコードはおそらく同じですが、念のために言っておきます。どのプロセッサで生成された実行可能ファイル(AMDとIntel)に違いはありますか?構築されていますか?
c++ - しばらくすると、プログラムがすべてのコアを使用しなくなる原因は何ですか?
3 枚のビデオ カードからビデオをキャプチャして表示するプログラムを作成しました。フレームごとに、フレームを Jpeg に圧縮し、ディスクに書き込むためにキューに入れるスレッドを生成します。これらのファイルから読み取り、独自のスレッドでデコードする他のスレッドもあります。通常、これは問題なく動作します。これは、6 つの CPU コアすべての約 70 ~ 80% を使用する、かなり CPU を集中的に使用するプログラムです。しかし、しばらくすると、エンコーディングが突然遅くなり、プログラムはビデオを十分に速く処理できなくなり、フレームを落とし始めます。CPU 使用率を確認すると、1 つのコア (通常はコア 5) があまり機能していないことがわかります。
これが発生した場合、プログラムを終了して再起動しても問題ありません。CPU 5 の使用率は依然として低く、プログラムはすぐにフレームのドロップを開始します。保存したビデオをすべて削除しても効果はありません。コンピューターを再起動することが唯一の解決策です。ああ、プログラムのアフィニティをセミアイドリングコア以外のすべてを使用するように設定すると、別のコアで同じことが起こるまで機能します。これが私のセットアップです:
- AMD X6 1055T (クール & 静音 OFF)
- GA-790FX-UD5 マザーボード
- 4Gig RAM アンギャングド 1333Mhz'
- Blackmagic Decklink DUO キャプチャー カード (x2)
- Linux - カーネル 2.6.32.29 を搭載した Ubuntu x64 10.10
私のアプリは以下を使用します:
- libjpeg-ターボ
- posix スレッド
- デッキリンク API
- Qt
- C/C++ で書かれています
- 動的にリンクされたすべてのライブラリ
Linux がコア上でスレッドをスケジュールする方法に何らかの問題があるように思えます。または、私のプログラムがひどく混乱して、プログラムを再起動するのに役立たない方法はありますか?
読んでくれてありがとう、どんな入力でも大歓迎です。私は立ち往生しています:)
.net - AMDプロセッサでの.NETパフォーマンス
.NET 4でデータ処理アプリケーションを作成しており、最近、アプリケーションをAMD 6174(12コア)プロセッサに展開しようとしました。歴史的に私たちはインテルを使用してきましたが、すべてが順調でした。アプリケーションは非常に並列であり、Intelでマルチスレッドのパフォーマンスが向上しています。ただし、AMDでは、予想されるような直線的なパフォーマンスの向上は実際にはありません。CPU使用率が最大になっていないので、問題が疑われます。競合のような匂いがしますが、これは非常にプラットフォーム固有の問題であるため、どこを見ればよいかわかりません。どこから始めればいいのか?
opencl - OpenCLチップ:GPGPUに選択するもの、AMDとnVidiaの両方を1台のマシンに搭載する方法
OpenCL(倍精度)を使用してGPGPUシミュレーションを開発します。テスト用に、新しいワークステーションにnVidiaとAMDの両方のチップを搭載したいと思います。
そのような構成(AMDとnVidiaの両方)はLinuxでサポートされていますか?まともなパフォーマンスを得るには、両方にプロプライエタリドライバーを使用する必要があると思いますが、どういうわけか衝突しないかどうかはわかりませんか?
カードの1つを使用してグラフィックディスプレイを駆動することは可能ですか?OpenCLコードでも使用できますか?(私はそう思いますが、確かに良いです)
どのハードウェアをお勧めしますか?非常に高価なものは必要ありませんが(テスラは私の予算を超えています)、倍精度をサポートする必要があります。nVidiaのGTX560は、機能はあるものの、それほど高価ではなく、問題ない可能性があることがわかりました。それは良い選択ですか?
AMD hwの場合、ゲーマー指向のRadeon HD 6970(wikipediaによると、倍精度FPをサポートするのはHD6950のみ)、またはFireProライン(FV5900またはFV7900)を使用する必要がありますか?
c# - 複数のコアが順次アルゴリズムに関与しているのはなぜですか?
C# でバブルソート、カクテルソート、クイックソートを実行すると、3 つのコアすべてが AMD X3 (X4 には 1 つの壊れたコアが付属) で使用されていることがわかります。
なぜこうなった?私のアルゴリズムはシーケンシャルで、私のコードにはスレッド タグがありません。特に、非常に順次的なアルゴリズムである並べ替えアルゴリズムのようなものはありません。次のイベントが完了するまで、1 つのイベントは発生しません。アルゴリズムをどのように分割するのですか?
リクエストに応じて、たとえばバブルソート:
performance - 最新のプロセッサのパフォーマンス
最新のプロセッサ (AMD Phenom II 1090T) で実行されている場合、次のコードは何クロック ティックを消費する可能性が高くなりますか? 3 または 11?
問題は、そのようなコードの反復を何度も実行すると、結果が反復ごとに 3 または 11 ティック近く変化することです。そして「誰だ」と決めつけない。
UPD命令レイテンシの表 (PDF)に よると、私のコードは AMD K10 マイクロアーキテクチャで少なくとも 10 クロック サイクルかかります。したがって、反復ごとに不可能な 3 ティックは、測定のバグが原因です。
解決済み@Atomは、最近のプロセッサ
ではサイクル周波数が一定ではないことに気付きました。BIOSで3つのオプションを無効にするCore Performance Boost
とAMD C1E Support
、AMD K8 Cool&Quiet Control
「6つの命令」の消費が3クロックティックで安定しました:-)
opencl - OpenCL コンパイラ間の構文の違い
次のコードは、Intel/nVidia OpenCL コンパイラ (どちらも LLVM ベース) でコンパイルされます。
AMD コンパイラは、次のように修飾されinvalid type conversion
たコードのみを受け入れます。global
仕様上正しいのはどれか。(そして: 非準拠のコンパイラをどこかに報告する必要がありますか?)