zyl910

优化技巧、硬件体系、图像处理、图形学、游戏编程、国际化与文本信息处理。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

随笔分类 -  --- My_原创

1 2 3 4 5 ··· 9 下一页

摘要:GEMM(General Matrix Multiply,通用矩阵乘法)是科学计算与深度学习等领域的核心算法。 以前用 C# 开发的GEMM程序的性能,比MKL、OpenBLAS差得远,这是因为那时的 .NET 不支持SIMD硬件加速技术。从2014年开始, .NET 对SIMD硬件加速技术的支持越来越完善了。我潜心研究用该技术来改进 C# GEMM程序的性能,最近有了重大突破——对于1024尺寸矩阵的SGEMM,我的算法比基础算法的性能提升1080倍,与 MKL、OpenBLAS的测试结果在同一梯队。 阅读全文
posted @ 2025-08-31 17:35 zyl910 阅读(39) 评论(1) 推荐(1)

摘要:作者: zyl910 最近有读者反馈“部分网站打不开”。于是我修正了这一问题,发布了v1.2.1版。 一、变更说明 v1.2.1的变更说明—— 解决了部分网站无法打开的问题. 改进 TLS 的版本兼容性. 忽略HTTPS证书检查, 用于支持证书无效的网站. 二、使用介绍 用法与先前版本相同. 例如可 阅读全文
posted @ 2025-07-15 21:28 zyl910 阅读(161) 评论(4) 推荐(1)

摘要:最近在调试Http POST协议的接口时,对 TestHttpPost 进行了改进,增加了增加输出文件、设置请求头的功能。故发布了发布v1.2版。 阅读全文
posted @ 2025-06-21 20:48 zyl910 阅读(107) 评论(3) 推荐(0)

摘要:Span 存在一个局限性, 它使用的是 int (Int32: 32位整数) 类型的索引. 即使是在 64位操作系统中, 它仅能访问最长 2G(`2^31`) 的数据. 而 `Marshal.AllocHGlobal` 方法在分配内存时支持 nint (IntPtr: 原生整数) 类型的长度, 在 64位系统上能分配超过 2GB 的非托管内存, Span 难以支持这么长的数据. 在没有 Span 的时候, 手动操作非托管内存是非常繁琐的, 而且代码的通用性不高. ExSpan 解决了这一局限性, 它使用 nint 类型的索引. nint 类型的字节大小, 与原生指针完全相同, 故在64位系统上能以64位的索引来访问数据. ExSpan 的用法与 Span 完全相同, 且像 Span 那样提供了大量的工具函数. 这使得它适用于 图像处理、视频处理、深度学习等大规模数据的领域. 阅读全文
posted @ 2025-06-16 00:46 zyl910 阅读(67) 评论(0) 推荐(0)

摘要:在本主题的 上一篇文章里,给大家讲解了24位图像水平翻转(FlipX)算法。但该文章主要是为了介绍 YShuffleX3Kernel 的使用,该算法性能并不是最优的。于是本文将介绍如何使用 YShuffleX2Kernel 来优化程序。而且Imageshop在留言区给了一份C语言的、基于Sse系列指 阅读全文
posted @ 2025-03-16 18:05 zyl910 阅读(83) 评论(0) 推荐(2)

摘要:目录支持 .NET 9.0中断性变更支持 原生AOT原生AOT的范例使用IlcInstructionSet参数TraitsOutput类增加IsDynamicCodeCompiled/IsDynamicCodeSupported信息的输出为了支持原生AOT, 将ReflectionUtil等类的所有 阅读全文
posted @ 2025-01-27 00:32 zyl910 阅读(246) 评论(2) 推荐(2)

摘要:在上一篇文章里,给大家讲解了24位图像水平翻转(FlipX)算法,其中用到了一个关键方法——YShuffleX3Kernel。一些读者对它背后的原理感兴趣——为什么它在跨平台时运行也能获得SIMD硬件加速, 各种向量指令集的情况下具体怎样实现的?于是本文便详细解答一下。 一、为什么它在跨平台时运行也 阅读全文
posted @ 2024-12-11 22:37 zyl910 阅读(251) 评论(3) 推荐(0)

摘要:在上一篇文章里,给大家讲解了32位图像水平翻转(FlipX)算法,于是本文来探讨更加复杂的24位图像水平翻转算法。 本文除了会给出标量算法外,还会给出向量算法。且这些算法是跨平台的,同一份源代码,能在 X86(Sse、Avx等指令集)及Arm(AdvSimd等指令集)等架构上运行,且均享有SIMD硬 阅读全文
posted @ 2024-12-04 21:44 zyl910 阅读(104) 评论(2) 推荐(0)

摘要:在上一篇文章里,我们讲解了图像的垂直翻转(FlipY)算法,于是本文来探讨水平翻转(FlipX)。先讲解比较容易的32位图像水平翻转算法,便于后续文章来探讨复杂的24位图像水平翻转算法。 本文除了会给出标量算法外,还会给出向量算法。且这些算法是跨平台的,同一份源代码,能在 X86(Sse、Avx等指 阅读全文
posted @ 2024-12-01 22:01 zyl910 阅读(98) 评论(0) 推荐(0)

摘要:目录一、标量算法1.1 算法实现1.2 基准测试代码二、向量算法2.1 算法思路2.1.1 解决非整数倍带来的难点2.2 算法实现2.3 基准测试代码三、使用系统所提供的MemoryCopy方法进行复制四、对算法进行检查五、基准测试结果5.1 X86 架构5.2 Arm 架构5.3 .NET Fra 阅读全文
posted @ 2024-11-30 03:08 zyl910 阅读(145) 评论(0) 推荐(0)

摘要:在上一篇文章里,我们讲解了“Bgr24彩色位图转为Gray8灰度位图”算法。本文将探讨“Bgr24彩色位图转为灰度的Bgr24位图”。区别在于目标位图也是Bgr24格式的,只是将像素数据由彩色转为了灰度。这些算法也是跨平台的,同一份源代码,能在 X86及Arm架构上运行,且均享有SIMD硬件加速。 阅读全文
posted @ 2024-11-21 00:37 zyl910 阅读(89) 评论(0) 推荐(0)

摘要:将彩色位图转为灰度位图,是图像处理的常用算法。本文将介绍 Bgr24彩色位图转为Gray8灰度位图的算法,除了会给出标量算法外,还会给出向量算法。且这些算法是跨平台的,同一份源代码,能在 X86(Sse、Avx等指令集)及Arm(AdvSimd指令集)等架构上运行,且均享有SIMD硬件加速。 修订历 阅读全文
posted @ 2024-11-19 23:05 zyl910 阅读(156) 评论(0) 推荐(0)

摘要:目录支持 X86架构的Avx512系列指令集支持Avx512时的输出信息支持 Wasm架构及PackedSimd指令集支持PackedSimd时的输出信息VectorTraits.Benchmarks.Wasm 使用说明新增了向量方法支持 .NET 8.0 新增的向量方法提供交织与解交织的向量方法Y 阅读全文
posted @ 2024-11-09 22:13 zyl910 阅读(189) 评论(0) 推荐(0)

摘要:作者: zyl910 发现.NET8增加了Arm架构的多寄存器的查表函数(VectorTableLookup/VectorTableLookupExtension),这给编写SIMD向量化算法带来了方便。 一、指令说明 在学习Arm的AdvSimd(Neon)指令集时,发现它的Lookup(查表)功 阅读全文
posted @ 2024-03-23 22:48 zyl910 阅读(272) 评论(0) 推荐(1)

摘要:目录支持 x86的Sse系列指令集为 Vector128/Vector256 补充全部的向量方法提供CPU型号信息结果范例1: X86 CPU on Windows结果范例2: Arm CPU on Linux结果范例3: Arm CPU on Mac OS提供所支持的指令集信息结果范例1: X86 阅读全文
posted @ 2024-03-17 17:30 zyl910 阅读(119) 评论(1) 推荐(0)

摘要:发布 VectorTraits v1.0, 它是C#下增强SIMD向量运算的类库 VectorTraits: SIMD Vector type traits methods (SIMD向量类型的特征方法). NuGet: https://www.nuget.org/packages/VectorTr 阅读全文
posted @ 2023-09-08 00:23 zyl910 阅读(294) 评论(4) 推荐(2)

摘要:作者: [zyl910](http://www.cnblogs.com/zyl910/) [TOC] ## 一、引言 前面的几篇文章里,介绍了 C# 编写向量算法的各种办法。 虽然也做了一些基准测试,初步验证了向量算法的效率高。但是由于 CPU睿频、其他进程抢占CPU资源 等原因,基准测试的结果不太 阅读全文
posted @ 2023-08-19 18:56 zyl910 阅读(304) 评论(0) 推荐(1)

摘要:作者: [zyl910](http://www.cnblogs.com/zyl910/) [TOC] ## 一、引言 C#没有直接提供对数据进行重新解释(C++的 reinterpret_cast)的功能,而在使用向量类型时,经常需要做这种操作。例如 [第2篇文章](https://www.cnbl 阅读全文
posted @ 2023-07-30 15:04 zyl910 阅读(637) 评论(2) 推荐(1)

摘要:作者: zyl910 在前一篇文章(在亚马逊AWS上创建ARM服务器并配置好RDP远程桌面连接的心得)里,我们成功在亚马逊AWS上创建了Ubuntu系统的ARM服务器。现在准备在该服务器上安装 .NET SDK。 一、尝试 apt-get 安装 首先尝试了之前在 x86 处理器的Ubuntu系统上安 阅读全文
posted @ 2022-11-28 22:36 zyl910 阅读(1788) 评论(1) 推荐(1)

摘要:作者: zyl910 听说亚马逊AWS上能创建ARM服务器,且亚马逊云服务器能免费使用12个月,于是我尝试了一下。还尝试了在创建的ARM服务器上装好了Ubuntu桌面,并配置好RDP远程桌面连接,从而能够通过Windows的“远程桌面连接”程序来远程操作它。 其实网上的资料已经很详细了,故摘录其他文 阅读全文
posted @ 2022-11-27 22:16 zyl910 阅读(1552) 评论(0) 推荐(0)

1 2 3 4 5 ··· 9 下一页