intrinsics

    2热度

    1回答

    我想为Xeon Phi(60核心)编写基准。在我的程序中,我使用OpenMP标准和Intel内部函数。我实现了比标量算法快230倍以下算法的并行版本(5点模板计算)。我想添加SIMD到并行代码。我的表现有问题。当我调用_m512_store_pd()时,计算性能下降,SIMD并行版本比没有SIMD的版本慢。问题是什么?我该怎么做才能获得更好的表现? for(int i=start; i<stop;

    2热度

    1回答

    假设我有8个SSE寄存器,枚举为r0,r1,r2,...,r7,并且每个都包含8个16位整数。我想创建一个新的寄存器,其中包含8个寄存器中的第i个元素,从r0开始,到r7。换句话说,我想获得一个寄存器具有以下内容: r0[i],r1[i],r2[i],r3[i],r4[i],r5[i],r6[i],r7[i] 会如何,使用SSE(或AVX)做些什么呢? 谢谢! 请注意,索引i不是常数,而是在运行时

    0热度

    1回答

    我需要计算CRC,以便形成一个INTEL机器上的散列函数,并具有以下两个固有功能上来: _mm_crc32_u32 _mm_crc32_u64 在我的项目,我处理32位变量和我的困境是移位和或运算每两个变量(因此产生一个64位的变量),然后使用64位的CRC或运行之间在两个32-bi的每一个上都有32位CRC t变量。 我无法在任何地方找到这些功能中每一个所用的周期数量,并且从英特尔功能规格中不清

    4热度

    2回答

    我已经写和调试一些AVX代码G ++,现在我试图让它与MSVC的工作,但我不断收到 错误LNK2019:解析外部符号__mm256_setr_epi64x中引用功能 “私人:工会__m256i __thiscall avx_matrix :: avx_bit_mask(无符号整数)常量”(avx_bit_mask @ avx_matrix @@ ABE AT__m256i @@我@ Z?) 的代码

    2热度

    1回答

    我正在学习AVX内在用法,问题是如何优化下面的代码。我将它移植到内部工作的方式,但我感觉它变得更容易和更高效。 C++伪代码版本 float min_value = FLOAT_MAX; float result_p = 0; for loop { float u = .... if(u > 0.0f || u < 1.0f) continue;

    2热度

    2回答

    我有一个32位RGBA图像缓冲区。让我们假设它是,比如1920x1080 - 典型的从左到右,从上到下的RAW缓冲区。 这是我想很快做真的是什么:创建源于这一个代码缓冲了两个新的缓冲区... “补”缓冲...... RGB值匹配原始缓冲区。 Alpha值将变为不透明(0xff) “KEY”Buffer ...每个RGB值都与原始缓冲区的Alpha值匹配。 α值将是不透明的(0xff的) 我(慢)的

    0热度

    1回答

    我们正在尝试制作不同操作的矢量内在库,其中一个库获取数字的绝对值。但是,我的教授只限于double。 我是相当新的x86的内部函数指令集,所以我希望有人能赐教。 这是我到目前为止有: void vectorAbs(double *x, double *y, unsigned int N); int main() { double x[] = { -1, -2, -3, -4, -5,

    3热度

    1回答

    假设我有一个128寄存器,它包含一些浮点数[x1,x2,x3,x4],另一个保存[y1,y2,y3,y4]。 获得像[x1,y1,x2,y2]这样的东西的最好方法是什么? 我想我可以多次移动寄存器,使用临时对象,然后在多个步骤中合并它们,但是我想知道是否缺少一些方便的指令可以让我的生活更轻松。我认为这是一件很平常的事情,所以我想知道这里最好的做法是什么。 谢谢!

    4热度

    2回答

    假设我们有一个std::vector,或任何其他序列容器(有时它将是一个双流),其中存储uint64_t元素。 现在,让我们将这个向量看作是连续位的一个序列size() * 64。我需要找到由给定的[begin, end)范围内的位组成的单词,因为end - begin <= 64所以它适合一个单词。 我现在所拥有的解决方案找到了两个单词,它们的各个部分将形成结果,并分别掩盖并组合它们。因为我需要

    2热度

    3回答

    我正在创建一个简单的矩阵乘法程序,在Intel Xeon Phi体系结构上运行。 经过多次尝试自动矢量化尝试获得更好的性能后,我不得不使用英特尔内部函数。 到目前为止,矩阵大小是由源代码中的#define给出的,但是当我在运行时尝试给出它时,性能会有很大的下降。 的源代码是下面的: #include <stdio.h> #include <stdlib.h> #include <time.h>