simd 相关问题

单指令,多数据(SIMD)是使每个指令在小块或数据元素矢量上操作的概念。 CPU矢量指令集包括:x86 SSE和AVX,ARM NEON和PowerPC AltiVec。为了有效地使用SIMD指令,数据需要采用数组结构形式,并且应该在更长的流中发生。天真的“SIMD优化”代码通常比原始代码运行速度慢。

为什么对于 RGB 到灰度,SIMD 只提高一点点性能,SIMD 乘法但向量元素的标量加法?

我正在学习如何使用SIMD进行图像处理。但是,我想知道为什么使用SIMD后性能没有太大改善。 图片尺寸:3840*2160 图片格式:PixelFormat。

回答 1 投票 0

C++ 到 C# 内存对齐问题

在 C# 中,我将 RGB 图像数据存储在 byte[] 数组 ([r, g, b, r, g, b, ...]) 中,并尝试将其转换为灰度。我正在 C#(使用指针)和...

回答 1 投票 0

sse4.2 _mm_cmpistrm/_mm_cmpesrm 指令得到错误结果

我想使用下面的代码来计算数组a和数组b的交集: #包括 #包括 #包括 无效测试(uint16_t *a,uint16_t *b...

回答 1 投票 0

AVX(2)/SIMD 方式获取/设置(至 1)256 位寄存器中的单个位

当前但hacky的方法是这样的: __m256i 位集(__m256i 源,uint8_t 索引){ uint8_t pos_in_64 = 索引 % 64; uint8_t位置=索引/64; uint64_t 位掩码 = 1ULL << pos_i...

回答 1 投票 0

c++ 如何编写编译器可以轻松针对 SIMD 进行优化的代码?

我正在使用 Visual Studio 2008,在项目设置中我看到“激活扩展指令集”选项,我可以将其设置为 None、SSE 或 SSE2 所以编译器会尝试批处理...

回答 3 投票 0

了解 Clang 的 SIMD 优化,用于将 float 乘以 int 循环计数器

给定以下函数 void foo(float* 结果, int 大小, float y, float delta) { 对于 (int t = 0; t < size; ++t) { result[t] = y + delta * t; } } Clang with -O2 generates the

回答 1 投票 0

除了 gcc 之外,还有哪些编译器可以对代码进行向量化?

GCC 可以自动“向量化循环”。 是否还有其他广泛可用的编译器可以执行相同的操作?

回答 9 投票 0

SIMD 中将模式与位掩码进行比较的最快算法是什么?

我想在SIMD中优化以下代码 拍:[1,2,3,4] 数据:[1,1,3,3] mask: [1, 0, 1, 1] # 1表示相等,0表示可选/不关心 结果:[1,1,1,0] 天真的算法...

回答 1 投票 0

gcc 11.4 openmp 似乎没有生成 AVX2 指令。根据之前的 stackoverflow,我做错了什么?

我在 popos 上使用 gcc 11.4 我尝试过的命令: g++ -fopenmp-simd -O2 -S simd_reduction.cpp g++ -fopenmp-simd -O2 -mavx2 -march=native -S simd_reduction.cpp 代码: #包括 佛罗里达...

回答 1 投票 0

使用 Vector API 优化 Java 中 int16 向量点积的计算

TL;DR:使用 Java 的 Vector API 优化 16 位整数数组乘法而不溢出。 我正在尝试优化应用激活函数和计算的性能关键循环...

回答 1 投票 0

我如何优化计算表现出或多或少随机访问的大型双线性函数?

我有一个函数,它接受两个数组并用两个数组坐标的双线性组合填充第三个数组。该函数是 8 维实向量的克利福德乘积

回答 1 投票 0

模拟 AVX512 VPCOMPRESSB 字节打包,无需 AVX512_VBMI2

我已经用 0-63 的字节整数数组填充了 zmm 寄存器。 这些数字充当矩阵的索引。 非零元素表示矩阵中包含数据的行。 并非所有行

回答 1 投票 0

模拟 AVX512 VPCOMPESSB 字节打包,无需 AVX512_VBMI2

我已经用 0-63 的字节整数数组填充了 zmm 寄存器。 这些数字充当矩阵的索引。 非零元素表示矩阵中包含数据的行。 并非所有行

回答 1 投票 0

在 Rust 中使用 SIMD 执行矩阵乘积时出现访问冲突

我正在为我的 opengl 项目制作自己的 linalg 库,并且正在考虑使用 simd 加速 matmul。 最小可重现示例: 使用 std::arch::x86_64::*; #[导出(调试、克隆、复制)] 圣...

回答 1 投票 0

在 Rust 中使用 SIMD 执行矩阵生成时出现访问冲突

我正在为我的 opengl 项目制作自己的 linalg 库,并且正在考虑使用 simd 加速 matmul。 最小可重现示例: 使用 std::arch::x86_64::*; #[导出(调试、克隆、复制)] 圣...

回答 1 投票 0

将 SSE/AVX 寄存器左移和右移 32 位,同时移入零

我想将 SSE/AVX 寄存器左移或右移 32 位的倍数,同时移入零。 让我更准确地说明我感兴趣的轮班。对于 SSE,我想做以下轮班......

回答 3 投票 0

Rust-SIMD 你好世界

我找不到 Rust-SIMD 的工作示例。我能找到的最接近的是这个。调整后变为: #![功能(核心)] #![功能(portable_simd)] 使用 std::simd::f32x4; fn 主() { ...

回答 2 投票 0

我如何知道矢量函数 (SIMD) 是否真的可以同时处理多个对象?

我试图了解我的编译器是否将我的向量表示法解释为单个对象(相当于 for 循环)或一次处理多个数据。 有谁知道我该怎么做?我有...

回答 1 投票 0

Vector512中Avx2.MoveMask的替代方法是什么<T>

SIMDKR字符串匹配算法使用_mm256_movemask_epi8将Vector256转换为int; 我想在 C# 中实现这个 clang 算法,使用 Vector512 而不是 256,但我找不到满足的...

回答 1 投票 0

是否有更好的方法来编写 SIMD 代码来反转变换矩阵?

我正在为光线追踪器项目编写一个数学库,因此我试图使我的繁重操作(如矩阵求逆)更加优化。经过一些研究后,我发现了这个反转的技巧......

回答 1 投票 0

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