sse

    2热度

    1回答

    所以我尝试使用SSE函数__mm_load_128,我对SSE fo非常新,如果我在某处犯了一些愚蠢的错误,请原谅我。 这里是Visual Studio中的代码 void one(__m128i *arr, char *temp) { // SSE needs 16 byte alignment. _declspec (align(16)) __m128i *tmp = (_

    0热度

    1回答

    我期望SSE比不使用SSE更快。我是否需要添加一些额外的编译器标志?难道我没有看到加速,因为这是整数代码而不是浮点数? 调用/输出 $ make sum2 clang -O3 -msse -msse2 -msse3 -msse4.1 sum2.c ; ./a.out 123 n: 123 SSE Time taken: 0 seconds 124 milliseconds vect

    0热度

    1回答

    最近我试图在Android中使用SiftGPU。我正在使用Linux。所以,首先我下载NDK并使用下面的代码来获得一个独立的工具链: sudo sh ./build/tools/make-standalone-toolchain.sh --verbose --platform=android-15 --install-dir=/home/YourUserName/Downloads/my-tool

    1热度

    1回答

    的我有一个函数: void Func(const int * a, const int * b, size_t size, int p, int * c) { for (size_t i = 0; i < size; ++i) c[i] = (a[i]*b[i])%p; } 执行该功能为整数的数组许多模乘法。 所有整数都是正数。 而且我需要改善它的表现。 我想到了SS

    0热度

    2回答

    The documentation I've found so far on _mm_malloc()相当稀少。特别是,我不知道如果我通过一个size参数不是align的倍数会发生什么。它是UB吗?或者它会分配align的下一个较大倍数的字节数?

    0热度

    1回答

    我自己的实现咬我回来试图优化与SSE4以下时: std::distance(byteptr, std::mismatch(byteptr, ptr + lenght, dataptr).first) 这比较byteptr和数据,并返回其中字节不匹配的索引。 我真的需要原始速度,因为我正在处理这么多的内存,RAM速度已经是一个瓶颈。在SSE4上获取和比较16个字节会提供一个速度提升,因为在时间上

    3热度

    1回答

    我试图以11位精度尾数实现快速atan2(浮点数)。atan2实现将用于图像处理。 所以用SIMD指令(impl瞄准x86(带有SSE2)& ARM(带有vpfv4 NEON))可能会更好。 现在,我使用切比雪夫多项式近似(https://jp.mathworks.com/help/fixedpoint/examples/calculate-fixed-point-arctangent.html)

    2热度

    1回答

    下面一段代码: __m128 a = _mm_setr_ps(1, 2, 3, 4); __m128 b = _mm_set1_ps(2); __m128 res = _mm_and_ps(a, b); cout << a[0] << " " << a[1] << " " << a[2] << " " << a[3] << endl; cout << b[0] << " " << b[1]

    2热度

    1回答

    我想用Eigen编写一些上证所代码,有些行为没有我。 鉴于代码: #ifndef EIGEN_DONT_VECTORIZE // Not needed with Intel C++ Compiler XE 15.0 #define EIGEN_VECTORIZE_SSE4_2 #define EIGEN_VECTORIZE_SSE4_1 #define EIGEN_VECTORIZE_SSS

    5热度

    1回答

    是否有将AVX寄存器的64位组件的高/低32位组件重新打包到SSE寄存器的内在或另一种有效方法?使用AVX2的解决方案是可以的。 到目前为止我用下面的代码,但探查说,这是对Ryzen 1800X慢: // Global constant const __m256i gHigh32Permute = _mm256_set_epi32(0, 0, 0, 0, 7, 5, 3, 1); // ..