Intrinsic
USST_Coder
这个作者很懒,什么都没留下…
展开
-
C++性能优化系列——3D高斯核卷积计算(四)Intrinsic实现一维卷积与循环展开
基于 性能优化系列(CPU)——3D高斯核卷积计算(三)FMA向量化计算一维卷积 中实现,本文用Intrinsic实现向量化的一维卷积计算。代码实现void Conv1D_Ins_Cmb(float* pSrcLine, int iLength, float* pKernel, int kernelSize, float* pDst,float* pSimdKernel) { int iConvSize = iLength - kernelSize + 1; float* pDstTemp原创 2020-09-17 11:53:30 · 800 阅读 · 0 评论 -
C++性能优化系列——矩阵转置(七)Intrinsic 内存预取与OpenMP多线程并行化
上一篇CPU性能优化系列——矩阵转置(六)Intrinsic转置实现与Core Bound优化中通过Intrinsic 实现了矩阵转置功能,同时针对寄存器使用导致的spilling问题,对每次处理的数据块尺寸进行调整。本篇将基于之前的优化版本,在内存访问方面与多线程并行化方面做进一步优化。内存访问优化上一篇中主要针对寄存器使用问题优化代码,未针对内存访问问题 L3 Latency做处理。考虑Advance2版本中对内存访问的模式,写内存操作是连续执行的,读内存操作是交叉执行的。因此加载内存方式导致该问题原创 2020-08-18 17:08:55 · 1178 阅读 · 0 评论 -
C++性能优化系列——矩阵转置(六)Intrinsic转置实现与Core Bound优化
namespace TTranspose {#define NROW 1024#define NCOL 1024#define NSLICE 1024*1024#define REPEAT 1024//#define REPEAT 1 void Verify(unsigned char* pSource, unsigned char* pTarget) { for (int i = 0 ; i < NSLICE; ++i) { if (pSource[i] != pTa原创 2020-07-20 15:34:23 · 1344 阅读 · 0 评论 -
C++性能优化系列——矩阵转置(五)Intrinsic函数详解
本篇详细介绍编译器提供Intrinsic函数的具体功能,为下一篇通过Intrinsic函数实现矩阵转置做铺垫。Intrinsic函数详解__m128i _mm_unpacklo_epi8 (__m128i a, __m128i b)#include <emmintrin.h>Instruction: punpcklbw xmm, xmmCPUID Flags: SSE2DescriptionUnpack and interleave 8-bit integers from the原创 2020-07-27 19:14:09 · 3750 阅读 · 0 评论