OpenMP 向量化:#pragma 向量对齐被忽略,如果设置了块大小的调度?

问题描述


我有一个关于 **#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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...