avx 相关问题

Advanced Vector Extensions(AVX)是针对Intel和AMD微处理器的x86指令集架构的扩展。

CPU 上的 Pytorch,不支持 AVX

我目前正在开发一个使用 torch、torchvision 和 torchaudio 包的 Python 项目。在我的本地计算机上,一切工作正常,但在我将项目部署到 Windows 上之后...

回答 1 投票 0

Intel AVX2中的异或指令“VPXORD”、“VXORPS”和“VXORPD”有什么区别

我看到在AVX2指令集中,Intel用不同的指令区分了整数、双精度和浮点的异或运算。对于整数,有“VPXORD”,对于双精度“VXORPD”,对于浮点数“VXO...

回答 1 投票 0

是否有像 scatter 这样但在寄存器之间的 SIMD 内在函数?

据我所知,如果你想做的话,有_mm_shuffle_epi8 dst[i] = a[b[i]] 但我的问题是是否有一个内在的东西 dst[b[i]] = a[i] 我希望它能够处理 8 位的 16 个元素 (

回答 1 投票 0

从位位置整数数组设置/获取 __m256i 向量的 1 位

设置位: 给定一个数组 int inds[N],其中每个 inds[i] 是 [0, 255] 范围内的 1 位位置(并且所有 inds[i] 均已排序且唯一),我需要将 __m256i 的相应位设置为1. 有没有...

回答 1 投票 0

YMM寄存器之间的逻辑移位

我是否可以将 2048 位数字加载到 8 个 AVX ymm 寄存器中,并在所有这些寄存器之间左右移动位? 我每次只需要移动一位。 我尝试过找到准确的...

回答 1 投票 0

如何在AVX2中对齐/旋转256位向量?

我正在使用 AVX2 内在函数,并希望获得以下内容: 输入:[1,2,3,4,5,6,7,8] 输出:[8,1,2,3,4,5,6,7] 以下适用于 128 位向量: 让 vec1 = _mm_set_epi32(1,2,3,4)...

回答 1 投票 0

使用 AVX/SIMD 查找第一次出现的 16 位值的索引

我正在尝试返回 256 位内第一次出现 16 位值的索引。 我知道如何对 8 位执行此操作,使用: int _mm256_movemask_epi8 (__m256i a) 不过好像没有……

回答 1 投票 0

快速 __m256i 位操作 - 查找或清除最高或最低设置位

我正在寻找快速代码来在 __m256i 上执行以下操作,并且希望得到帮助: 清除最低有效位(设置的最低有效位) 清除最高有效位(最

回答 1 投票 0

一些快速 __m256i 位操作 - 查找或清除最高或最低设置位

我正在寻找快速代码来在 __m256i 上执行以下操作,并且希望得到帮助: 清除最低有效位(设置的最低有效位) 清除最高有效位(最

回答 1 投票 0

一些快速的 __m256i 位运算

我正在寻找快速代码来在 __m256i 上执行以下操作,并且希望得到帮助: 清除最低有效位(设置的最低有效位) 清除最高有效位(最

回答 1 投票 0

减少 XMM/YMM 中的字节并与零比较

我有一堆无符号单字节计数器,我想同时将它们全部递减,如果其中任何一个达到0,则设置进位位。如果进位位被设置,我想重置c...

回答 1 投票 0

_mm256_setr_epi64x 在使用 /arch:AVX 构建的 x86 msvc v143 上导致错误结果

EDIT2:我还减少了案例并改进了测试代码 我已经思考这个问题一周了,这可能是一个编译器错误,但我不能完全确定。 我正在使用 MSVC - ...

回答 1 投票 0

如何使用_mm256_shuffle_epi8对元素进行排序

我尝试以下代码。我知道随机播放功能有一些车道限制。但我不知道如何正确处理。有人有想法吗? #包括 int main() { ...

回答 1 投票 0

Tensorflow 警告:TensorFlow 不是使用与计算能力 8.6 兼容的 CUDA 内核二进制文件构建的

我有一个不支持 AVX 的旧版 Intel Core i7 950 CPU、一个具有计算能力 8.6 的较新 NVIDIA RTX 3060 Ti GPU 和 Windows 10 操作系统。尽管默认的 Tensorflow 分布需要 AVX

回答 1 投票 0

为什么 Google Cloud Run 在扩展后不执行启动探测?

我编写了一个 Rust 服务器,它在 Google Cloud Run 上的 Docker 容器内运行。服务器接收不频繁的请求并立即以 200 状态代码确认进行响应。它是...

回答 1 投票 0

x86-64 SIMD 机制“比较”8 位无符号整数,给出 +1 / 0 / -1 结果的向量?

假设我有两个无符号整数(8 位)打包寄存器 a 和 b。我想比较它们并返回 +1(a > b)、0(a=b)或 -1(a < b. Alternatively, distance also works (i.e.

回答 2 投票 0

x86-64 SIMD 机制“比较”整数?

假设我有两个无符号整数(8 位)打包寄存器 a 和 b。我想比较它们并返回 +1(a > b)、0(a=b)或 -1(a < b. Alternatively, distance also works (i.e.

回答 1 投票 0

AVX2:将 4 个复数值与 4 个双精度值相乘和求和的最佳方法是什么?

xnec2c 项目中电磁模拟的一大热点就是采用这种形式,并且在整个计算过程中以各种方式重复相同的形式: *dst += (*a1) * (*a2) + (*b1) * (*b2) + (*c1) *...

回答 1 投票 0

如何让Rust编译器生成AVX2指令?

我正在尝试编写一个简单的例程来使用 AVX2 指令。 例如,给出同一函数的以下两个版本: fn mul1(xs: &[i32], ys: &[i32]) -> Vec 我正在尝试编写一个简单的例程来使用 AVX2 指令。 作为示例,给出同一函数的以下两个版本: fn mul1(xs: &[i32], ys: &[i32]) -> Vec<i32> { // Assuming xs.len() == ys.len() xs.iter().zip(ys.iter()).map(|(x, y)| x * y).collect() } fn mul2(xs: &[i32], ys: &[i32]) -> Vec<i32> { const CHUNK_SIZE: usize = 8; // Assuming xs.len() == ys.len() and xs.len() % CHUNK_SIZE == 0 let chunks = xs.chunks_exact(CHUNK_SIZE).zip(ys.chunks_exact(CHUNK_SIZE)); let result_chunks = chunks.map(|(c1, c2)| c1.into_iter().zip(c2.into_iter()).map(|(x, y)| x * y)); result_chunks.flatten().collect() } 以及相关的汇编,我并没有真正看到第二个中进行了广泛的乘法。 我做错了什么? 我相信原因可以归结为flatten()。 第一个版本始终可以准确且精确地估计它将产生的物品(xs和ys的长度中较小的一个)。用技术术语来说,它意味着TrustedLen。 collect() 中的专业化会检测到这一点,并提前分配所有空间,而无需检查每个项目是否需要增长集合。因此,LLVM 可以对函数进行向量化,因为没有增长检查。 但是,flatten() 不能是 TrustedLen,因为每个项目的尺寸可能不同。从技术上讲,在这种情况下可以,因为 chunks_exact() 产生相等的块,但它没有实现。因此 collect() 需要插入增长检查,因此 LLVM 无法向量化该函数。

回答 1 投票 0

为什么使用 AVX ymm(m256) 指令比 xmm(m128) 慢约 4 倍

我编写了将arr1*arr2相乘并将结果保存到arr3的程序。 伪代码: arr3[i]=arr1[i]*arr2[i] 我想使用 AVX 指令。我有 m128 和 m256 指令的汇编代码(

回答 1 投票 0

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.