_mm512_storenrngo_pdと_mm512_storenr_pdの違いは何ですか?_mm512_storenr_pdと_mm512_storenrngo_pd
_mm512_storenr_pd(void *型MT、__m512d V):に無読みヒントとメモリアドレスMTに Vから倍精度(64ビット)浮動小数点要素を詰め
店舗プロセッサー。
ノーリードヒントの意味はわかりません。それは、非キャッシュ一貫性書き込みであることを意味しますか?再利用はより高価であるか、一貫性がないという意味ですか?
_mm512_storenrngo_pd(ボイド* MT、__m512d V):
格納パックド倍精度(64ビット)なし読み取りヒントと使用のメモリアドレスMTに対するV から浮動小数点要素弱い順序の メモリ一貫性モデル(この関数で実行されるストアは、グローバルに順序付けされた ではなく、同じスレッドからの後続のストアは、それらの前に観察される になる可能性があります)。
storenr_pd
と基本的に同じ、それは弱い一貫性モデルを使用するので、このプロセスは、他のプロセッサの前に、自身の書き込みを見ることができることを意味します。しかし、別のプロセッサへのアクセスは、非コヒーレントであるか、またはより高価ですか? Intel® Xeon Phi™ Coprocessor Vector Microarchitectureから
'' vmovnrngoaps'の後で、 '' buffer_ready ''フラグへの後のストアでの並べ替えを停止するのに十分ではないでしょうか?それともKNCは違うの?通常のCPUでは、[vmovntps [payload]、ymm0'/'sfence' /' mov [flag]、1'で十分です。](https://stackoverflow.com/a/44866652/224132)。 (そして、 'CPUID'でも十分ですか?ストアがリタイアした後もデータはストアバッファに残っている可能性があります。また、アウトオブオーダーパイプラインをシリアル化するCPUIDはストアキューとNTストアバッファをフラッシュしません。 Line-Fill Buffers)、そうですか?) –
'vmovnrngoaps'はAVX/AVX512' vmovntps'/'_mm512_stream_ps'と同じように発音します。ああ、KNCはSFENCEやMFENCEを持っていないのですか?あなたの最後の引用符には*私たちのコンパイラがフェンス(ロック命令)*を生成するものが含まれています。私はKNCについてよく読んだことはありません。 Agner Fogのmicroarchガイドにはセクションがありません。 –
私はKNCがそれらをサポートしていないと思います。 「インテル®Xeon®プロセッサー・ソフトウェア開発者ガイド」の第4.2.18.1項に記載されているとおり、「インテル®Xeon®プロセッサー・プロセッサーは、より厳密なメモリー発注モデルの結果、SFENCE、LFENCE、およびMFENCE命令をサポートしていません。他のインテル・プロセッサー上のメモリー順序を制御する効率的な方法です。 – veritas