
SIMD
文章平均质量分 92
zyl910
这个作者很懒,什么都没留下…
展开
-
[译] .NET 8 中的硬件内在函数(支持 Wasm 和 AVX-512)
它带来了沿着的大量新指令和硬件功能,包括支持16个额外的SIMD寄存器,专用掩码,以及一次操作512位数据。因此,可以利用此新功能的用户数量较少,但它可以为硬件带来的改进仍然很重要,并且值得支持数据繁重的工作负载。这允许暴露的API表面显著更小(减少超过3000个API),现有代码在很大程度上“只是工作”并利用较新的硬件支持而无需显式操作,并且希望支持AVX-512的用户不必学习新概念或以新方式编写代码。,简称Wasm,本质上是在浏览器中运行的代码,它允许比典型的解释型脚本支持更高的性能配置文件。翻译 2024-04-13 22:25:28 · 220 阅读 · 0 评论 -
[C#] .NET8增加了Arm架构的多寄存器的查表函数(VectorTableLookup/VectorTableLookupExtension)
发现.NET8增加了Arm架构的多寄存器的查表函数(VectorTableLookup/VectorTableLookupExtension),这给编写SIMD向量化算法带来了方便。原创 2024-03-23 22:56:56 · 770 阅读 · 0 评论 -
[C] 跨平台使用Intrinsic函数范例2——使用SSE2、AVX指令集 处理 双精度浮点数组求和
作者:zyl910。 本文面对对SSE等SIMD指令集有一定基础的读者,以双精度浮点数组求和为例演示了如何跨平台使用SSE2、AVX指令集。支持vc、gcc编译器,在Windows、Linux、Mac这三大平台上成功运行。一、关键讲解 前文(http://www.cnblogs.com/zyl910/archive/2012/10/22/simdsumfloat.html)演示原创 2012-10-26 18:06:18 · 5899 阅读 · 0 评论 -
[C] 跨平台使用Intrinsic函数范例3——使用MMX、SSE2指令集 处理 32位整数数组求和
作者:zyl910。 本文面对对SSE等SIMD指令集有一定基础的读者,以32位整数数组求和为例演示了如何跨平台使用MMX、SSE2指令集。支持vc、gcc编译器,在Windows、Linux、Mac这三大平台上成功运行。 一、关键讲解 前文(http://www.cnblogs.com/zyl910/archive/2012/10/22/simdsumfloat.html)演原创 2012-10-26 21:23:44 · 10588 阅读 · 0 评论 -
[C] 跨平台使用Intrinsic函数范例1——使用SSE、AVX指令集 处理 单精度浮点数组求和(支持vc、gcc,兼容Windows、Linux、Mac)
作者:zyl910。 本文面对对SSE等SIMD指令集有一定基础的读者,以单精度浮点数组求和为例演示了如何跨平台使用SSE、AVX指令集。因使用了stdint、zintrin、ccpuid这三个模块,可以完全避免手工编写汇编代码,具有很高可移植性。支持vc、gcc编译器,在Windows、Linux、Mac这三大平台上成功运行。一、问题背景 最初,我们只能使用汇编语言来编写SI原创 2012-10-22 22:28:17 · 7241 阅读 · 1 评论 -
[C] zintrin.h : 智能引入intrinsic函数。支持VC、GCC,兼容Windows、Linux、Mac OS X
作者:zyl910。 现在很多编译器支持intrinsic函数,这给编写SSE等SIMD代码带来了方便。但是各个编译器略有差异,于是我编写了zintrin.h,智能引入intrinsic函数。一、各种编译器的区别1.1 Visual C++(Windows) 最早支持intrinsic函数的VC编译器是VC 6.0。它在装上Visual Studio 6.0 Service原创 2012-09-23 23:19:35 · 7033 阅读 · 0 评论 -
ccpuid:CPUID信息模块。范例:显示所有的CPUID信息
作者:zyl910 关于获取各种CPUID信息,我之前积累了不少代码,现在决定将它们封装在一个模块中,方便代码复用。 其次,前面只是介绍了CPUID的一些常用功能,而Intel、AMD的手册中定义了大量的CPUID功能。所以我希望有一个程序能按照功能号顺序,依次显示所有的CPUID信息。这样就能很方便的与Intel、AMD的手册进行对照,有助于学习与理解。一、模块设计 最原创 2012-07-11 16:47:40 · 9833 阅读 · 0 评论 -
SIMD函数整理:00 索引贴(2012-07-31更新)
作者:zyl910 关于SIMD(MMX、SSE、AVX)编程的资料一直很零散,于是我试图进行收集整理,便于随时翻阅学习。而且很多代码是直接用汇编写的,易读性差、难以重用,于是我决定将其统一改写为Intrinsics函数版。一、Instructions函数对照表 在使用Instructions函数时,很多时候会发现MSDN说的不详细,这时只有去翻阅Intel、AMD文档了。但I原创 2012-04-26 22:01:43 · 2233 阅读 · 0 评论 -
[VC] CPUIDFIELD:CPUID字段的统一编号、读取方案。范例:检查SSE4A、AES、PCLMULQDQ指令
除了基本的MMX和SSE系列指令集外,x86体系还有其他扩展指令集,例如SSE4A、AES、PCLMULQDQ等,它们也可以利用CPUID指令来检测。但是,这些指令集细碎杂多。如果像以前那样分别编写检测函数的话,那工作量太大,不值得。而且大量的函数名也会给使用带来麻烦。于是文篇探讨如何设计一套通用的检测方案。零、指令简介 SSE4A指令:是AMD提出的,最早出现在2007年的K10微原创 2012-06-29 14:48:06 · 3420 阅读 · 0 评论 -
[VC] 检测AVX系列指令集的支持级别(AVX、AVX2、F16C、FMA、FMA4、XOP)
从2011年的Sandy Bridge微架构处理器开始,现在支持AVX系列指令集的处理器越来越多了。本文探讨如何用VC编写检测AVX系列指令集的程序,并利用了先前的CPUIDFIELD方案。一、AVX系列指令集简介 SSE5 指令:SSE5 是一个纸面上的指令集,并没有最终实现,AMD 在 2007 年 8 月公布 SSE5 指令集规范,在 2009 年 5 月 AMD 推出了 XOP,原创 2012-07-04 16:07:52 · 15785 阅读 · 1 评论 -
SIMD(MMX/SSE/AVX)变量命名规范心得
当使用Intrinsics函数来操作SIMD指令集(MMX/SSE/AVX等)时,会面对不同长度的SIMD数据类型,其中又分为多种紧缩格式。为此,我设计了一套SIMD变量命名规范,可以有效的提高代码的可读性。一、SIMD数据类型简介 SIMD数据类型有——__m64:64位紧缩整数(MMX)。__m128:128位紧缩单精度(SSE)。__m128d:128位紧缩双精度(SS原创 2012-04-23 17:47:46 · 4427 阅读 · 1 评论 -
AVX指令集中的32种浮点比较关系详解(NaN、无序、有序等)
在传统印象中,数字的比较关系只有6种。但在AVX指令集中,Intel一下给出了32种浮点比较谓词,详见下图——(Intel手册:Table 3-9. Comparison Predicate for VCMPPD and VCMPPS Instructions) 为什么会有这么多种比较谓词呢?我为此困惑困惑了很久。 直到最近翻阅了不少资料后,才终于将它们弄懂了。 一、浮原创 2012-04-19 16:37:41 · 3514 阅读 · 0 评论 -
SIMD函数整理:01 《PC平台新技术MMX(上册):开发编程指南》第8章 MMX编码技术
一、来源 来源:《PC平台新技术MMX(上册):开发编程指南》第8章 MMX编码技术 书籍信息——http://e.360buy.com/30027396.htmlPC平台新技术MMX(上册):开发编程指南作 者: 吴乐南 编 出 版 社: 东南大学出版社 ISBN:9787810502528出版时间:1997-10-01页 数:149字 数:23700原创 2012-04-26 22:22:22 · 2485 阅读 · 0 评论