The invention discloses a floating point peak calculation and throughput test algorithm based on INTEL AVX instruction set, which includes steps: step 1:AVX 128Bit ADD/Sub; step 2:AVX 128bit Mul; step 3:AVX 128Bit FMA; step 4:AVX. Step 7, AVX 256Bit FMA; step 8, AVX 256Bit ADD+Mul; step 9, AVX 512Bit ADD/Sub; step 10, AVX 512Bit Mul; step 11; step 12; step 13, automatic iteration and nanosecond timing of the calculation procedure; step 14, for different processor architectures; step 15, step 15, Single thread test + multithread invocation; step 16 shows the test results. In the shortest possible test time, the invention can evaluate the vector computing power of the current mainstream X86 processor, and help researchers quickly determine the design of the architecture processor in SIMD throughput, and find the focus and performance peak point of its basic computing power.
【技术实现步骤摘要】
一种基于INTELAVX指令集的浮点峰值计算吞吐测试算法
本专利技术涉及浮点算法领域,具体为一种基于INTELAVX指令集的浮点峰值计算吞吐测试算法。
技术介绍
过去,主流CPU通过提高每秒指令执行次数来提高CPU在单位时间内的计算能力,通常每个时钟周期执行一条指令完成一次计算,但随着计算的复杂度增加,CPU内部引入了流水线执行的方式,即将一个完整的指令执行步骤拆分成多个步骤,由各个寄存器按流水线的形式分别完成,每个时钟周期同样完成一次操作,只要流水线能稳定运行下去,依旧可以做到近似一个时钟周期有一条指令完成,这种一个时钟周期完成一条指令的形式,也被称为标量处理器。但随着CPU每秒时钟周期数不断提高,也就是CPU主频不断提高,要想继续提升主频就相当困难了,于是在CPU内加入多个指令执行流水线,做到同时有多个流水线在几乎同时进行指令执行的流水工作,在受到缓存缺失,分支预测失败等情况的影响下,依旧能实现每个时钟周期平均执行超过一条指令的微处理器,也被称为超标量流水线架构。标量或是超标量处理器,都没有解决一个问题,那就是仍然是一条计算指令实现一次数值计算,但随着单纯增加执行单元对功耗发热的影响越来越大,CPU的计算性能发展为多线程并发与SIMD并行两种思路,多线程仍然没有改变指令层面的执行,仍旧是提高单位时间内指令执行的数量,而SIMD则改变了过去指令执行的基本思想,引入了向量(矢量)计算的概念。过去无论计算8位/16位/32位抑或其他数据类型的计算,一次指令执行往往就是一组数值的计算,如1+1,2X2,1.00001X1.000001等,而SIMD指令集则提供 ...
【技术保护点】
1.一种基于INTEL AVX指令集的浮点峰值计算吞吐测试算法,其特征在于,包括以下步骤:步骤1:AVX 128Bit ADD/Sub;使用AVX组合浮点计算,首先要对寄存器进行加载操作,将相应数据加载到相应寄存器,这里使用128bit SIMD指令将加法要做的数值加载:const__m128d add0=_mm_set1_pd,vmovaps指令可把4个对准的单精度值传送到xmm寄存器或者内存,vmovupd可把4个不对准的单精度值传送到xmm寄存器或者内存,将数值送入128bit XMM寄存器后,便可使用加法与减法指令执行Add或者Sub;使用add_ps语句将add0的数值与r0‑r7的数值进行加法计算r0=_mm_add_ps(r0,add0);r1=_mm_add_ps(r1,add0);r2=_mm_add_ps(r2,add0);r3=_mm_add_ps(r3,add0);r4=_mm_add_ps(r4,add0);r5=_mm_add_ps(r5,add0);r6=_mm_add_ps(r6,add0);r7=_mm_add_ps(r7,add0);使用sub_ps ...
【技术特征摘要】
1.一种基于INTELAVX指令集的浮点峰值计算吞吐测试算法,其特征在于,包括以下步骤:步骤1:AVX128BitADD/Sub;使用AVX组合浮点计算,首先要对寄存器进行加载操作,将相应数据加载到相应寄存器,这里使用128bitSIMD指令将加法要做的数值加载:const__m128dadd0=_mm_set1_pd,vmovaps指令可把4个对准的单精度值传送到xmm寄存器或者内存,vmovupd可把4个不对准的单精度值传送到xmm寄存器或者内存,将数值送入128bitXMM寄存器后,便可使用加法与减法指令执行Add或者Sub;使用add_ps语句将add0的数值与r0-r7的数值进行加法计算r0=_mm_add_ps(r0,add0);r1=_mm_add_ps(r1,add0);r2=_mm_add_ps(r2,add0);r3=_mm_add_ps(r3,add0);r4=_mm_add_ps(r4,add0);r5=_mm_add_ps(r5,add0);r6=_mm_add_ps(r6,add0);r7=_mm_add_ps(r7,add0);使用sub_ps语句将sub0的数值与r0-r7的数值进行组合浮点减法计算r0=_mm_sub_ps(r0,sub0);r1=_mm_sub_ps(r1,sub0);r2=_mm_sub_ps(r2,sub0);r3=_mm_sub_ps(r3,sub0);r4=_mm_sub_ps(r4,sub0);r5=_mm_sub_ps(r5,sub0);r6=_mm_sub_ps(r6,sub0);r7=_mm_sub_ps(r7,sub0);编译器将使用SIMD模式编译为vaddpsxmm0,xmm6,xmm4的语句或者vsubpsxmm0,xmm6,xmm4的语句,这样就构成了AVX-128向量计算加法与减法的基本计算部分;步骤2:AVX128bitMul;Mul便是乘法计算的简写,在进行矢量乘法的时候,我们依旧要将数据装载入SIMD寄存器中,且保证对应的单精度和双精度占满SIMD寄存器,如计算32位单精度浮点数时,一个XMM寄存器需打包4个单精度浮点数和2个双精度浮点数乘法计算部分仍然为之前的数据加载,加载至mul0.mul1两个寄存器中,但计算部分调用12个寄存器,进行4组乘法计算,对mul0的两组,对mul1的两组r0=_mm_mul_ps(r0,mul0);r1=_mm_mul_ps(r1,mul0);r2=_mm_mul_ps(r2,mul0);r3=_mm_mul_ps(r3,mul0);r4=_mm_mul_ps(r4,mul0);r5=_mm_mul_ps(r5,mul0);r6=_mm_mul_ps(r6,mul0);r7=_mm_mul_ps(r7,mul0);r8=_mm_mul_ps(r8,mul0);r9=_mm_mul_ps(r9,mul0);rA=_mm_mul_ps(rA,mul0);rB=_mm_mul_ps(rB,mul0);r0=_mm_mul_ps(r0,mul1);r1=_mm_mul_ps(r1,mul1);r2=_mm_mul_ps(r2,mul1);r3=_mm_mul_ps(r3,mul1);r4=_mm_mul_ps(r4,mul1);r5=_mm_mul_ps(r5,mul1);r6=_mm_mul_ps(r6,mul1);r7=_mm_mul_ps(r7,mul1);r8=_mm_mul_ps(r8,mul1);r9=_mm_mul_ps(r9,mul1);rA=_mm_mul_ps(rA,mul1);rB=_mm_mul_ps(rB,mul1);r0=_mm_mul_ps(r0,mul0);r1=_mm_mul_ps(r1,mul0);r2=_mm_mul_ps(r2,mul0);r3=_mm_mul_ps(r3,mul0);r4=_mm_mul_ps(r4,mul0);r5=_mm_mul_ps(r5,mul0);r6=_mm_mul_ps(r6,mul0);r7=_mm_mul_ps(r7,mul0);r8=_mm_mul_ps(r8,mul0);r9=_mm_mul_ps(r9,mul0);rA=_mm_mul_ps(rA,mul0);rB=_mm_mul_ps(rB,mul0);r0=_mm_mul_ps(r0,mul1);r1=_mm_mul_ps(r1,mul1);r2=_mm_mul_ps(r2,mul1);r3=_mm_mul_ps(r3,mul1);r4=_mm_mul_ps(r4,mul1);r5=_mm_mul_ps(r5,mul1);r6=_mm_mul_ps(r6,mul1);r7=_mm_mul_ps(r7,mul1);r8=_mm_mul_ps(r8,mul1);r9=_mm_mul_ps(r9,mul1);rA=_mm_mul_ps(rA,mul1);rB=_mm_mul_ps(rB,mul1);编译器将使用SIMD模式编译为vmulpsxmm0,xmm6,xmm4的语句,这样就构成了AVX-128向量计算乘法的基本计算部分;步骤3:AVX128BitFMA;融合乘加指令集分两种,基于Intel处理器支持的为FMA3,基于AMDBulldozer和Piledriver架构处理器的为FMA4指令集,这两者之间的区别在于支持的操作数有不同,FMA3指令可实现三操作数的融合乘加指令,即完成单指令A=(A+B)*C的计算,四操作数的FMA4指令,即...
【专利技术属性】
技术研发人员:李艳兵,陆凯林,蒋钟文,
申请(专利权)人:青岛雷神科技股份有限公司,
类型:发明
国别省市:山东,37
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。