avx

    1

    1答えて

    私は最近、ベクトル化された指数関数の実装を研究していました。実際には単精度用のコードを見つけるのは非常に簡単ですが、倍精度用のコードを見つけるのは非常に難しいです。私は、倍精度AVXべき乗の実装を見つけることができませんでした。 SSEのコードはほとんど変更できますが、一般的に2^nで乗算するトリックはAVXに適応できないようです。 誰もそのような実装を知っていますか?

    1

    1答えて

    ここでは、これを達成しようとしています。私のC++プロジェクトでは、はMicrosoft Visual Studio 2015以上でコンパイルする必要があります、私はいくつかのコードは、ユーザーのCPUで利用可能な最新のSIMD instrunctionに応じて異なるバージョンを持っている必要があります:SSE2SSE3 、SSSE3,SSE4.1,SSE4.2,AVX,AVX2およびAVX512

    1

    2答えて

    処理速度向上のための並列処理アルゴリズムを見ています。 Agner Fog's vector class library, VCLをテストしたいです。 Vec16c(SSE2命令セット)とVec32c(AVX命令セット)のように、異なるベクタークラスを選択する方法が不思議です。 私はIntel®Atom™x5-Z8350プロセッサを使用しており、仕様に応じてSSE4.2命令セットをサポートしていま

    1

    1答えて

    私は後で_mm256_store_pd(dst,q);を使用して、ここでセグメンテーション違反が発生んなぜ命令 vmovapd YMMWORD PTR [rdi],ymm0 で時折セグメンテーションフォールトを取得 double *dst; posix_memalign((void**)&dst, 32, 4*sizeof(double)); で32バイトにアラインdoubleの配列を割

    3

    1答えて

    は同じ計算を実行し、これら3つの機能を考慮してください #include <x86intrin.h> void testfunc_loop(double a, double b, double* dst) { double f[] = {a,b,-a,-b}; for(int n = 0; n < 4; ++n) { dst[n] = 0.1 +

    10

    1答えて

    短い質問は、2つのベクトルをとる関数がある場合です。 1つは入力され、もう1つは出力されます(別名なし)。私はそれらのうちの1つだけを整列させることができますが、どちらを選ぶべきですか? より長いバージョンが void func(size_t n, void *in, void *out) { __m256i *in256 = reinterpret_cast<__m256i *>(i

    1

    2答えて

    _mm_shuffle_psの仕組みは分かります。たとえば、次のようになります。 __m128 r = _mm_shuffle_ps(x,y, _MM_SHUFFLE(2,0,2,0)); rは内容、x[0]、x[2]、y[0]、y[2]を持つことになります。 しかし、_MM_SHUFFLEも_mm256_shuffle_psの4つのパラメータをとりますが、そこには8つの要素があります。したが

    0

    1答えて

    私はAVXでプログラミングすることを学んでいます。そこで、私はサイズ4の行列を乗算する簡単なプログラムを書いた。コンパイラの最適化がないうちに、AVXバージョンは非AVXバージョンよりわずかに高速で、O3最適化では非AVXバージョンはAVXバージョン。どのようにAVXバージョンのパフォーマンスを向上させることができますか?以下は完全なコードです。 #include <immintrin.h> #

    -1

    1答えて

    私は一度に3つの非対称整数値の3つの対称セットで動作するいくつかのコードを持っています。かなりの量の条件コードと多くの定数があります。 これはperfボトルネックになっており、64ビットIntel/AMD CPU上のSIMDでパフォーマンスが向上すると、私はいくつかのルールを探しています。コードはかなり長く、前にSSE2やAVXを使用したことがないので、時間を投資する前にperfの勝利が可能かどう

    3

    1答えて

    基本的に、これに相当するAVX2組み込み関数を作成するにはどうすればよいですか? result_in_floatは__m256であり、はshort int*またはshort int[8]であると仮定します。 for(i = 0; i < 8; i++) result[i] = (short int)result_in_float[i]; 私は山車が固有__m256i _mm256_c