avx相关内容

FLT_EPSILON的n次方根器时,SSE / AVX

我试图将其转换发现的n次方根用C从以下链接双重值的函数 HTTP://rosetta$c$c.org/wiki/Nth_root#C 找到8彩车的n次方根一次使用AVX。 这code部分采用DBL_EPSILON * 10。然而,当我将它转换为使用float与AVX我必须使用FLT_EPSILON * 1000或code挂起,不收敛。当我打印出来FLT_EPSILON我看到它是为了1E-7。 ..
发布时间:2016-08-24 14:43:36 C/C++

如何使用AVX / SIMD嵌套循环和+ =格式?

我写一个网页排名程序。我写更新排名的方法。我已经成功地得到它与嵌套的for循环,也是一个线程版本的工作。不过,我想改用SIMD / AVX。 这是code,我想变成一个SIMD / AVX的实现。 的#define IDX(A,B)((A * NPAGES)+ B)//二维矩阵索引 用于(为size_t我= 0; I< NPAGES,我++){ 临时[I] ​​= 0.0; ..
发布时间:2016-08-24 13:35:31 C/C++

反向含双打使用单一AVX内在一个AVX寄存器

如果我在他们4双打的AVX寄存器,我想这个反向存储在另一个寄存器中,是否有可能用一个固有的命令来做到这一点? 例如:如果我在一个SSE寄存器有4个浮筒,我可以使用: _mm_shuffle_ps(A,A,_MM_SHUFFLE(0,1,2,3)); 我能做到这一点使用,也许 _mm256_permute2f128_pd()?我不认为你可以使用上述内部解决每个人的两倍。 解决方案 您确 ..
发布时间:2016-08-23 10:56:21 C/C++

WebSocket的数据揭露/多字节XOR

的WebSocket规范定义揭露数据 J = MOD 4 转化八位-I =原八位-I XOR屏蔽键八位-J ,其中掩模是4字节长,揭露具有每字节被应用 有没有办法更有效地做到这一点,而不是仅仅循环字节? 服务器运行code可以假定为Haswell的CPU,操作系统是Linux的内核> 3.2,所以SSE等都是present。编码是用C做,但如果需要,我可以做ASM为好。 我倒是想看看了自 ..
发布时间:2016-08-23 10:52:46 C/C++

有不同的优化(平原,SSE,AVX)在同一个可执行文件C / C ++

我发展优化为我的3D计算,我现在有: 一个“平原”使用标准C语言库版本, 的 SSE 优化的版本,编译使用preprocessor ​​的#define USE_SSE , 的 AVX 优化的版本,编译使用preprocessor ​​的#define USE_AVX 是否有可能在3个版本之间切换,而无需编写不同的可执行文件(例如,具有不同的库文件和动态加载的“正确”的,不知道是不 ..
发布时间:2016-08-23 10:05:41 C/C++开发

上证所装载到整数__m128

什么是海湾合作委员会的内在装载4 整数到 __ M128 和8个整数为 __m256 (对齐/不对齐的)?什么无符号整数? 解决方案 使用Intel的SSE intrnisics,你要找的是: _mm_load_si128() _mm_loadu_si128() _mm256_load_si256() _mm256_loadu_si256() 文件: http:// ..
发布时间:2016-08-22 15:25:53 C/C++

AVX转换的64位整数64位浮点

我想转换4装64位整数4包装使用AVX 64位的花车。我已经试过类似: int_64t 1!=(*的int64_t)_mm_malloc(256,32); LS [0] = A; // ... LS [3] = D组;__mm256i包装= _mm256_load_si256((__ m256i常量*)LS); 这将在调试器中显示:(GDB)印刷包装 $ 4 = {1234,5678,90 ..
发布时间:2016-08-22 14:32:01 C/C++开发

处理零的_mm256_rsqrt_ps()

由于 _mm256_sqrt_ps()是比较慢的,而且我生成的值将立即与截断_mm256_floor_ps(),环顾四周,似乎这样做的: _mm256_mul_ps(_mm256_rsqrt_ps(eightFloats) eightFloats); 是去表现,额外位的方式,避免了流水线停顿。 不幸的是,零值,当然,我得到一个崩溃计算 1 /开方(0)。什么是解 ..
发布时间:2016-08-18 21:44:48 C/C++

如何执行_mm256_movemask_epi8(VPMOVMSKB)逆?

内在的: INT面膜= _mm256_movemask_epi8(__ m256i S1) 创建了一个面具,对应于 S1 的每个字节的最高位显著的 32 位。操作使用位操作面膜后( BMI2 )后,我想执行 _mm256_movemask_epi8 ,即倒数,创建一个 __ m256i 载体包含的对应位的每个字节的最高显著位 uint32_t的面具。 什么是做到这一点的最好方法是什么? 编 ..
发布时间:2016-08-18 14:23:57 C/C++

减少与SSE / AVX的OpenMP

我想要做的使用OpenMP和SIMD阵列上的减少。我读了OpenMP中减少等同于: 内嵌浮动sum_scalar_openmp2(常量浮动[],常量为size_t N){ 浮动金额= 0.0; OMP的#pragma并行 { 浮sum_private = 0.0; OMP的#pragma为平行NOWAIT 的for(int ..
发布时间:2016-08-18 14:19:21 C/C++

在零转移在AVX2 8位移位操作

有什么办法重建 _mm_slli_si128 指令AVX2转向一个 __ mm256i 通过X字节注册? 的 _mm256_slli_si256 似乎只是为了执行两个 _mm_slli_si128 在[127:0]和[255:128 ]。 左移应该在工作 __ m256i 是这样的: [1,2,3,4,5,6,7,8,9,10,11,12,...,32] - GT; [2,3,4,5, ..
发布时间:2016-08-18 13:18:37 C/C++

现在缺少/次优的这个执行的memcpy?

我已经成为兴趣写一个的memcpy()作为教育工作。我不会写什么,我也没想到的整体论,但这里的 一些家伙的实施: __ forceinline //因为通常尺寸已知,内联后编译器可以优化掉大部分无用代码 无效* myMemcpy(字符* Dst的,为const char *的Src,为size_t大小) { 无效*开始= Dst的; 对于(;尺寸> = ..
发布时间:2016-08-17 22:19:16 C/C++

在一个对象文件code对齐影响的函数的另一个对象文件中的表现

我熟悉的数据校准和性能,但我相当新的调整code。我在X86-64组装开始编程最近与NASM,并使用code调整已经比较性能。至于我可以告诉NASM插入 NOP 指令来实现code对齐。 下面是一个功能我一直在一个Ivy Bridge的系统上尝试这种 无效黑社会(浮点* X,浮动* Y,浮动* Z,整数N,INT重复){ 浮K = 3.14159f; INT(INT R = 0 ..
发布时间:2016-07-18 21:31:23 .NET Framework

新的AVX指令语法

我曾与一些英特尔intrinsincs编写过C code。我SSSE3标志先用AVX,然后进行编译后,我得到了两个完全不同的装配codeS。例如: AVX: vpunpckhbw%XMM0,xmm1中的%,%XMM2 SSSE3: MOVDQA%XMM0,%XMM2 punpckhbw%将xmm1,%XMM2 很明显, vpunpckhbw 就是 punpckhbw 但使用AVX ..
发布时间:2016-07-18 21:19:06 .NET Framework

比较两个16字节的值最多可使用SSE 4.2平等?

我有一个这样的结构: 结构{ uint32_t的一个; uint16_t B: uint16_t℃; uint16_t D组; uint8_t有ê; }等; 和我想比较两个相等上述结构中,尽可能以最快的方式。我看着英特尔内部函数向导,但无法找到一个比较整数,可用的选项主要是双打和单浮点矢量输入。 可能有人请告知最好的办法?我可以一个工会添加到我的结构, ..
发布时间:2016-07-18 20:59:57 C/C++开发