zyl910

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

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

随笔分类 -  K24 AVX_高级矢量扩展

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

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

摘要:作者: zyl910 目录一、背景1.1 循环展开简介1.2 测试准备二、在C#中使用2.1 对基础算法做循环展开2.1.1 测试结果:2.2 对 Vector4 版算法做循环展开2.2.1 测试结果:2.3 对 Vector<T> 版算法做循环展开2.3.1 测试结果:2.4 对 Avx版算法做循 阅读全文
posted @ 2022-11-16 23:57 zyl910 阅读(665) 评论(4) 推荐(1) 编辑

摘要:作者: zyl910 一、缘由 在 上一篇文章,介绍了.NET的2种向量类型(Vector4、Vector<T>)。本文来介绍第3种。 .NET Core 3.0 增加了对内在函数(Intrinsics Functions)的支持,并增加了第3种向量类型—— 3. 总位宽固定的向量(Vector o 阅读全文
posted @ 2022-09-18 22:25 zyl910 阅读(824) 评论(2) 推荐(2) 编辑

摘要:作者:zyl910。一、更新说明1.1 支持VC2012 VC2012增加了很多Intrinsics函数,详见——http://www.cnblogs.com/zyl910/archive/2012/11/06/intrin_vc2012.html检查了一下VC2012新增的Intrinsics函数集,发现它支持ARM指令和Haswell新指令 根据上述信息改进zintrin,检测到是VC2012时定义相关的宏—— #if _MSC_VER >=1700 // VC2012 #define INTRIN_AVX2 1 // immint... 阅读全文
posted @ 2012-11-07 22:18 zyl910 阅读(2340) 评论(1) 推荐(2) 编辑

摘要:作者:zyl910 之前我整理了一份VC6至VC2010中Intrinsics函数集对应表。现在VS2012发布了,它有没有增加Intrinsics函数集呢?于是我对此进行检查。 若是64位win8系统中默认安装的VS2012,Intrinsics头文件位于“C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include”目录。 首先发现多了两个Intrinsics头文件——armintr.h:ARM的常用指令集。arm_neon.h:ARM的neon指令集。 看了一下intrin.h,发现以前大段的ARM Intrinsi... 阅读全文
posted @ 2012-11-06 22:49 zyl910 阅读(4825) 评论(0) 推荐(1) 编辑

摘要:作者:zyl910。 本文面对对SSE等SIMD指令集有一定基础的读者,以双精度浮点数组求和为例演示了如何跨平台使用SSE2、AVX指令集。支持vc、gcc编译器,在Windows、Linux、Mac这三大平台上成功运行。一、关键讲解 前文(http://www.cnblogs.com/zyl910/archive/2012/10/22/simdsumfloat.html)演示了如何使用SSE、AVX指令集 处理 单精度浮点数组求和。现在对其进行改造,使用SSE2、AVX指令集 处理 双精度浮点数组求和。因程序基本上差不多,文本就不详细讲解了,只说关键变化。1.1 指令集简介 先来看看支... 阅读全文
posted @ 2012-10-26 17:49 zyl910 阅读(3898) 评论(0) 推荐(0) 编辑

摘要:作者:zyl910。 本文面对对SSE等SIMD指令集有一定基础的读者,以单精度浮点数组求和为例演示了如何跨平台使用SSE、AVX指令集。因使用了stdint、zintrin、ccpuid这三个模块,可以完全避免手工编写汇编代码,具有很高可移植性。支持vc、gcc编译器,在Windows、Linux、Mac这三大平台上成功运行。一、问题背景 最初,我们只能使用汇编语言来编写SIMD代码。不仅写起来很麻烦,而且易读性、可维护性、移植性都较差。 不久,VC、GCC等编译器相继支持了Intrinsic函数,使我们可以摆脱汇编,利用C语言来调用SIMD指令集,大大提高了易读性和可维护。而且移植性... 阅读全文
posted @ 2012-10-22 22:12 zyl910 阅读(22258) 评论(5) 推荐(5) 编辑

摘要:作者:zyl910。列名解释——GCC470:GCC 4.7.0 (Fedora 17)。/usr/lib/gcc/i686-redhat-linux/4.7.0/include/。GCC462:GCC 4.6.2 (MinGW)。\lib\gcc\mingw32\4.6.2\include。宏:判断该指令集是否启用的宏。参数:启用该指令集的命令行参数。描述:指令集描述。 GCC470GCC462宏参数描述abmintrin.h__ABM__-mabmABM: Advanced Bit Manipulation. 改为lzcntintrin.h.ammintrin.hammintrin.h.. 阅读全文
posted @ 2012-08-27 22:45 zyl910 阅读(11504) 评论(1) 推荐(1) 编辑

摘要:从2011年的Sandy Bridge微架构处理器开始,现在支持AVX系列指令集的处理器越来越多了。本文探讨如何用VC编写检测AVX系列指令集的程序,并利用了先前的CPUIDFIELD方案。一、AVX系列指令集简介 SSE5 指令:SSE5 是一个纸面上的指令集,并没有最终实现,AMD 在 2007 年 8 月公布 SSE5 指令集规范,在 2009 年 5 月 AMD 推出了 XOP,FMA4 以及 CVT16 来取代 SSE5 指令。 AVX 指令:2008 年 3 月 Intel 发布了 AVX(Advanced Vector Extensions)指令集规范,首次在 Sandy B.. 阅读全文
posted @ 2012-07-04 16:01 zyl910 阅读(11636) 评论(0) 推荐(0) 编辑

摘要:作者:zyl910 关于SIMD(MMX、SSE、AVX)编程的资料一直很零散,于是我试图进行收集整理,便于随时翻阅学习。而且很多代码是直接用汇编写的,易读性差、难以重用,于是我决定将其统一改写为Intrinsics函数版。一、Instructions函数对照表 在使用Instructions函数时,很多时候会发现MSDN说的不详细,这时只有去翻阅Intel、AMD文档了。但Intel、AMD文档都是按照汇编指令名排序的,查起来不太方便。 而且SIMD指令大多很复杂,文字描述难以详细的解释其功能,唯有伪代码才能精确的解释其功能。但Intel、AMD文档上的伪代码大多很长,不适合随时翻阅。... 阅读全文
posted @ 2012-04-26 21:53 zyl910 阅读(6827) 评论(0) 推荐(2) 编辑

摘要:当使用Intrinsics函数来操作SIMD指令集(MMX/SSE/AVX等)时,会面对不同长度的SIMD数据类型,其中又分为多种紧缩格式。为此,我设计了一套SIMD变量命名规范,可以有效的提高代码的可读性。一、SIMD数据类型简介 SIMD数据类型有——__m64:64位紧缩整数(MMX)。__m128:128位紧缩单精度(SSE)。__m128d:128位紧缩双精度(SSE2)。__m128i:128位紧缩整数(SSE2)。__m256:256位紧缩单精度(AVX)。__m256d:256位紧缩双精度(AVX)。__m256i:256位紧缩整数(AVX)。注:紧缩整数包括了8位、16... 阅读全文
posted @ 2012-04-23 17:49 zyl910 阅读(9795) 评论(1) 推荐(1) 编辑

摘要:在传统印象中,数字的比较关系只有6种。但在AVX指令集中,Intel一下给出了32种浮点比较谓词,详见下图——(Intel手册:Table 3-9. Comparison Predicate for VCMPPD and VCMPPS Instructions) 为什么会有这么多种比较谓词呢?我为此困惑困惑了很久。 直到最近翻阅了不少资料后,才终于将它们弄懂了。一、浮点数据类型 Intel使用的是IEEE 754规范的浮点数据类型。对于浮点数据类型来说,除了可以存储数字、无穷之外,还可以存储 NaN(not a number。非数)。 NaN(非数)分为两大类——1.QNaN:qu... 阅读全文
posted @ 2012-04-19 15:50 zyl910 阅读(5057) 评论(0) 推荐(0) 编辑

摘要:File:Intrinsics头文件描述:指令集描述VS:Visual Studio版本号VisualStudio:Visual Studio版本名File描述VSVisualStudiointrin.hAll Architectures8.02005mmintrin.hMMX intrinsics6.06.0 SP5+PP5xmmintrin.hStreaming SIMD Extensions intrinsics6.06.0 SP5+PP5emmintrin.hWillamette New Instruction intrinsics (SSE2)6.06.0 SP5+PP5pmmint 阅读全文
posted @ 2012-02-28 22:33 zyl910 阅读(8744) 评论(12) 推荐(0) 编辑

摘要:今天在百度上看到一则消息——http://tieba.baidu.com/p/1362181987IVY Bridge : There's more than 22nmI named this title...this is a information that were said to be confirmed on Intel forums"• Two instructions to support 16-bit floating-point data type conversion to and from single-precision floating-point 阅读全文
posted @ 2012-01-12 11:59 zyl910 阅读(839) 评论(0) 推荐(0) 编辑