問題タブ [prefetch]

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 投票する
1 に答える
2053 参照

c++ - C++メモリマップトファイルデータのプリフェッチ

メモリに完全にロードできず、ランダムにアクセスされる非常に大きなメモリマップトファイル(200GB以上)を扱っています。マップされたファイルはソリッドステートドライブアレイに保存されますが、同じ検索が以前に行われ、使用されたページがすでにメモリに読み込まれていない限り、必要なパーツに一度に1つずつアクセスするのは非常に遅いことがわかります。

mmapの変数を読み取るために複数のスレッドを同時に追加すると、速度が劇的に向上し、テストの向上の上限に達することができませんでしたが、スレッドが1000を超えると、openmpがリソース使用不可エラーをスローします。

また、madviseを試して、必要となる特定の部分(MADV_WILLNEED)をカーネルにアドバイスしようとしましたが、カーネルは、違いを生むのに十分な速さでアドバイスに基づいて動作していないようです。

実際に使用される直前に必要なデータの部分を同時にプリフェッチする方法を探しています。変数(または変数を含むマップされたファイルのメモリページサイズの部分)を読み取るためのリソースを最も消費しない方法は、読み取りをブロックせずに変数をメモリに強制することです。

ブロッキングを回避できない場合は、非常に多数の非常に軽量なスレッドを実行して読み取りを行う方法も機能します。

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

django - django の prefetch_related() が all() でしか機能せず、filter() で機能しないのはなぜですか?

このモデルがあるとします:

ここで、アルバムのサブセット内の写真のサブセットを効率的に見たいとします。私はそれを次のようにします:

これは、私が期待する 2 つのクエリのみを実行します (1 つはアルバムを取得するためのもので、もう 1 つは `SELECT * IN photos WHERE photoalbum_id IN () のようなものです)。

すべてが素晴らしいです。

しかし、私がこれを行うと:

WHERE format = 1次に、 !を使用して大量のクエリを実行します。私は何か間違ったことをしていますか、それともdjangoはすでにすべての写真を取得しており、Pythonでそれらをフィルタリングできることに気付くほど賢くありませんか? ドキュメントのどこかで、それを行うことになっていることを誓います...

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

python - Django の逆関係のキャッシュまたはプリフェッチ

Publishers テーブルと Books テーブルを持つスキーマを考えてみましょう。

私のテンプレートでは、特定の出版社とそのすべての書籍のリストを表示したいと考えています。私のビュー関数では、次のようなもので目的のパブリッシャーをフェッチします

次に、私の見解では、publishers と publishers.book_set.all を次のように反復処理します。

これは期待どおりに機能しますが、明らかにデータベースに無数の回数ヒットします。

djangoがデータベースに1回または2回しかヒットしないようにコードを最適化するにはどうすればよいですか?

0 投票する
2 に答える
4414 参照

cuda - cuda でのプリフェッチ (C コード経由)

C コードを使用して CUDA (Fermi GPU) でデータのプリフェッチに取り組んでいます。Cuda のリファレンス マニュアルでは、C レベルのコードではなく、ptx レベルのコードでのプリフェッチについて説明しています。

cudaコード(cuファイル)を介したプリフェッチに関するドキュメントまたは何かを誰かに教えてもらえますか。どんな助けでも大歓迎です。

0 投票する
0 に答える
284 参照

caching - fread はプリフェッチを使用しますか? もしそうなら、それは一貫性の問題にどのように対処しますか?

フレッドの行動について質問です。fread は stdio.h からのものです

fread(2KB) の場合、strace ログに read()=4KB が表示されるという実験を行いました。したがって、これは、fread が「プリフェッチ」を使用したこと、または少なくとも 4KB に切り上げたことを意味します。ただし、fread がプリフェッチを使用してデータをライブラリ レベルでキャッシュした場合、プログラムが「プリフェッチされた」データを使用する前に、他のプログラムによって変更される可能性があり、fread はこの変更を認識しない可能性があり、これにより不整合の問題が発生します。 .

では、fread は正確には何をするのでしょうか。freadには切り上げ、プリフェッチがあり、freadはライブラリレベルでキャッシュしますか? プリフェッチを使用している場合、不整合の問題をどのように処理しますか?

ありがとう。

0 投票する
0 に答える
124 参照

html - HTML プリフェッチはストリーミング コンテンツのダウンロードも開始しますか?

プリフェッチは、HTML5 を構成する新しい標準の 1 つです。次のようにタグに追加できます。

私の質問:

  1. Youtube のようなストリーミング データを含むページをプリフェッチしようとするとどうなりますか? ビデオはバッファリングを開始しますか?
  2. コンテンツが何であるか (Flash と HTML5 ビデオなど) は重要ですか? この FAQで、HTTP/S のみがプリフェッチされると記載されているため、質問します。
0 投票する
1 に答える
948 参照

cuda - プリフェッチ組み込みによる CUDA SDK matrixMul の改善

CUDA SDK (2.3) の matrixMultiply カーネルの一部を次に示します。

このバージョンの行列乗算は、タイルを共有メモリに取り込み、共有メモリ帯域幅で計算を実行します。次の反復のデータを L1 キャッシュにプリフェッチして、パフォーマンスを向上させたい。ここで提案されているようにプリフェッチ組み込みを使用し、PREFETCH BLOCK上記に次のコマンドを挿入しました。

テスト後、2 つのバージョン (プリフェッチありまたはなし) のパフォーマンスは非常に似ています (3 回の実行の平均)。

プリフェッチなし: 6434.866211 (ミリ秒)

プリフェッチあり: 6480.041016 (ミリ秒)

質問:

プリフェッチによって速度が向上することを期待していますが、結果に混乱しています。これら2つの実装が非常に近いパフォーマンスを発揮する理由を正当化する団体はありますか? 間違ったプリフェッチを実行している可能性があります。

前もって感謝します。

詳細情報:

GPU: テスラ C2050

CUDA バージョン: 4.0

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

html - プリフェッチまたは次は何を使用する必要がありますか?

ご存知かもしれませんが、FireFoxにはWebページをプリフェッチするオプションがあります。

今ドキュメントから:

私が理解していることから、プリフェッチしたものはすべてプリフェッチされますが、いつプリフェッチrelを使用する必要があり、いつ次を使用する必要がありますか?

マルチパイルリソースをプリフェッチしようとすると、すべてのリンクがどのように表示されるのでしょうか。

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

c++ - C ++プリフェッチデータを強制的にキャッシュする方法は? (配列ループ)

私はこのようなループを持っています

データのプリフェッチが効率にどのように影響するかを確認する必要があります。値がカウントされる前に、メモリからキャッシュに値を強制的にプリフェッチする方法は?

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

c - この C コードを変更して一部のデータをプリフェッチするにはどうすればよいですか?

マトリックス効率をチェックするアプリケーションを作成します。私はさまざまな方法を使用します (たとえば、変更ループ、2/3 ループ、openmp など)。1 つ残っているのは、データのプリフェッチを確認する必要があるということです。

コード:

通常prefetch、データは単独で処理されますが (1 つの行にあり、 がインクリメントされる場合)、常にではありませjん (たとえば、次の行に移動する場合や、次の行に移動する場合 ( ))。などからのデータをカウントする前に、このコードを変更する方法を教えてください。tab[0][0]prefechedloop i++ ,tab[i][0]proc prefetchtab[0][0], tab[1][0],tab[2][0],tab[3][0]