問題タブ [simd]

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

x86 - myNum + = a [b [i]] *c[i];をベクトル化することは可能ですか。x86_64で?

x86_64で以下をベクトル化するためにどの組み込み関数を使用しますか(ベクトル化が可能である場合)?

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

c++ - C++ を使用した OS X の SIMD Sony Vector Math ライブラリ

私は現在、割り当て用の非常に単純なゲーム エンジンを作成しており、コードをより良くするために、ベクトル数学ライブラリを使用することにしました。私の講師の 1 人が、Bullet Physics エンジンで使用されている Sony Vector Math ライブラリを見せてくれました。Linux では問題なく動作していますが、OS X (intel、Snow Leopard) で動作するように移植するのに問題があります。プロジェクトにファイルを正しく含めましたが、ライブラリの C++ バージョンがコンパイルされないようです。ライブラリの C バージョンを動作させることはできますが、C++ バージョンに比べてかなり厄介な API があり、このライブラリを使用する全体的な理由は、そもそもコードをきれいにすることでした。

http://glosx.blogspot.com/2008/07/sony-vector-math-library.html

私が偶然見つけたこのブログ投稿は、コンパイラに何か問題があることを示唆しているようです? かなり短いので、そこから多くの情報を得ることができませんでした。

C++ バージョンを使用しようとすると、次のエラーが表示されます (各エラーの拡大ビュー)。

2 番目のエラー:

最後に、main.cpp ファイルの最後に 2 つのエラーがあります。

私は自分の心をグーグルで検索しましたが、正しい方向に向けるための答えや何かを見つけることができないので、どんな助けも大いに受け取られます.

ありがとう、

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

c++ - Visual Studio コンパイラ フラグ /arch とパフォーマンス

私たちのプロジェクトでは、「Enable Enhanced Instruction Set」フラグが設定されていないままになっていることに気付きました。おそらく単なる見落としです。

フラグを有効にする前に、それを有効にした実際のパフォーマンスの改善を見た人がいるかどうか尋ねたいですか?

私たちのアプリケーションが常に浮動小数点ベースの計算を行ういくつかの改善が見られると思いますが、それは主要な部分ではありません.

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

algorithm - 特別な素数の浮動小数点数モジュラスを取る高速でベクトル化可能な方法?

浮動小数点数のモジュラスを取るための高速な方法はありますか?

整数では、メルセンヌ素数のトリックがあるため、除算を必要とせずに y = x MOD 2^31-1 を計算できます。 整数トリック

浮動小数点数に同様のトリックを適用できますか?

できれば、ベクトル/SIMD 演算に変換できる方法、または GPGPU コードに移動できる方法で。これにより、浮動小数点データでの整数計算の使用が除外されます。

私が興味を持っている素数は 2^7-1 と 2^31-1 ですが、浮動小数点数に対してより効率的な素数があれば、それらは大歓迎です。

このアルゴリズムの使用目的の 1 つは、入力浮動小数点数がアルゴリズムに読み込まれるときに、実行中の「チェックサム」を計算することです。計算機能を使いすぎないようにするために、これを軽量に保ちたいと思います。

どうやら、同様の手法がより大きな数、特に 2^127 - 1 に使用されているようです。残念ながら、この論文の数学は私には理解できず、それをより小さな素数に変換する方法を理解できませんでした。
浮動小数点の例 MOD 2^127 - 1 - HASH127

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

assembly - SSE2/SSSE3の16ビット要素の8つのレジスタを転置します。

(私はSSE / asmの初心者です、これが明白または冗長である場合はお詫びします)

24個のunpck[lh]psと8/16+シャッフルを実行し、8個の追加レジスタを使用するよりも、16ビット値を含む8個のSSEレジスタを転置するためのより良い方法はありますか?(最大SSSE 3命令、Intel Merom、別名SSE4のBLEND *がないものを使用していることに注意してください。)

レジスタv[0-7]があり、補助レジスタとしてt0-t7を使用するとします。疑似組み込みコードの場合:

各unpck*は3サイクルのレイテンシー、または相互スループットの場合は2サイクルかかります(Agnerによる報告)。これは、このレジスタダンスが要素ごとにほぼ1サイクルかかるため、SSE(このコード)を使用することによるパフォーマンス向上の大部分を殺します。x86転置用のx264のasmファイルを理解しようとしましたが、マクロを理解できませんでした。

ありがとう!

0 投票する
5 に答える
1706 参照

x86 - CPUの新しい命令セット

新世代のCPUごとに、MMX、3DNOW、SSEなどの新しい命令のセットが導入されます。

それらについての一般的な質問はほとんどありません。

  1. たとえばSSE命令を使用するプログラムがある場合、SSEをサポートしていないCPUで実行できますか?
  2. はいの場合、それらの命令がより多くのより単純な命令に変更されることを意味しますか?
  3. そうでない場合、そのような新しい命令の実際のパフォーマンスへの影響は、ほとんどのCPUがそのようなテクノロジをサポートする数年後になることを意味します(したがって、非互換性はありません)。
  4. 最適化を使用してC++プログラムをコンパイルすると、この新しい命令の一部が使用されるということですか?(私はそれが多くの要因、特にコードに依存することを知っていますが、私はいくつかの一般的な答えが欲しいです)。それとも、それらは主にasmで書かれたプログラムのために予約されていますか?
0 投票する
4 に答える
2252 参照

assembly - VC++ 2K8 での SSE コーディングのための組み込み関数とインライン ASM の比較

以前に SSE のインライン ASM コーディングを行ったことがありますが、ASM を知らない人でもそれほど難しくはありませんでした。しかし、MS はそのような特別な命令の多くをラップする組み込み関数も提供していることに注意してください。

特定のパフォーマンスの違い、または一方を他方の上に使用する必要があるその他の強い理由はありますか?

タイトルから繰り返しますが、これは VC++ 2008 によって公開されたアンマネージ ネイティブ C++ の組み込み関数を具体的にカバーしています。

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

arm - ARM Neon 組み込み関数を使用してベクトル データを並べ替えるにはどうすればよいですか?

これは特に ARM Neon SIMD コーディングに関連しています。ビデオデコーダーの特定のモジュールにARM Neon instrinsicsを使用しています。次のようなベクトル化されたデータがあります。

Neon レジスタには 4 つの 32 ビット要素 (Q0 など) があり、サイズは 128 ビットです。

他の Neon レジスタには、サイズが 128 ビットの Q1 など、さらに 4 つの 32 ビット要素があります。

以下に示すように、最終データを整理したいと思います。

目的のデータ順序を実現できる Neon 組み込み関数はどれですか?

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

c++ - C++ で SIMD を実装する

私は少しのコードに取り組んでおり、可能な限り最適化しようとしています。基本的には、特定の制限時間内で実行します。

以下は呼び出しを行います...

...そして、以下が実行されます。

これを最適化するために Intel の TBB を使用しています。しかし、SIMD や SSE2 など、その性質に沿ったものについても読んでいます。私の質問は、変数 (i、j、k) をレジスタに格納して、CPU がより高速にアクセスできるようにするにはどうすればよいかということです。答えはSSE2またはそのバリエーションの実装に関係していると思いますが、その方法がわかりません。何か案は?

編集:これはLinuxボックスで実行されますが、Intelのコンパイラを使用していると思います。それが役立つ場合は、何かを行う前に次のコマンドを実行して、コンパイラーが機能することを確認する必要があります... source /opt/intel/Compiler/11.1/064/bin/intel64/iccvars_intel64.csh; source /opt/intel/tbb/2.2/bin/intel64/tbbvars.csh ... そしてコンパイルするには: icc -ltbb test.cxx -o test

SSE2 を実装する簡単な方法がない場合、コードをさらに最適化する方法について何かアドバイスはありますか?

ありがとう、フリスト

0 投票する
19 に答える
13109 参照

c - 線形検索はどのくらいの速さで実行できますか?

私はこの線形検索を最適化しようとしています:

配列はソートされ、関数はキー以上の最初の要素のインデックスを返すことになっています。They 配列は大きくなく (200 要素未満)、多数の検索に対して一度だけ準備されます。n 番目以降の配列要素は、必要に応じて適切なものに初期化できます。これにより、検索が高速化されます。

いいえ、バイナリ検索は許可されていません。線形検索のみが許可されています。

編集: このトピックに関する私の知識はすべて、このブログ投稿にまとめられています。