問題タブ [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 投票する
0 に答える
2262 参照

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カーネルシリーズで動作するソリューションを見つけたいと思っています。

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

assembly - AVX VMOVDQA slower than two SSE MOVDQA?

While I was working on my fast ADD loop (Speed up x64 assembler ADD loop), I was testing memory access with SSE and AVX instructions. To add I have to read two inputs and produce one output. So I wrote a dummy routine that reads two x64 values into registers and write one back to memory without doing any operation. This is of course useless, I only did it for benchmarking.

I use an unrolled loop that handles 64 bytes per loop. It is comprised of 8 blocks like this:

Then I upgraded it to SSE2. Now I use 4 blocks like this:

And later on I used AVX (256 bit per register). I have 2 blocks like this:

So far, so not-so-extremely-spectacular. What is interesting is the benchmarking result: When I run the three different approaches on 1k+1k=1k 64-bit words (i.e. two times 8 kb of input and one time 8kb of output) I get strange results. Each of the following timings is for processing two times 64 bytes input into 64 bytes of output.

  • The x64 register method runs at about 15 cycles/64 bytes
  • The SSE2 method runs at about 8.5 cycles/64 bytes
  • The AVX method runs at about 9 cycles/64 bytes

My question is: how come the AVX method is slower (though not a lot) than the SSE2 method? I expected it to be at least on par. Does using the YMM registers cost so much extra time? The memory was aligned (you get GPF's otherwise).

Does anyone have an explanation for this?

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

x86 - なぜ2つのビット単位またはAVX命令ですか?

AVXには、ビット単位で実行する2つの命令(またはVORPDとVORPS)があります。ドキュメントによると:

これら2つのプロセッサ操作の間に実際の違いはありますか?そうでない場合:なぜ2つの指示があるのですか?そうでない場合も:ビット単位で整数を実行するためにそれらを使用するのは安全ですか?または?

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

d - D の明示的な simd コード

今すぐDでそれを行うことは可能ですか? 役立つ場合は、LDC2 コンパイラを使用しています。AVX 組み込み関数の使用に興味があります。

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

c++ - SIMD 対応コード?

SIMD 命令セットを利用できるコードの厳密な定義は何ですか? 計算を並行して実行できるものはありますか?

だから私が持っていたとしたら:

以下を実行できるため、SIMD を利用できます。

?

float 型である必要がありますか、それとも double と integer である可能性がありますか?

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

c++ - C/C++ を使用して、同じ実行可能ファイルにさまざまな最適化 (プレーン、SSE、AVX) を含める

3D 計算の最適化を開発しており、現在は次のようになっています。

  • plain標準 C 言語ライブラリを使用した " " バージョン、
  • プリプロセッサをSSE使用してコンパイルする最適化されたバージョン#define USE_SSE
  • AVXプリプロセッサを使用してコンパイルする最適化バージョン#define USE_AVX

異なる実行可能ファイルをコンパイルせずに 3 つのバージョンを切り替えることは可能inlineですか? このようなスイッチをソフトウェアに入れることで、パフォーマンスも考慮したいと思います。

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

x86 - 256ビットAVX(YMM)レジスタの真ん中の2つの64ビットを交換するにはどうすればよいですか?

256ビットAVX(YMM)レジスタの真ん中の2つの64ビットを交換する方法はありますか?

VPERM2F128を利用して下位128ビットと上位128ビットを交換できることはわかっていますが、vshufpsは上位128ビットと下位128ビットの両方でしか機能しないようです。

だから私はこの典型的な状況のために働くための効率的な指示があるのだろうかと思っていますか?

前もって感謝します!

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

macos - gccはmacでAVXを使用したくない

sysctl machdep.cpu.featuresだから私はIntelコアI7プロセッサを搭載したこの真新しいMacBookProを持っています

machdep.cpu.features:FPU VME DE PSE TSC MSR PAE MCE CX8 APIC SEP MTRR PGE MCA CMOV PAT PSE36 CLFSH DS ACPI MMX FXSR SSE SSE2 SS HTT TM PBE SSE3 PCLMULQDQ DTES64 MON DSCPL VMX SMX EST TM2 SSSE3 CX16 SSE4.2 xAPIC POPCNT AES PCID XSAVE OSXSAVE TSCTMR AVX1.0 RDRAND F16C

それでも、gcc(4.7.2 macports)を実行すると、#defineが実行されません__AVX__。どうしたの?(Mac OS X 10.8.2)

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

x86 - SSE movlps/movhps のように、AVX/AVX2(YMM) レジスタからメモリに低い値または高い値を格納する方法は?

SSE 命令 movlps/movhps のように、256 ビット AVX/AVX2(YMM) レジスタからメモリ アドレスに低い値または高い値を格納できる既存の命令はありますか?

または、これを実装する他の方法はありますか?

どんな助けでも大歓迎です、ありがとう!