simd

    9

    2答えて

    私は、インテルが文字列処理を高速化するためにSSE 4.2 instructionsを導入したhereを読んでいます。物品から 引用: 最初のインテルのコアI7に実装SSE 4.2命令セット、 は、文字データを処理するため SIMD演算を利用して文字列とテキスト処理命令(STTNI)を提供します。もともと が文字列、テキスト、XML処理を高速化するために開発されましたが、これらの命令の強力な新機能

    7

    2答えて

    intバッファから128ビットのintベクトルレジスタを逆順にロードするSSE2命令はありますか?

    5

    1答えて

    __m128変数が4つのSP値を保持していて、最小値が必要な場合、組み込み関数があるかどうか、値間の単純な線形比較以外の値があるとしますか? 右私の解決策は、(入力__m128変数がxであると仮定)は、次のことを知っている:かなり恐ろしいですが、それが働いている x = _mm_min_ps(x, (__m128)_mm_srli_si128((__m128i)x, 4)); min = _mm

    8

    1答えて

    sse組み込み関数を使用してfloatベクトルの合計要素(削減)を取得するにはどうすればよいですか? シンプルなシリアルコード:通常 void(float *input, float &result, unsigned int NumElems) { result = 0; for(auto i=0; i<NumElems; ++i) result += inpu

    6

    2答えて

    2つの64ビット整数に別の2つの64ビット整数を乗算するにはどうすればよいですか? 私はそれを行うことができる指示を見つけませんでした。

    23

    1答えて

    アドバンスドベクトル拡張(AVX)で、_m256_cmp_psのような比較命令を使用する場合、最後の引数は比較述語です。 述語の選択肢が私に圧倒されます。 彼らはタイプ、注文、シグナリングの三重であるようです。 など。 _CMP_LE_OSは 'より小さいか等しい、順序付けられた、シグナリングです。 最初に、信号または非シグナリングを選択するパフォーマンス理由はありますか? 同様に、順序付けされて

    13

    1答えて

    同じ長さ(たとえば、m)のすべての文字列、同じ長さの別の文字列sがあります。n(8ビット)の文字列があります。 sから他の各文字列までのハミング距離を計算する必要があります。プレーンCのようなもの: unsigned char strings[n][m]; unsigned char s[m]; int distances[n]; for(i=0; i<n; i++) { int

    11

    3答えて

    ロード命令などVPGATHERDDなどが集まっているAVX2の組み込み関数のドキュメントを見て:ドキュメントから私には明らかではないが、何 __m128i _mm_i32gather_epi32 (int const * base, __m128i index, const int scale); が算出したロードアドレスがあるされているかどうかを load_addr = base + ind

    6

    1答えて

    256ビット相当もし固有_mm_load1_ps(と__m128のすべての4つのスロットにメモリから単一のフロートをロードすることができる) AVX 256ビット幅のSIMDを使用する場合、があるように思わ_mm256_load1_ps()は、メモリから単一のfloatをベクトルの8つのスロットすべてにロードするためのものではありません。 なぜこの省略がありますか?これを回避するにはどうすればよい

    6

    1答えて

    私はVisual C++ 2012を使用してSSE組み込み関数を使い始めましたが、いくつかのポインタが必要でした。 私はそれぞれ4個のsigned shortを含む2つの配列を持っています(各配列は64ビットなので合計128です)。 XMMレジスタの上位ビットに1をロードし、下位ビットに1をロードします。 SSE組み込み関数を使用してこれを効率的に達成できますか?もしそうなら、どうですか?