使用-O2优化和OpenMP

Using -O2 optimization and OpenMP

本文关键字:OpenMP 优化 -O2 使用      更新时间:2023-10-16

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

当代码重新排列时,

作为我所说的un-intended behavior的一个例子:由程序员声明的要为每个线程创建的变量被移出#pragma omp parallal,这样只创建一个单个副本,由所有线程共享。

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