問題タブ [avx]

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 に答える
14880 参照

c++ - __m256dレジスタの使用

どのように使用します__m256dか?

3〜64ビット精度のコンポーネント(、、、および)を_mm256_add_pd持つ単純なクラスでIntelAVX命令を使用したいとします。これを使用する正しい方法は何ですか?Vector3doublexyz

x、はクラスのメンバーなのでy、 _変数を使用して宣言できますか?zVector3union__m256d

それなら私は行くことができます:

それはうまくいくでしょうか?または、一時的なものを宣言する必要がありますか?

編集

私はこの例を思いついた、

問題は、ロード操作を自動的に実行するのか、それとも、レジスターを使用場所に近いローカルとして宣言しない と、何かが混乱するのかということだと思います。(ホテルの部屋/机の引き出しタイプの問題が怖いです)_mm256_add_pd__m256d

編集2:

かなり大きなプロジェクトにレジスターを追加してみた__m256ところ、たくさんの

エラーC2719:'value':__declspec(align( '32'))を含む正式なパラメーターは整列されません

エラー、それはあなたがクラス内にレジスタを保持することはできないと私に信じさせます__m256、代わりにそれらはローカルとして宣言されるべきですか?

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

c++ - コンパイラを打ち負かす

インテルの組み込み関数を使用して、コンパイラーに最適化されたコードを打ち負かそうとしています。できることもあればできないこともあります。

問題は、なぜコンパイラを打ち負かすことができるのか、そうでないのかということだと思います。インテルの組み込み関数を使用した場合は0.006秒operator+=(ベアC ++を使用した場合は0.009秒)でしたが、operator+組み込み関数を使用した場合は0.07秒でしたが、ベアC++はわずか0.03秒でした。

編集

なぜ私はこれをしているのですか?VS 2012プロファイラーは、私のベクトル算術演算で調整を使用できると言っています。

ここに画像の説明を入力してください

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

c - 256ビットpsベクトルのコンポーネントにアクセスする方法

256ビットベクトルの要素に効率的にアクセスするにはどうすればよいですか?たとえば、ドット積を次のように計算しました

それでは、cの値にアクセスするにはどうすればよいですか?上位部分と下位部分の両方を取得する必要があります。最初に次のように128ビット部分を抽出する必要があることを正しく理解していますか。

そして、フロートを抽出します。

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

c - 最新のマシンでプリフェッチを使用する必要があるのはいつですか?

重複の可能性:
プリフェッチの例?

多くの場合、プリフェッチ命令は最新のマシンでパフォーマンスを低下させるように見えます。これは、通常、いくつかの異なるハードウェア プリフェッチ ユニットがあるためです。

プリフェッチ命令を使用すると常に役立つ特定のケースはありますか?

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

c++ - __m128、__m128d、__m256 などは C++ の組み込み型ですか?

structC++ 標準では、組み込み型とまたは型が区別されclassます。後者の場合、適切な演算子が言語によって提供されている場合、 +*=、またはなどの演算子をオーバーロードでき&ますが、組み込み型の場合は許可されません。私の知る限り、SSE/AVX タイプは標準で言及されていないため (ただし、私を修正してください)、これらの演算子を宣言できるはずです。GCC では許可されていませんが、ICC では許可されています。どちらが正しいですか?

本当にビット単位の操作 ( など&=) が必要ですが、厄介なことに、GCC はそれらを提供しておらず ( for __m128)、宣言することもできません。

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

c - __m256 と 2 つの __m128 の配列との結合

このような組合を持てますか

256 ビット レジスタの 2 つの 128 ビット部分に瞬時にアクセスするには?

編集:このアプローチのパフォーマンスへの影響を理解するよう求めていました。

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

vectorization - _mm_broadcast_ssは_mm_set1_psよりも高速ですか?

このコードは

このコードよりも常に速い

ではなくaとして定義された場合はどうなりますか?static const float a = ...float a = ...

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

sse - __m256 を水平方向に合計するには?

__m256AVX 命令を使用して、ベクトルのコンポーネントを水平方向に合計したいと考えています。SSEで使用できます

ベクトルの最初のコンポーネントで結果を取得しますが、これは関数の 256 ビット バージョンではスケーリングされません ( _mm256_hadd_ps)。

__m256ベクトルの水平方向の合計を計算する最良の方法は何ですか?

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

xcode - AVXが有効になっている場合、Clangはより遅いコードを生成しますか?

Xcode4.5.2を「AppleLLVMCompiler4.1」(Clang)で使用しています。

AVXが有効になっている(_mm256 *関数と__m256変数がまだない)SSE組み込み関数に大きく依存するコードをコンパイルしようとしましたが、SSE4.2のみが有効になっている場合に取得するコードが遅くなりました。

これについての合理的な説明はありますか?

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

c - 単一のAVX組み込みを使用して、doubleを含むAVXレジスタを反転します

4つのdoubleを含むAVXレジスタがあり、その逆を別のレジスタに格納したい場合、単一の組み込みコマンドでこれを実行できますか?

例:SSEレジスタに4つのフロートがある場合、次を使用できます。

多分、これを使用してこれを行うことはできます_mm256_permute2f128_pd()か?上記の組み込みを使用して、個々のダブルに対処することはできないと思います。