主题:矢量化与OpenMP
baccle
[专家分:190] 发布于 2010-11-15 15:17:00
想在程序中加入语句 !DEC$ IVDE P使do循环矢量化,这个已经可以实现了,并且算出的结果也是正确的,但在这个do循环上加入OpenMP语句之后,就矢量化不了了,请问这是为什么,矢量化和并行之间矛盾吗?
回复列表 (共3个回复)
沙发
dongyuanxun [专家分:7180] 发布于 2010-11-15 15:29:00
可以同时使用,不代表可以对一个code block同时用openmp和矢量化。
矢量化只能工作在最内层,openmp一般工作在外部大循环。
板凳
baccle [专家分:190] 发布于 2010-11-15 15:36:00
我想对一个do循环同时用openmp和矢量化,能做到吗?
貌似它们同时来应该不矛盾啊,我的理解是:OpenMP是调动了N个CPU,而矢量化是把一个CPU的单指令多数据能力调动出来
3 楼
dongyuanxun [专家分:7180] 发布于 2010-11-15 15:58:00
[quote]我想对一个do循环同时用openmp和矢量化,能做到吗?
貌似它们同时来应该不矛盾啊,我的理解是:OpenMP是调动了N个CPU,而矢量化是把一个CPU的单指令多数据能力调动出来[/quote]
话是这样说的,不过别忘了自动的意义,auto不会那么智能,你用了openmp,那么自动向量器会认为再进行向量化会造成某些问题。
如果你确认没问题,那么试图加入/Qansi-alias(Windows)或-ansi-alias(Linux),来通告编译器你并没打破规则。
我来回复