問題タブ [memory-access]

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.

0 投票する
3 に答える
907 参照

assembly - LEA はメモリにアクセスしないメモリ オペランドを持つ x86 の唯一の命令ですか?

私は、bastardlibdisの x86 逆アセンブラー ライブラリを使用しており、メモリにアクセスする命令を見つけようとしています。

次の 2 つの手順を参照してください。

ではlibdis、どちらも命令タイプinsn_movでリストされており、どちらの場合もアドレス オペランドのフラグは同じです。したがって、メモリがアクセスされているかどうかを知る唯一の方法は、命令ニーモニックを見ることです。

したがって、私の質問: LEA は、実際にメモリにアクセスしないメモリ オペランドを使用する唯一の命令ですか? 参照へのリンクはどれでもいいでしょう。

0 投票する
1 に答える
147 参照

cuda - 衝突の解決 - smem を使用して gmem アクセスを合体させようとしますが、銀行の競合が発生します

私はそのコードを持っています:

そして2番目のもの:

2つのgmem(グローバルメモリを意味する)アクセスがあります:1)Circleを読み取り、それとの衝突を検出します2)速度と位置を変更した後にCircleを書き込みます gmem から読み込まれた主円 C (レジスタにある) の円との交差をチェックするために使用されます。

私が思うに、私は const メモリをうまく使って、そのパフォーマンスをすべて得ています :') (私は間違っていますか?)

gmem への合体アクセスについて読んだとき (他のタイプのメモリへの合体アクセスはありますか? それに関する情報は見つかりませんでした)、試してみたかったのです。ご覧のとおり、Circle-structure には float = 32bits 型の 8 つの変数があります。私はそれをやろうとしましたが(コードではコメントされています)、最初に間違った答えが得られました(後述のsme​​mから正しく読み取らなければならないため)、次にパフォーマンスが33%低下します。なんで?間違ったフィールドの関係には依存しないと思います。

そして2つ目の質問ですが、smemからCへの読み込み付近のコードのコメントに書いた通り、別の読み方をしなければならないのですが、そうするとバンクコンフリクトが多くなりパフォーマンスがかなり落ちてしまいます... では、どうすればバンクの競合なしに結合されたサークルをロードし、その後、それを書き戻すことができますか?

ps サイズが 4*float を超える構造体はレジスタに配置されていますか?


更新: 最新バージョンは次のとおりです。

smem を使用して gmem アクセスを結合するのは正しい方法ですか? つまり、私は恐れていBlockDim.x * 1 / (CF - 1) + threadIdx.x / (CF - 1)ます。gmem が複数のサークルを結合して読み取ることができないため、ブーストが得られなかったと思いますが、2 つのサークルを結合する方法がわかりません..

0 投票する
4 に答える
1517 参照

c - ポインターとダブルポインターを使用してアクセスする場合のパフォーマンスの違い

  1. ポインターとダブルポインターを使用してメモリ位置にアクセスする場合、パフォーマンスに違いはありますか?
  2. もしそうなら、どちらが速いですか?
0 投票する
3 に答える
54736 参照

memory - キャッシュメモリを実装したシステムにおける平均メモリアクセス時間の計算

私は最近、この概念に関する多くの問題を解決してきました。ときどき、次のような不穏な矛盾があることに気付きます。

つまり、解決策は、上記の「ケース 1」のように、ある質問 X に対して「M」の値が計算され、他のいくつかの質問 Y では、上記の「ケース 2」と同じように計算されることを示しています。これらの質問を分析して、計算を異なるものにする要因は何かを見つけるために最善を尽くしました. 助け無し。X と Y がまったく同じで、値が異なるだけで、X はケース 1 のように計算され、Y はケース 2 のように計算される状況に遭遇しました。

私が認識していない他の理由により、計算が異なりますか? 前もって感謝します。

0 投票する
1 に答える
104 参照

c++ - 不完全なグローバル メモリ アクセスは結合されていますか?

合体している場合はn < warpSize

Nこのような状況は、 で割り切れないものがある場合、サイクルの最後の反復で発生しますwarpSize。これらの状況について実行し、割り切れるデバイスメモリを割り当てるwarpSizeか、そのまま合体する必要がありますか?

0 投票する
1 に答える
389 参照

c - 外部配列の使用によるアクセス違反

私は

1 つの C モジュールで宣言され、それにアクセスする他のモジュールで適切な externs が宣言されます。

func1()私はこの行を持っています:

また、例外は発生しません。func2()次に、別の C モジュール (上記の行の直後)を呼び出し、同じ行を実行します。

まず、例外がスローされました!!!

これを自分でデバッグする力はないと思います。

何かLS_vol_ledsを初期化する前func1()に:

私の外部は次のように見えます

extern LS_Led** LS_vol_leds;

それで、それは災害につながりますか、どうすれば災害を防ぐことができますか?

ありがとう。