问题标签 [avx2]
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.
c++ - 我正在尝试使用 AVX2 重写函数并遇到问题
原始标量函数
等效的 AVX 功能
我不确定如何在最后一步将 m256i 变量转换为整数。resShift 具有右移的 m256i 值,但我必须将其转换为整数形式并从该函数返回。有什么帮助吗?
x86 - 使用 AVX2 计算 8 个长整数的最小值
我试图尝试long ints
使用AVX2
. 我是SIMD
编程的新手,我不知道从哪里开始。我没有看到任何解释如何执行min
和max
in的帖子/示例AVX2
。long ints
我知道由于限制,我不能超过 4 256 bit
,但我可以使用三个步骤来解决我的问题。我也无法弄清楚如何将已经存在的正常数据加载long int array
到vectors
for 中avx2
。
我知道这个过程背后的想法,这就是我想要实现的目标
有人可以帮我解决如何让它发挥作用。还有最后min
是单人操作,是不是就做比较好CPU
?我应该使用其他东西AVX2
吗?(我在x86
系统上)
c++ - 内联汇编+指针管理
我对在 C++ 代码中使用内联汇编非常陌生。我想要做的基本上是一种大小为 32 的指针的 memcopy。
在 C++ 中,代码通常是这样的:
我已经做了一点内联汇编,但每次我都事先知道输入选项卡和输出选项卡的大小。
所以我尝试了这个:
G++ 告诉我:
所以我尝试了这个:
我从 G++ 获得:
在每种情况下,我都试图找到没有成功的解决方案。我也体验过这个解决方案:
G++:
那个消息看起来很常见,但我不知道在这种情况下如何修复它。
我也知道我的尝试并不严格代表我用 C++ 编写的代码。
我想了解我的尝试有什么问题,以及如何尽可能接近我的 C++ 函数。
提前致谢。
gcc - 使用 asm 代码重新实现 AVX2 内部函数
问候大家。由于某些特殊原因,我们必须重新实现 AVX2 intrics,如下所示:
对应的函数是_mm256_and_si256(__m256i s1, __m256i s2)
,它是一个 AVX2 内部函数。通过谷歌搜索后,我发现了一些类似的东西,比如连接一些基本类型,比如,int
输入寄存器。但是,我仍然没有找到连接输入参数和输入寄存器以及用于 asm代码的方法。float
long
s1
s2
ymm1
ymm2
vpand
所以这里的任何人都愿意帮助我使上述示例工作吗?非常感谢你!
assembly - _mm_i32gather_ps 有问题
我正在使用 AVX 指令手动优化一些代码。在某些时候,我想使用 _mm_i32gather_ps() 从(未对齐的)数组中收集一些浮点数,因为它们位于随机位置(不连续)。
尽管如此,我没有得到我期望的值。我检查了索引(这是正确的),即使我对索引中的值进行硬编码,比如
我没有得到预期值。
据我所知,数组不需要对齐,也不需要对数组的访问。有谁看到我可能做错了什么?
谢谢
visual-studio - AVX2 采集说明
当我使用 Visual Studio 通过编译器内置生成 AVX2 收集指令时,它不会插入 VXORPS 指令来打破写入 YMM 寄存器的先前指令与收集之间的依赖关系。
然而,英特尔编译器确实做到了这一点,最终结果是由于数据依赖性被破坏而显着提高了性能。
由于我不想进入的原因,我不能使用英特尔编译器,那么有什么方法可以“强制”Visual Studio 插入该 VXORPS 指令?
我已经尝试创建一个中间 __m256i 并在其上调用 VXORPS,但这不起作用。
visual-studio - 如何在 MASM/VS15 中使用 AVX2?
问题:我写了这样的东西(在proc内部):
和 masminvalid instruction operands
第一次和syntax error : ymm0
第二次抱怨。我正在使用 VS15 社区版为 x64 编译。
c++ - 使用 SSE 和 AVX 查找矩阵中的最大元素及其列和行索引
我需要找到一维矩阵中的最大元素及其列和行索引。
我使用一维矩阵,所以首先需要找到最大元素的索引,然后很容易得到行和列。
我的问题是我无法获得该索引。
我有一个可以找到最大元素并使用 SSE 的工作函数,它是:
而且我还有一个使用 AVX 的非工作功能:
任何人都可以帮助我实际找到最大元素的索引并使我的 AVX 版本正常工作吗?
c++ - 将 SSE 矩阵向量乘法代码转换为 AVX
我正在尝试将我的 SSE 函数转换为 AVX。该函数执行向量矩阵乘法,这是我的工作 SSE 代码:
以下是我对 AVX 的看法:
但是,AVX 代码会崩溃 ( Access violation reading location 0xFFFFFFFFFFFFFFFF
)。
谁能帮我让我的 AVX 功能正常工作?
PS:我在函数中传递的矩阵和向量的大小始终是 8 的倍数。此外,我传递给我的 SSE 函数的数组是 16 位对齐的 ( __declspec(align(16))float* = generate_matrix(256);
),我传递给我的 AVX 函数的数组是 32 位的对齐(__declspec(align(32))float* = generate_matrix(256);
);