使用Intel Compiler 11.1和SDE模拟器进行AVX开发

Intel® Advanced Vector Extensions (Intel® AVX) 在浮点运算上扩展了Intel® SSE的能力。Intel® AVX使用256位寄存器(SSE128位)并对指令集进行了扩展。每条指令可以同时处理8float4double数据。

 

对于浮点处理密集型的应用,非常适合于进行AVX优化。Intel支持AVXSandy Bridge平台还未发布,在发布之前我们如何进行AVX开发呢?答案是通过Intel® CompilerICL)和Intel® Software Development EmulatorSDE),编译并模拟运行包含新指令集的程序。

 

下面简要介绍模拟环境的搭建。

 

首先下载并安装ICL 11.1, 最新的11.1版本支持生成AVX指令的程序,在Intel主页上可免费获得30天试用的license。安装好后我们在VS2005集成环境里面就可以使用ICL了。

 

下载SDE的压缩包并解压到任意目录,然后设置PATH环境变量使之包含这个目录。

 

我们使用Benefits of Intel AVX For Small Matrices这篇文章附带的源码进行试验。在VS2005中新建C++项目并把源代码文件添加到其中,把代码里面的 #include <gmmintrin.h> 改为 #include <immintrin.h>,该文件头为ICL中支持AVX intrinsic的文件头,然后在ICL上编译通过。这时如果直接运行程序会显示非法指令错误,程序需要在模拟器中运行。

 

打开一个Command Line窗口并进入可执行文件所在目录,运行:

 

> sde -- Add4x4Matrices.exe

 

程序即可正确运行并输出结果。

 

在开发过程中可以使用Intel Intrinsic Guide,通过它可快速查询SIMD指令(包含SSExAVX等)的用法,可以从Intel AVX主页上下载。

 

资源:

Intel AVX 主页, /en-us/avx/

Intel Compiler 11.1, /en-us/intel-compilers/

Intel SDE, /en-us/articles/intel-software-development-emulator



Benefits of Intel AVX For Small Matrices, /en-us/articles/benefits-of-intel-avx-for-small-matrices

For more complete information about compiler optimizations, see our Optimization Notice.