《AVX用法及样例ppt课件.pptx》由会员分享,可在线阅读,更多相关《AVX用法及样例ppt课件.pptx(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、+AVX(Advanced Vector Extensions)是SSE (Streaming SIMD Extensions)的延伸架构,此架构将寄存器从128位提升到256位。+只有VS2010和gcc4.6及更高版本的编译器,配合第二代Core i3/i5/i7及更新型号的处理器才支持高级向量扩展指令函数。+支持更多运算符号_m256 _mm256_blend_ps (_m256 a, _m256 b, const int mask) +支持更多数学函数_m256 _mm256_ceil_ps (_m256 a) +支持数据交叉运算_m256 _mm256_addsub_ps (_m25
2、6 a, _m256 b) +支持三操作数运算_m256 _mm256_fmadd_ps (_m256 a, _m256 b, _m256 c) +使用SSE和AVX所提供的_m128和_m256数据类型需要标准整型支持。+VS2010和gcc3.0及更高版本的编译器提供C99标准整型头文件。+声明变量需要使用_declspec(align(N)或_attribute_(aligned(N)扩展属性。+分配内存需要使用_mm_malloc(size, align)和_mm_free(ptr)函数()。#ifndefALIGN#if!defined(_GNU_)/* Win */#defineA
3、LIGN(n)_declspec(align(n)#else/* Linux */#defineALIGN(n)_attribute_(aligned(n)#endif#endiffloat *ptr = _mm_malloc(8, 32);_mm_free(ptr);+使用SSE或AVX需要在编译器中添加/arch:SSE(-msse)或/arch:AVX(-mavx)选项来启用指令集。+使用SSE或AVX需要在编译器中预定义_SSE_或_AVX_宏来声明函数集。+在编译时检测编译器是否支持SSE或AVX需要包含头文件,支持则定义INTRIN_SSE或INTRIN_AVX宏。+在运行时检测处
4、理器是否支持SSE和AVX需要包含头文件,使用simd_sse_level和simd_avx_level函数判断其版本。#ifdefINTRIN_SSEif ( simd_sse_level(NULL) = SIMD_SSE_1 )/ RUN YOUR SSE CODECDTW oDTW;oDTW.GetDTWPath_SSE(&oUserData, &oTempData, MFCC_LIMIT);#elifINTRIN_AVXif ( simd_avx_level(NULL) = SIMD_AVX_1 )/ RUN YOUR AVX CODECDTW oDTW;oDTW.GetDTWPath_AVX(&oUserData, &oTempData, MFCC_LIMIT);#endif