gpt4 book ai didi

c++ - 不要在 GCC 中使用 -O3 标志优化特定循环

转载 作者:太空宇宙 更新时间:2023-11-04 07:30:33 25 4
gpt4 key购买 nike

<分区>

在我的代码中,我使用一个简单的 int 变量(名为 counter)来同步 4 个线程。

这是我的代码片段:

int counter = 0;
#pragma omp parallel shared(counter) num_threads(4)
{
while(counter != thread_id){
// What should I put here?
}
// Actions needed to be performed 'in order'
counter++;
// The rest of the code
}

我面临的问题是,如果我使用 -O3 优化标志,编译代码中的 while 循环会“消失”...例如,如果我在循环中放置一个 printf 行,while 就会发生,一切都会发生工作正常...

我应该在我的 while 循环中放什么,这样 -O3 才不会影响它的行为?

--- 编辑---

抱歉,缺少上下文...我需要创建在特定处理器上工作的线程组,因为我正在使用 NUMA 系统,所以我需要按顺序创建“团队创建”部分,以便我可以使用处理器亲和性...请参阅此相关问题: Specific thread order in C using GCC and OMP

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com