Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
-O2 优化标志是否有可能重新排列代码,从而可能使多线程应用程序按预期工作?
作为我un-intended behavior在重新安排代码时的意思的一个例子:(由程序员)为每个线程创建的一个变量被移动到外部,#pragma omp parallal这样只创建一个副本,由所有线程共享。
un-intended behavior
#pragma omp parallal
不,这不可能发生。如果编译器正在展开循环或者程序在编译器重新排序循环时崩溃,那么 OpenMP 将不是很有用。OpenMP 指令必须指定变量和并行范围的依赖关系和副作用,并且编译器在应用优化传递时会将它们考虑在内。