4

-O2 优化标志是否有可能重新排列代码,从而可能使多线程应用程序按预期工作?

作为我un-intended behavior在重新安排代码时的意思的一个例子:(由程序员)为每个线程创建的一个变量被移动到外部,#pragma omp parallal这样只创建一个副本,由所有线程共享。

4

1 回答 1

3

不,这不可能发生。如果编译器正在展开循环或者程序在编译器重新排序循环时崩溃,那么 OpenMP 将不是很有用。OpenMP 指令必须指定变量和并行范围的依赖关系和副作用,并且编译器在应用优化传递时会将它们考虑在内。

于 2013-04-22T21:45:00.597 回答