问题标签 [avx]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
14880 浏览

c++ - 使用 __m256d 寄存器

你怎么用__m256d

假设我想在具有 3-64 位精度组件(、、和)_mm256_add_pd的简单类上使用英特尔 AVX 指令。使用它的正确方法是什么?Vector3doublexyz

由于x和是该类的成员y, _我可以用变量声明它们吗?zVector3union__m256d

那我可以去吗:

这行得通吗?还是我需要申报临时工,

编辑

我想出了这个例子,

我想现在的问题是,是否会 自动_mm256_add_pd执行加载操作,或者如果我不将我的寄存器声明为接近使用它们的地方的本地人,会不会出现问题?(我怕酒店房间/书桌抽屉类型问题)__m256d

编辑2:

我尝试__m256在我相当大的项目中添加一个寄存器,我得到了一大堆

错误 C2719:“值”:带有 __declspec(align('32')) 的形式参数将不会对齐

错误,它让我相信你不能在一个类中保留__m256寄存器,而是应该将它们声明为本地人?

0 投票
1 回答
547 浏览

c++ - 击败编译器

我正在尝试使用英特尔内在函数来击败编译器优化代码。有时我能做到,有时我做不到。

我想问题是,为什么有时我可以击败编译器,但有时却不行?使用 Intel 内在函数时,我得到了 0.006 秒的时间operator+=(相对于使用纯 C++ 时的 0.009 秒),但operator+使用内在函数的时间为 0.07 秒,而纯 C++ 只有 0.03 秒。

编辑

我为什么要这样做?VS 2012 分析器告诉我我的向量算术运算可以使用一些调整。

在此处输入图像描述

0 投票
2 回答
3018 浏览

c - 如何访问 256 位 ps 向量的组件

如何高效访问 256 位向量的元素?例如,我计算了点积

那么如何访问c中的值呢?我需要同时获得高位和低位,我是否正确理解我首先需要像这样提取 128 位部分:

然后才提取浮点数:

0 投票
0 回答
118 浏览

c - 什么时候应该在现代机器上使用预取?

可能重复:
预取示例?

在许多情况下,预取指令似乎会降低现代机器的性能,因为通常有几个不同的硬件预取单元。

是否有任何特殊情况总是有助于使用预取指令?

0 投票
2 回答
1184 浏览

c++ - __m128、__m128d、__m256 等是 C++ 中的内置类型吗?

C++ 标准区分内置类型和structclass类型。对于后者,如果语言提供了适当的运算符,则允许重载运算符,例如+,*=&,但对于内置类型则不允许。AFAIK,标准中没有提到 SSE/AVX 类型(但请纠正我),所以应该能够声明这些运算符。GCC 不允许这样做,但 ICC 允许。哪一个是正确的?

我真的很想拥有按位操作(如&=),但令人讨厌的是,GCC 不提供它们(for __m128),也不允许我声明它们。

0 投票
2 回答
1834 浏览

c - 与 __m256 和两个 __m128 的数组联合

我能有这样的工会吗

即时访问 256 位寄存器的两个 128 位部分?

编辑:我想了解这种方法对性能的影响。

0 投票
3 回答
6442 浏览

vectorization - _mm_broadcast_ss 是否比 _mm_set1_ps 快?

这是代码吗

总是比这段代码快

?

如果a定义为static const float a = ...而不是float a = ...呢?

0 投票
2 回答
10698 浏览

sse - 如何水平求和 __m256?

我想__m256使用 AVX 指令对向量的分量进行水平求和。在 SSE 我可以使用

在向量的第一个分量处得到结果,但这不能与 256 位版本的函数 ( _mm256_hadd_ps) 一起缩放。

计算__m256向量水平和的最佳方法是什么?

0 投票
1 回答
2219 浏览

xcode - 启用 AVX 时,Clang 会产生较慢的代码?

我将 Xcode 4.5.2 与“Apple LLVM Compiler 4.1”(Clang)一起使用。

我试图编译一个严重依赖于启用了 AVX 的 SSE 内在函数的代码(没有 _mm256* 函数和没有 __m256 变量)并且得到的代码比仅启用 SSE 4.2 时得到的代码要慢。

对此有什么合理的解释吗?

0 投票
2 回答
3560 浏览

c - 使用单个 AVX 内在函数反转包含双精度的 AVX 寄存器

如果我有一个 AVX 寄存器,其中有 4 个双精度数,并且我想将其反转存储在另一个寄存器中,是否可以使用单个内部命令来执行此操作?

例如:如果我在 SSE 寄存器中有 4 个浮点数,我可以使用:

我可以这样做_mm256_permute2f128_pd()吗?我认为您不能使用上述内在函数来解决每个单独的双重问题。