問題タブ [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.
intel - Intel SSE および AVX の例とチュートリアル
インテル SSE および AVX 命令を学習するための優れた C/C++ チュートリアルまたは例はありますか?
Microsoft MSDN と Intel のサイトで見つけたものはほとんどありませんでしたが、基本から理解することは素晴らしいことです..
c++ - m256_f32 に相当する GCC
Visual Studio 2010 で正常にコンパイルされる、次のような AVX C++ コードがあります。
ただし、GCC では次のエラーが発生します。
私はいくつかの調査を行いましたymm0.m256_f32
が、長い AVX レジスタから個々のフロートを抽出するための Microsoft 固有の命令のようです。しかし、gcc/linux で同じことを行うには何を使用できますか?
c - AVX の SSE unpacklo_ps/unpackhi_ps に相当 (double の場合)
SSE では、4 つの float を含む 128 ビットのレジスタがある場合、つまり
と
私が望むなら
私は簡単に行うことができます:
同様に、私が望むなら
できます:
double を含む AVX レジスタがある場合、単一の命令で同じことを行うことは可能ですか?
これらの組み込み関数がどのように機能するかに基づいて_mm256_unpacklo_pd()
、 、_mm256_shuffle_pd()
、_mm256_permute2f128_pd()
またはを使用できないことがわかっています_mm256_blend_pd()
。これら以外に使用できる指示はありますか、または上記の指示を組み合わせて使用する必要がありますか?
c++ - SSE / AVX のアラインされたメモリの valarray
valarray
SSE と AVX でベクトル化できるように、アライメントされたメモリを確実に使用する方法はありますか? 私の知る限り、STL はアラインメントを保証しておらず、アロケーターを valarray に渡すことはできません。これを達成する別の方法はありますか?
よろしくお願いします!
gcc - i87、AVXを同時に使用するが、SSEも使用しないgccオプション
AVX
拡張機能をサポートするプロセッサ用にコンパイルされた場合(たとえば適用可能)、キーを同時に-m64 -march=corei7-avx -mtune=corei7-avx
使用することは理にかなっていますか?コンパイラが3セットの命令( 、、 )を同時に-mfpmath=both -mavx
使用するほどではありませんか?または、スカラー(ある意味で)とベクトルのみの場合はどうでしょうか。i87
SSE
AVX
i87
AVX
gcc - MinGW (または gcc) の mfpmath オプション
コマンド ライン オプション (または) を使用したMinGWへの-march=corei7-avx -mtune=corei7-avx
または-march=corei7 -mtune=corei7 -mavx
コマンド ライン オプションは、数学ルーチンにAVX命令を使用できるようにしますか? from hereは機能しないことに注意してください( MinGWの最近のビルドでは「認識されないオプション」です)。-mfpmath=sse
-mfpmath=both
--with-fpmath=avx
sse - __m256d のすべての要素を、たとえば別の __m256d の 3 番目の要素に設定する方法は?
4 パックfloat
( __m128
) で、SSE 組み込み関数を使用できます
のすべての要素H
を の 3 番目の要素に設定しますX
(これが最速の方法ですか?)
double
今、私は 4 パック( )で同じことをしたいです__m256d
。私は素朴にコーディングしました
しかし、これは正しいことではありません。代わりに、H={X[1],X[1],X[3],X[3]} を設定します。
それで、それを正しく行う方法は?
編集
Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz を使用
c - AVX を使用した符号付き/符号なし整数の最小値
私は AVX 命令ガイドを調べていましたが、32 ビット整数値のロード、ストア、および置換操作がありますが、最小値または最大値の決定などの他の操作、またはシャッフル操作は float と double に対してのみ存在します。
したがって、これらの演算を 32 ビット整数に使用したい場合は、それを float に型キャストしてから型キャストする必要がありますか、それとも他に不足している命令がありますか?
また、32 ビット整数で使用したい場合、シャッフル マスクはフロートの場合と同じままですか?
x86 - 8つのパックされた32ビットフロートの水平方向の合計
8つのパックされた32ビット浮動小数点数(__m256
)がある場合、8つの要素すべての水平方向の合計を抽出する最も速い方法は何ですか?同様に、水平方向の最大値と最小値を取得するにはどうすればよいですか?言い換えれば、次のC ++関数の最適な実装は何ですか?
linux - Linuxコンピューターでavx命令を無効にするにはどうすればよいですか?
または、より具体的には、/ proc / cpuinfoとCPUIDオペコードがAVXが有効になっていることを示さないようにするにはどうすればよいですか?
(コンテキストとして、一部のAmazon EC2インスタンスにはバグがあり、AVXがアクティブであると誤って報告され、AVX命令を動的に使用するプログラムがSIGILLでクラッシュします)。
このカーネルパッチを見たことがあります:https : //patchwork.kernel.org/patch/1521191/、しかしそれがカーネルのavxの使用だけに影響するのか、それともCPUIDと/ proc/cpuinfoにパッチを当てるのかはわかりません。とにかく、私はlinux2.6.xカーネルシリーズで動作するソリューションを見つけたいと思っています。