技术讨论:如何消除指针的歧异性来提高Intel Auto-Vectorization的执行度

intel_wise 2012-03-09 01:03:47
技术讨论:如何消除指针的歧异性来提高Intel Auto-Vectorization的执行度

--------------------------------------------------------------------------------

在Intel® C++ Composer XE 2011中,编译器提供了自动向量化的编译开关( -vec(Linux* OS)或/Qvec(Window*OS)):Auto-vectorization。但是并不是所有循环语句都可以被自动向量化的。有些循环由于其中的指针变量的指向的歧异性导致编译器无法对该循环语句进行向量化性能优化,这就需要开发人员根据实际情况说明哪些指针变量可以向量化哪些不能向量化。

请看下面的用例,看看如何进行编译开关设置来提高Vectorization 的执行度;

void matvec(int size1, int size2, FTYPE a[][size2], FTYPE b[], FTYPE x[])

{

int i, j;

for (i = 0; i < size1; i++) {

b[i] = 0;

for (j = 0;j < size2; j++) {

b[i] += a[i][j] * x[j];

}

}

}

...全文
68 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

567

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧