问题描述
我有一个关于 **#pragma 向量对齐** 的问题。
我的理解是,无论接下来如何,确保矢量数据对齐也是我的职责。 现在,一种可能的利用方法是以下代码段:每个线程获取大小为 chunkSize 的块,chunkSize 是我对齐的倍数(matVecDim 也是)。因此,所有操作都是对齐的。
int offset = offsetCol * matVecDim;
int chunkSize = alignedCHUNKSIZE;
#pragma omp for simd nowait schedule(static,chunkSize)
#pragma vector aligned
for (int i = 0; i < matVecDim; ++i) {
matVec[offset+ i] *= factor;
}
但是,查看矢量化报告告诉我,英特尔编译器忽略了它。有人可以启发我吗?
这是矢量化报告:
备注 #15389:矢量化支持:参考 matVec[offset+i] 具有未对齐访问
备注 #15389:矢量化支持:参考 matVec[offset+i] 具有未对齐访问
备注 #15381:矢量化支持:在循环体内部使用未对齐的访问
备注 #15305:矢量化支持:矢量长度 4
备注 #15399:矢量化支持:展开因子设置为 4
备注 #15309:矢量化支持:归一化矢量化开销 0.118
备注 #15301:OpenMP SIMD 循环被矢量化
备注 #15450:未屏蔽未对齐的单位步幅负载:1
备注 #15451:未屏蔽的未对齐单位步长存储:1
备注 #15475:--- 开始向量成本汇总 ---
备注 #15476:标量成本:7
备注 #15477:向量成本:4.750
备注 #15478:估计潜在加速:1.430
备注 #15488:--- 结束向量成本汇总 ---
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)