gpt4 book ai didi

c++ - OpenMP 有序并行化

转载 作者:太空狗 更新时间:2023-10-29 20:00:26 25 4
gpt4 key购买 nike

我正在尝试并行化以下函数(伪代码):

vector<int32> out;
for (int32 i = 0; i < 10; ++i)
{
int32 result = multiplyStuffByTwo(i);

// Push to results
out.push_back(result);
}

当我现在并行化 for 循环并将 push_back 部分定义为关键路径时,我遇到了一个问题,即(当然)输出结果的顺序并不总是正确的。如何让线程运行在 for 循环的最后一行以正确的顺序执行代码?谢谢!

最佳答案

您可以通过调用 out.resize() 设置输出 vector 的大小,然后通过索引设置值,而不是通过 push_back()

伪代码:

vector<int32> out; out.resize(10);
for (int32 i = 0; i < 10; ++i)
{
int32 result = multiplyStuffByTwo(i);

// set the result
out[i] = result;
}

但是,我建议使用“经典”数组。它们要快得多,而且并不难管理

关于c++ - OpenMP 有序并行化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6984867/

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