使用-O2优化和OpenMP
Using -O2 optimization and OpenMP
是否有可能-O2优化标志重新排列代码,从而可能使多线程应用程序工作为非预期的?
当代码重新排列时,作为我所说的un-intended behavior
的一个例子:由程序员声明的要为每个线程创建的变量被移出#pragma omp parallal
,这样只创建一个单个副本,由所有线程共享。
不,这是不可能的。如果编译器正在展开循环,或者当编译器重新排序循环时程序崩溃,OpenMP就不是很有用了。OpenMP指令必须指定变量和并行作用域的依赖关系和副作用,编译器在应用优化传递时将它们考虑在内。
相关文章:
- 空基优化子对象的地址
- OpenMP阵列性能较差
- 关闭||运算符优化
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- OpenMP卸载说'fatal error: could not find accel/nvptx-none/mkoffload'
- 使用 GCC 卸载的 OpenMP 卸载失败,并出现"Ptx assembly aborted due to errors"
- 返回值优化:显式移动还是隐式
- 人脸跟踪arduino代码的优化
- 使用仅使用一次的变量调用的复制构造函数.这可能是通过调用move构造函数进行编译器优化的情况吗
- OpenMP:并行更新数组总是需要减少数组吗
- 纯函数,为什么没有优化
- 为什么 std::chrono 在测量循环和编译器优化的并行 OpenMP 的执行时间时不起作用?
- 使用 OpenMP 优化外循环并减少
- 如何使GNU GCC类似地优化OpenMP线程
- 对于循环在 gcc -O3 使用 OpenMP 优化后不会加速
- OpenMP 优化了 for 循环的调度
- 优化依赖循环openmp
- OpenMP优化不起作用
- 中值滤波器OpenMP优化
- 使用-O2优化和OpenMP