avx 相关问题

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

一些快速 __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

SSE 矢量与 Epsilon 的比较

我正在编写需要比较两个 _mm256 向量是否相等的软件。但是,我希望误差范围为 +/- 0.00001。例如,3.00001 应被视为等于 3.00002。难道是……

回答 1 投票 0

AVX 中缺少字节粒度屏蔽存储

我正在将代码从 SSE 迁移到 AVX。该代码使用_mm_maskmoveu_si128,它根据掩码有条件地存储16个字节。 AVX 等效项是 32 字节的 _mm256_maskmoveu_si256,但是这个

回答 1 投票 0

AVX 缺少蒙面商店

我正在将代码从 SSE 迁移到 AVX。该代码使用_mm_maskmoveu_si128,它根据掩码有条件地存储16个字节。 AVX 等效项是 32 字节的 _mm256_maskmoveu_si256,但是这个

回答 1 投票 0

C simd AVX1 m256 水平最大最小标准化

我自己弄清楚了,没有找到avx1的任何答案(没有avx2)。 因此,这是未来寻求答案的人的答案。 8-float m256 max,然后可用于标准化,因为 _max 将是...

回答 1 投票 0

如何将位对从 uint64_t 解压缩为 __m256i?

考虑 uint64_t,其中每个连续的 2 位都是一个数字:b00 代表 0,b01 代表 1,b11 代表 -1,b10 未使用(从未发生过,假设没有对其进行处理)。 如何将这样的uint64_t解压成_...

回答 1 投票 0

如何通过变量进行 AVX shuffle

我想通过指令实现固定的查找表搜索。 指令 _mm_shuffle_epi32(table, index) 适合我的要求。但它需要一个即时号码。 如果我想使用类似的

回答 1 投票 0

gcc c++ 协程运行 avx SIMD 代码,但会导致 SIGSEGV

c++ 协程运行 avx SIMD 代码,但会导致 AVX2 和 AVX512 出现 SIGSEGV #定义AVX512 0 #定义 AVX2 1 #定义SSE 0 HelloCoroutine hello(int& index, int id, int group_size) { 无符号 r...

回答 1 投票 0

c++ 协程运行 avx SIMD 代码,但导致 SIGSEGV

c++ 协程运行 avx SIMD 代码,但会导致 AVX2 和 AVX512 出现 SIGSEGV #定义AVX512 0 #定义 AVX2 1 #定义SSE 0 HelloCoroutine hello(int& index, int id, int group_size) { 无符号 r...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.