simd 相关问题

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

在同一个 SIMD 寄存器中连续添加值

我正在尝试将其转换为 AVX2: // 并行数组 int16_t* 数字 = ... int16_t* 容量 = ... int** 数据 = ... int* 自由指针 = ... 对于 (int i = 0; i < n; i++) { if (Nums[i] == 0)...

回答 1 投票 0

Visual Studio 无法识别 __AVX2__ 或 __AVX__

我正在用 C++ 实现一个简单的 SIMD 包装器。 为了使其跨平台,我使用 CMake 通过 Visual Studio 设置项目 我添加了 /Arch:AVX2,但 Visual Studio 无法识别 __AVX2__ ...

回答 1 投票 0

Avx2 内在函数不使用所有可用的寄存器。 .NET 8

我使用 SIMD 优化了某些算法,使得它们与 L1 缓存相比具有延迟限制。由于只有 C# 编译器知道的原因, said 莫名其妙地发出只使用 ym 的代码...

回答 1 投票 0

了解 simd sum 实现 x86 的吞吐量

我在asm中有以下循环: .LBB5_5: vaddpd ymm0, ymm0, ymmword, ptr, [rdi, +, 8*rcx] vaddpd ymm1, ymm1, ymmword, ptr, [rdi, +, 8*rcx, +, 32] vaddpd ymm2, ymm2, ymmword, ptr, [rdi, +, 8...

回答 1 投票 0

打印 __m128i 变量

我正在尝试学习使用内在函数进行编码,下面是一个执行加法的代码 使用的编译器:icc #包括 #包括 int main() { __m128i a =

回答 4 投票 0

如何将使用 Math.round 和整数值 FP 双精度的余数的代码调整为使用 SIMD 指令的 Java 代码?

我正在尝试调整此java代码以与SIMD指令兼容。 int[] arr1 = {50002, 51000, 52040, 53078, 54065, 55004, 56077, 57073, 58020, 59000, 60095, 61046, 62051, 63...

回答 1 投票 0

在 Rust 中从 exe 中提取图标?

我有一个exe的路径。 如何获取其中包含的图像的 Vec>? 我可以使用特定于 Windows 的 API。 我也在使用 Bevy,所以数学结构是首选......

回答 1 投票 0

AVX512 中 _mm256_sign_epi8 的等效函数

我正在尝试编写 AVX512 代码。在进行相同的工作时,试图在 AVX512 中寻找类似于 _mm256_sign_epi8 的函数,但无法找到等效的函数。这真的是你...

回答 1 投票 0

在字节数组上,4 个字节的点积组与 4 个小常量(有效地使用 SIMD)?

我有一个特殊的要求需要有效地满足。 (SIMD,也许?) src 是一个字节数组。数组中每组 4 个字节需要处理为: 乘以...的低半字节

回答 1 投票 0

使用 SSE 和 NEON 进行外环矢量化

我想在 ARM NEON 和 SSE 上对以下循环进行矢量化: 对于 (int i = 0; i < n; ++i) { b[i][0] = 0.0; for (int j = 1; j < n; ++j) { b[i][j] = b[i][j - 1] + a[i][j]; } } This

回答 2 投票 0

使用AVX2是否可以实现对字数组上LZCNT的更快处理?

我需要使用 LZCNT 进行反向位扫描,字数组:16 位。 在 Intel 最新一代处理器上,LZCNT 的吞吐量为每个时钟执行 1 次。 AMD Ryzen 的吞吐量似乎...

回答 2 投票 0

用SSE指令打点产品性能:DPPS值得使用吗?

通过 SSE4.1 dpps 或使用一系列乘法来计算两个短(4 元素)向量的点积是否更快 /shufps/addps 来自 SSE 1 的指令? (对于大向量,c...

回答 1 投票 0

SIMD 性能看起来不太对劲

我一直在尝试改进本地计算机上基本循环的性能。总而言之,我有 2 个大的 float32 切片,并且希望获得将它们相乘的最佳改进...

回答 1 投票 0

simd 找到第一个大于 x 的元素

我正在学习在c++中使用SIMD,这是我尝试实现“查找大于或等于X的第一个元素”的SIMD版本。 我的问题: 可以替换reinterpret_cast吗

回答 1 投票 0

装配中的灰度滤镜不适用于较小的图像

我在汇编中编写的灰度滤镜有问题 - 较大图像上的结果很好,但是当我尝试在较小图像(例如 5x1 位图)上测试它时,而不是

回答 1 投票 0

为什么 GCC 生成有条件执行 SIMD 实现的代码?

以下代码生成使用 -O3 编译时在 GCC 12.3 中有条件执行 SIMD 的程序集。为了完整起见,代码始终在 GCC 13.2 中执行 SIMD,而从不在 cla...

回答 1 投票 0

为什么不能在 std::span 上对这个循环进行 clang 向量化,将结果写入 std::array ?

为什么 clang 17.0.1 不会对以下函数中的循环进行矢量化: 无效适应(std::span信号) { F true_val = signal.back(); F y = dot_prod(&信号[...

回答 1 投票 0

ARM64 ASIMD 内在函数将 uint8_t* 加载到 uint16x8(x3) 中?

我正在寻找一种将 8 位源数组 (uint8_t*) 中的元素加载到数据格式为 uint16x8_t 或更好的 uint16x8x3_t 的 AArch64 NEON / ASIMD 寄存器中的方法。所以基本上,每个字节......

回答 1 投票 0

如何用 SIMD 向量最佳地填充多个数组?

基本上,我有一个向量数组,我想将其“拆分”为多个具有向量值的数组,但我正在努力寻找最佳方法来执行此操作,因为这是为了性能要求...

回答 1 投票 0

有ARM Neon Gather指令吗?

有ARM Neon SIMD Gather指令吗? 我正在寻找与以下 Intel Intrinsic 指令等效的指令: _mm_i32gather_ps(blob, 索引, 4); 我可以找到相关说明,例如...

回答 1 投票 0

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