使用Intel 向量化编译器优化性能(1)
本文节选翻译自Intel网站
使用Intel c++编译器的时候,怎么也找不到相关的资料可以参考,在Intel的网站找到了一些教程,我C++的水平很一般,对这个编译器的使用也是刚入门,大家看了请多指正,这是第一部分,余下的我会在这几天继续整理完.
学习如何增强c/c++以及Fortran代码在windows和Linux下的性能,使用Intel的向量化编译器来为特定的循环操作自动产生SIMD代码,这些SIMD指令包括MMX/SIMD Extensions /SIMD Extensions 2.
1. 什么是向量器
向量器是intel c++/Fortran编译器的一个特性,使用intel向量编译特性通过自动生成SIMD代码加速你的代码中特定的循环, 这些SIMD指令包括MMX/SIMD Extensions /SIMD Extensions 2.
2. 什么是向量化程序
a) 主要改善性能的地方
当函数包含大量循环时通过使用向量化编译器使用SIMD指令能够获取较大的性能上的提高,一段以向量化循环为特征的程序足以快过那些同样运行方式的一般的程序或类库.对比一个向量化的循环和一个同样方式的标量循环,向量化会提供等同于使用底层汇编实现这循环的性能(通常使用在使用Streaming SIMD Extensions时会有25%-40%的性能提高).向量器也可能打开这些循环插入一些预取和 streaming store(不知道怎么翻译) 代码在你的循环中,这也可能获得一些额外的性能上的提高.
b) 使用Intel的编译器可以使你从单调乏味的优化工作中解脱出来,编译器可以节省你很多时间,可以代替你做更多的工作.
c) Intel编译器从4.5版本开始支持向量化,5.0版本增强了向量化的功能包括performing simple statement reordering automatically(这是什么,也不知道)和对SIMD2的支持
3. 为什么要使用向量器
a) 提高性能, 比如向量化一个有浮点操作的并被频繁调用的循环将会极大提高程序的性能