草庐IT

simd_mul

全部标签

C# 使用SIMD向量类型加速浮点数组求和运算(3):循环展开

作者:zyl910目录一、背景1.1循环展开简介1.2测试准备二、在C#中使用2.1对基础算法做循环展开2.1.1测试结果:2.2对Vector4版算法做循环展开2.2.1测试结果:2.3对Vector版算法做循环展开2.3.1测试结果:2.4对Avx版算法做循环展开2.4.1测试结果:2.5对Avx版算法做循环展开16次2.5.1测试结果:2.6尝试用数组来存储循环展开的临时变量2.6.1测试结果:2.7尝试用栈数组来减少相关性2.7.1测试结果:2.8测试结果汇总三、在C++中使用3.1修改代码3.2测试结果四、小结参考文献一、背景先前的2篇文章,说了向量类型的类型选择问题。本文讨论一个使

C# 使用SIMD向量类型加速浮点数组求和运算(3):循环展开

作者:zyl910目录一、背景1.1循环展开简介1.2测试准备二、在C#中使用2.1对基础算法做循环展开2.1.1测试结果:2.2对Vector4版算法做循环展开2.2.1测试结果:2.3对Vector版算法做循环展开2.3.1测试结果:2.4对Avx版算法做循环展开2.4.1测试结果:2.5对Avx版算法做循环展开16次2.5.1测试结果:2.6尝试用数组来存储循环展开的临时变量2.6.1测试结果:2.7尝试用栈数组来减少相关性2.7.1测试结果:2.8测试结果汇总三、在C++中使用3.1修改代码3.2测试结果四、小结参考文献一、背景先前的2篇文章,说了向量类型的类型选择问题。本文讨论一个使

C# 使用SIMD向量类型加速浮点数组求和运算(2):C#通过Intrinsic直接使用AVX指令集操作 Vector256<T>,及C++程序对比

作者:目录一、缘由二、在C#中使用2.1文档查看心得2.2搭建测试项目(BenchmarkVectorCore30)及处理准备工作2.3编写基于AVX的浮点数组求和函数(SumVectorAvx)2.4使用Span改进数据加载(SumVectorAvxSpan)2.5使用指针改进数据加载(SumVectorAvxPtr)2.6完整的BenchmarkVector类2.7测试结果三、在C++中使用3.1搭建测试项目(BenchmarkVectorCpp)3.2基本算法(SumBase)3.3Avx版算法(SumVectorAvx)3.4测试方法(Benchmark)3.5BenchmarkVec

C# 使用SIMD向量类型加速浮点数组求和运算(2):C#通过Intrinsic直接使用AVX指令集操作 Vector256<T>,及C++程序对比

作者:目录一、缘由二、在C#中使用2.1文档查看心得2.2搭建测试项目(BenchmarkVectorCore30)及处理准备工作2.3编写基于AVX的浮点数组求和函数(SumVectorAvx)2.4使用Span改进数据加载(SumVectorAvxSpan)2.5使用指针改进数据加载(SumVectorAvxPtr)2.6完整的BenchmarkVector类2.7测试结果三、在C++中使用3.1搭建测试项目(BenchmarkVectorCpp)3.2基本算法(SumBase)3.3Avx版算法(SumVectorAvx)3.4测试方法(Benchmark)3.5BenchmarkVec

C# 使用SIMD向量类型加速浮点数组求和运算(1):使用Vector4、Vector<T>

作者:目录一、缘由二、使用向量类型2.1基本算法2.2使用大小固定的向量(如Vector4)2.2.1介绍2.2.2用Vector4编写浮点数组求和函数2.3使用大小与硬件相关的向量(如Vector)2.3.1介绍2.2.1.1使用经验2.3.2用Vector编写浮点数组求和函数三、搭建测试程序3.1主测试代码(BenchmarkVectorDemo)3.1.1测试方法(Benchmark)3.1.2输出环境信息(OutputEnvironment)3.1.3汇总3.2在.NETCore里进行测试3.2.1搭建测试项目(BenchmarkVectorCore20)3.2.2BenchmarkV

C# 使用SIMD向量类型加速浮点数组求和运算(1):使用Vector4、Vector<T>

作者:目录一、缘由二、使用向量类型2.1基本算法2.2使用大小固定的向量(如Vector4)2.2.1介绍2.2.2用Vector4编写浮点数组求和函数2.3使用大小与硬件相关的向量(如Vector)2.3.1介绍2.2.1.1使用经验2.3.2用Vector编写浮点数组求和函数三、搭建测试程序3.1主测试代码(BenchmarkVectorDemo)3.1.1测试方法(Benchmark)3.1.2输出环境信息(OutputEnvironment)3.1.3汇总3.2在.NETCore里进行测试3.2.1搭建测试项目(BenchmarkVectorCore20)3.2.2BenchmarkV

SSE图像算法优化系列三十二:Zhang\Guo图像细化算法的C语言以及SIMD指令优化

    二值图像的细化算法也有很多种,比较有名的比如Hilditch细化、Rosenfeld细化、基于索引表的细化、还有Opencv自带的THINNING_ZHANGSUEN、THINNING_GUOHALL喜欢等等。这些都属于迭代的细化方式,当然还有一种是基于二值图像距离变换的细化方法,二值想比较,我个人认为是基于迭代的效果稳定、可靠,但是速度较慢,且速度和图片的内容有关,基于距离变换的版本,优点是速度稳定,但是效果差强人意。本文这里还是选择基于迭代的方式予以实现。    相关的参考文章有:http://cgm.cs.mcgill.ca/~godfried/teaching/projects

SSE图像算法优化系列三十二:Zhang\Guo图像细化算法的C语言以及SIMD指令优化

    二值图像的细化算法也有很多种,比较有名的比如Hilditch细化、Rosenfeld细化、基于索引表的细化、还有Opencv自带的THINNING_ZHANGSUEN、THINNING_GUOHALL喜欢等等。这些都属于迭代的细化方式,当然还有一种是基于二值图像距离变换的细化方法,二值想比较,我个人认为是基于迭代的效果稳定、可靠,但是速度较慢,且速度和图片的内容有关,基于距离变换的版本,优点是速度稳定,但是效果差强人意。本文这里还是选择基于迭代的方式予以实现。    相关的参考文章有:http://cgm.cs.mcgill.ca/~godfried/teaching/projects