問題タブ [avx512]
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.
assembly - AVX512 の丸めモードはどのように機能しますか (または NDISASM は単に混乱していますか)?
特定の AVX512F 命令vcvtps2udqを理解しようとしています。
命令の署名はVCVTPS2UDQ zmm1 {k1}{z}, zmm2/m512/m32bcst{er}
. マニュアル情報は以下です。
新しい丸めモードを理解するために、次のコード スニペットを NASM (2.12.02) でアセンブルします。
NDISASM (2.12.02) で結果を逆アセンブルすると、多くの混乱と次のコードが得られます。
質問: 2 行目は、zmm レジスターではなく xmm レジスターで逆アセンブルされています (予想していたはずです)。ゼロ丸めモード (rz-sae) が関係しています。または、NDISASM が間違っているだけで、オペコード 62F17C7879C1 と 62F17C0879C1 を区別できません。
Intel 命令セットのリファレンス マニュアルには、次の説明があります。
ソース オペランドの 16 個のパックド単精度浮動小数点値を、デスティネーション オペランドの 16 個の符号なしダブルワード整数に変換します。
変換が不正確な場合、返される値は、MXCSR レジスタの丸め制御ビットまたは組み込みの丸め制御ビットに従って丸められます。変換された結果を目的の形式で表すことができない場合、浮動小数点の無効な例外が発生し、この例外がマスクされている場合、整数値 2w – 1 が返されます。ここで、w は目的の形式のビット数を表します。
ソース オペランドは、ZMM/YMM/XMM レジスタ、512/256/128 ビットのメモリ ロケーション、または 32 ビットのメモリ ロケーションからブロードキャストされた 512/256/128 ビットのベクトルです。デスティネーション オペランドは、書き込みマスク k1 で条件付きで更新される ZMM/YMM/XMM レジスタです。
x86 - 競合検出命令を使用すると、ループのベクトル化がどのように簡単になりますか?
AVX512CD 命令ファミリは、VPCONFLICT、VPLZCNT、および VPBROADCASTM です。
これらの指示に関するウィキペディアのセクションには、次のように記載されています。
AVX-512 競合検出 (AVX-512CD) の命令は、通常は安全にベクトル化できないループ内の要素の競合のないサブセットを効率的に計算できるように設計されています。
これらの命令がループのベクトル化に役立つことを示す例は何ですか? 回答にスカラー ループとそれに対応するベクトル化されたループが含まれていると助かります。
ありがとう!
sse - avx は sse マルチメディア拡張機能よりも遅い
マルチメディア拡張機能と並列化するための完璧なプログラムをプログラミングしています。プログラムは画像の変換で構成されているため、マトリックスを調べて、その中の各ピクセルを変更します。より速く移動するために、私はマルチメディア拡張機能を使用します:
最初は SSE3 拡張を使用し、2.5 の高速化を達成しました。次に、AVX 拡張機能 (Double size vector) を使用するために sse アルゴリズムを拡張してプログラムしましたが、SSE3 に関しては得られません。SSEでプログラムを実行する時間は、AVXとほぼ同じです。SSE と AVX のコードの概要は次のとおりです。
}
}
ご覧のとおり、sse と avx は同じですが、後者は拡張され、より長いサイズのベクトルを使用しています。なぜ実行時間が同じなのですか?
注: AVX をサポートする 2 台のコンピューターで (明らかに) 試しましたが、同じ問題が発生しました。
どうもありがとうございました。