回 帖 发 新 帖 刷新版面

主题:矢量化与OpenMP

想在程序中加入语句 !DEC$ IVDE P使do循环矢量化,这个已经可以实现了,并且算出的结果也是正确的,但在这个do循环上加入OpenMP语句之后,就矢量化不了了,请问这是为什么,矢量化和并行之间矛盾吗?

回复列表 (共3个回复)

沙发

可以同时使用,不代表可以对一个code block同时用openmp和矢量化。
矢量化只能工作在最内层,openmp一般工作在外部大循环。

板凳

我想对一个do循环同时用openmp和矢量化,能做到吗?
貌似它们同时来应该不矛盾啊,我的理解是:OpenMP是调动了N个CPU,而矢量化是把一个CPU的单指令多数据能力调动出来

3 楼

[quote]我想对一个do循环同时用openmp和矢量化,能做到吗?
貌似它们同时来应该不矛盾啊,我的理解是:OpenMP是调动了N个CPU,而矢量化是把一个CPU的单指令多数据能力调动出来[/quote]
话是这样说的,不过别忘了自动的意义,auto不会那么智能,你用了openmp,那么自动向量器会认为再进行向量化会造成某些问题。
如果你确认没问题,那么试图加入/Qansi-alias(Windows)或-ansi-alias(Linux),来通告编译器你并没打破规则。

我来回复

您尚未登录,请登录后再回复。点此登录或注册