
VectorTraits
文章平均质量分 96
zyl910
这个作者很懒,什么都没留下…
展开
-
[C#] 对24位图像进行水平翻转(FlipX)的跨平台SIMD硬件加速向量算法-第2部分:使用YShuffleX2Kernel优化程序
在本主题的 上一篇文章 里,给大家讲解了24位图像水平翻转(FlipX)算法。但该文章主要是为了介绍 YShuffleX3Kernel 的使用,该算法性能并不是最优的。于是本文将介绍如何使用 YShuffleX2Kernel 来优化程序。而且Imageshop在留言区给了一份C语言的、基于Sse系列指令集实现的代码,正好一起对比一下。原创 2025-03-16 18:18:20 · 693 阅读 · 0 评论 -
发布 VectorTraits v3.1(支持 .NET 9.0,支持 原生AOT)
VectorTraits已更新至 v3.1版。支持 .NET 9.0,支持 原生AOT。原创 2025-01-27 00:35:38 · 1678 阅读 · 0 评论 -
[C#] 复数乘法的跨平台SIMD硬件加速向量算法(不仅支持X86的Sse、Avx、Avx512,还支持Arm的AdvSimd)
将复数乘法改造为SIMD向量算法,是稍微有一些的难度的。首个难点是需要重新调整元素的位置,才能满足复数乘法公式。而“调整元素的位置”与内存中数据布局有关,不同办法的性能不同。还需考虑优化内存访问等细节。最近知乎有个帖子讨论了该话题,且 hez2010 给出了修正后的基于Avx指令集 HorizontalAdd(水平加法)的向量算法。于是我来说说基于 Shuffle(换位)的向量算法吧。且这些算法是跨平台的原创 2024-12-28 01:05:00 · 1317 阅读 · 0 评论 -
[C#] 24位图像水平翻转的跨平台SIMD硬件加速向量算法的关键——YShuffleX3Kernel源码解读(如Avx2解决shuffle的跨lane问题、Avx512优化等)
在上一篇文章里,给大家讲解了24位图像水平翻转(FlipX)算法,其中用到了一个关键方法——YShuffleX3Kernel。一些读者对它背后的原理感兴趣——为什么它在跨平台时运行也能获得SIMD硬件加速, 各种向量指令集的情况下具体怎样实现的?于是本文便详细解答一下。原创 2024-12-11 22:58:44 · 459 阅读 · 0 评论 -
[C#] 对24位图像进行水平翻转(FlipX)的跨平台SIMD硬件加速向量算法(使用YShuffleX3Kernel)
在上一篇文章里,给大家讲解了32位图像水平翻转(FlipX)算法,于是本文来探讨更加复杂的24位图像水平翻转算法。本文除了会给出标量算法外,还会给出向量算法。且这些算法是跨平台的,同一份源代码,能在 X86(Sse、Avx等指令集)及Arm(AdvSimd等指令集)等架构上运行,且均享有SIMD硬件加速。原创 2024-12-04 21:52:12 · 1312 阅读 · 0 评论 -
[C#] 对32位图像进行水平翻转(FlipX)的跨平台SIMD硬件加速向量算法(使用VectorTraits的YShuffleKernel方法来解决Shuffle的缺点)
在上一篇文章里,我们讲解了图像的垂直翻转(FlipY)算法,于是本文来探讨水平翻转(FlipX)。先讲解比较容易的32位图像水平翻转算法,便于后续文章来探讨复杂的24位图像水平翻转算法。本文除了会给出标量算法外,还会给出向量算法。且这些算法是跨平台的,同一份源代码,能在 X86(Sse、Avx等指令集)及Arm(AdvSimd等指令集)等架构上运行,且均享有SIMD硬件加速。原创 2024-12-01 22:24:41 · 650 阅读 · 0 评论 -
[C#] 对图像进行垂直翻转(FlipY)的跨平台SIMD硬件加速向量算法,兼谈并行处理收益极少的原因
将位图进行水平翻转或垂直翻转,这些是图像处理的常用算法。本文介绍最简单的垂直翻转,便于后续文章来探讨复杂的水平翻转算法。本文除了会给出标量算法外,还会给出向量算法。且这些算法是跨平台的,同一份源代码,能在 X86及Arm架构上运行,且均享有SIMD硬件加速。原创 2024-11-30 03:19:06 · 889 阅读 · 0 评论 -
[C#] Bgr24彩色位图转为灰度的Bgr24位图的跨平台SIMD硬件加速向量算法
在上一篇文章里,我们讲解了“Bgr24彩色位图转为Gray8灰度位图”算法。本文将探讨“Bgr24彩色位图转为灰度的Bgr24位图”。区别在于目标位图也是Bgr24格式的,只是将像素数据由彩色转为了灰度。这些算法也是跨平台的,同一份源代码,能在 X86及Arm架构上运行,且均享有SIMD硬件加速。原创 2024-11-21 00:42:22 · 864 阅读 · 0 评论 -
[C#] Bgr24彩色位图转为Gray8灰度位图的跨平台SIMD硬件加速向量算法(第2版: 增加512位向量算法、RGB2Y算法的测试对比)
将彩色位图转为灰度位图,是图像处理的常用算法。本文将介绍 Bgr24彩色位图转为Gray8灰度位图的算法,除了会给出标量算法外,还会给出向量算法。且这些算法是跨平台的,同一份源代码,能在 X86及Arm架构上运行,且均享有SIMD硬件加速。原创 2024-11-19 23:16:12 · 1244 阅读 · 0 评论 -
发布 VectorTraits v3.0(支持 X86架构的Avx512系列指令集,支持 Wasm架构及PackedSimd指令集等)
VectorTraits已更新至 v3.0版。支持Vector512类型及 X86架构的Avx512系列指令集; 支持 Wasm架构及PackedSimd指令集; 还提供了 多向量换位(YShuffleX2、YShuffleX3)、交织(Group2Zip, Group2Unzip) 等原创的向量方法。原创 2024-11-09 22:18:34 · 1041 阅读 · 0 评论 -
发布 VectorTraits v2.0(支持 x86的Sse系列指令集等)
固定长度的数组”的原理比较简单,就是利用值类型的结构体的一些特点。且2.0版增加了浮点类型判断等多个函数,若仍然放在BitMath里,会使该类便的更大,不易维护。即原本1条指令就能寻址,但JIT只会编译为3条指令的,影响了性能。对于固定长度的向量类型(Vector128/Vector256),在v1.0版时只是提供了常用的向量方法。的地址计算,存在写法繁琐,很难利用“寄存器相对寻址”、“相对基址变址寻址”指令问题。当使用这2种相对寻址时,能在同一指令内就能完成“地址计算”与实际的“数据搬运”。原创 2024-03-17 17:47:15 · 744 阅读 · 0 评论 -
发布 VectorTraits v1.0,它是 C# 下增强SIMD向量运算的类库
本库为向量类型提供了许多重要的算术方法(如 Shift, Shuffle, NarrowSaturate)及常数, 使您能更方便的编写跨平台的SIMD运算代码。它充分利用了 X86、Arm架构的内在函数实现硬件加速,且能够享受内联编译优化。原创 2023-09-08 00:32:53 · 782 阅读 · 0 评论