検索
ホームページバックエンド開発C++Intel Sandybridge ファミリ CPU での実行速度を大幅に低下させるために、モンテカルロ シミュレーションをさらに最適化するにはどうすればよいでしょうか?

How Can a Monte Carlo Simulation Be Further Deoptimized to Significantly Slow Down Execution on an Intel Sandybridge-Family CPU?

Intel Sandybridge ファミリ CPU のパイプラインのプログラムを逆最適化する

目標:インテル i7 Pipeline.

問題:

課題には、砥石プログラムまたはモンテカルロ プログラムの 2 つのオプションがありました。学生はモンテカルロ シミュレーション プログラムを選択しましたが、悲観的な取り組みによってコードの実行時間が 1 秒増加しただけです。

質問:

どうすれば学生はさらに悲観化できますかより重要なことを達成するためのコード

答え:

一般的な戦略:

  • 予測ミスのペナルティを増やすために予測不可能な分岐を導入します。
  • ループで運ばれる依存関係チェーンを長くして削減します命令レベルの並列処理。
  • より遅い FP 演算と div、特に exp 関数と log 関数を使用します。

Uarch 固有のアイデア:

組み込み関数を使用する():

  • movnti を使用してキャッシュからデータを削除します。
  • バイパス遅延を引き起こすには、FP 演算の間に整数シャッフルを使用します。
  • SSE 命令と AVX 命令を使用せずに混合することは避けてください。 vzeroupper.

with (インライン) asm:

  • 強制的にアライメントの問題を発生させて uop キャッシュを破壊します。
  • Use self-パイプラインをトリガーするようにコードを変更する

キャッシュミスとメモリ速度低下の誘発:

  • ストア転送ストールを引き起こす狭いストアを実行します。
  • 置換メモリを制御するための大きな構造体のメンバーを含むローカル変数レイアウト。
  • キャッシュ ミスとページ分割ロードを増やすようにメモリ レイアウトを調整します。
  • キャッシュラインまたはページの境界にまたがるには、位置合わせされていない変数を使用します。
  • 非配列で配列をループします。 -連続した順序。
  • 代わりにリンクされたリストの使用を検討してください。配列。

その他のテクニック:

  • std::atomic を使用するアトミック操作を遅くするためのループ カウンタ。
  • コード生成を強制的に遅くするには、-m32 または -march=i386 を指定してコンパイルします。
  • さらに遅くするには、精度の低い Long Double 計算を強制します。
  • 異なる CPU への CPU アフィニティを頻繁に設定します。
  • 過剰なシステムを実装します。

最後のメモ:

  • これらの手法はコードの速度を効果的に低下させますが、その「悪魔のような無能さ」のレベルは依存します。
  • 課題の講師は、学生にパイプラインの危険性と依存関係について学ぶよう意図したのかもしれません。これらのテクニックを単に盲目的に適用するよりも優れています。

以上がIntel Sandybridge ファミリ CPU での実行速度を大幅に低下させるために、モンテカルロ シミュレーションをさらに最適化するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
C標準テンプレートライブラリ(STL)はどのように機能しますか?C標準テンプレートライブラリ(STL)はどのように機能しますか?Mar 12, 2025 pm 04:50 PM

この記事では、C標準テンプレートライブラリ(STL)について説明し、そのコアコンポーネント(コンテナ、イテレーター、アルゴリズム、およびファンクター)に焦点を当てています。 これらが一般的なプログラミングを有効にし、コード効率を向上させ、読みやすさを改善する方法を詳述しています。

STL(ソート、検索、変換など)のアルゴリズムを効率的に使用するにはどうすればよいですか?STL(ソート、検索、変換など)のアルゴリズムを効率的に使用するにはどうすればよいですか?Mar 12, 2025 pm 04:52 PM

この記事では、cの効率的なSTLアルゴリズムの使用について詳しく説明しています。 データ構造の選択(ベクトル対リスト)、アルゴリズムの複雑さ分析(STD :: STD :: STD :: PARTIAL_SORTなど)、イテレーターの使用、および並列実行を強調しています。 のような一般的な落とし穴

cで例外を効果的に処理するにはどうすればよいですか?cで例外を効果的に処理するにはどうすればよいですか?Mar 12, 2025 pm 04:56 PM

この記事では、Cでの効果的な例外処理、トライ、キャッチ、スローメカニックをカバーしています。 RAIIなどのベストプラクティス、不必要なキャッチブロックを避け、ログの例外をロギングすることを強調しています。 この記事では、パフォーマンスについても説明しています

パフォーマンスを改善するために、CのMove Semanticsを使用するにはどうすればよいですか?パフォーマンスを改善するために、CのMove Semanticsを使用するにはどうすればよいですか?Mar 18, 2025 pm 03:27 PM

この記事では、不必要なコピーを回避することにより、パフォーマンスを向上させるために、CのMove Semanticsを使用することについて説明します。 STD :: MOVEを使用して、移動コンストラクターと割り当てオペレーターの実装をカバーし、効果的なAPPLの重要なシナリオと落とし穴を識別します

cでRValue参照を効果的に使用するにはどうすればよいですか?cでRValue参照を効果的に使用するにはどうすればよいですか?Mar 18, 2025 pm 03:29 PM

記事では、移動セマンティクス、完璧な転送、リソース管理のためのcでのr値参照の効果的な使用について説明し、ベストプラクティスとパフォーマンスの改善を強調しています。(159文字)

より表現力のあるデータ操作のために、C 20の範囲を使用するにはどうすればよいですか?より表現力のあるデータ操作のために、C 20の範囲を使用するにはどうすればよいですか?Mar 17, 2025 pm 12:58 PM

C 20の範囲は、表現力、複合性、効率を伴うデータ操作を強化します。複雑な変換を簡素化し、既存のコードベースに統合して、パフォーマンスと保守性を向上させます。

動的ディスパッチはCでどのように機能し、パフォーマンスにどのように影響しますか?動的ディスパッチはCでどのように機能し、パフォーマンスにどのように影響しますか?Mar 17, 2025 pm 01:08 PM

この記事では、Cでの動的発送、そのパフォーマンスコスト、および最適化戦略について説明します。動的ディスパッチがパフォーマンスに影響を与え、静的ディスパッチと比較するシナリオを強調し、パフォーマンスとパフォーマンスのトレードオフを強調します

新しい、削除、スマートポインターなど、Cのメモリ管理はどのように機能しますか?新しい、削除、スマートポインターなど、Cのメモリ管理はどのように機能しますか?Mar 17, 2025 pm 01:04 PM

Cメモリ管理は、新しい、削除、およびスマートポインターを使用します。この記事では、マニュアルと自動化された管理と、スマートポインターがメモリリークを防ぐ方法について説明します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。