gpt4 book ai didi

c++ - 在 OpenMP 中并行化嵌套循环并使用更多线程执行内循环

转载 作者:行者123 更新时间:2023-11-30 17:49:30 24 4
gpt4 key购买 nike

我有这种嵌套循环:我想知道如何以最佳形式并行化它:

  1. 第二个和第三个 for 以及第五个和第六个 for 同时运行 时间

  2. 串行中的第一个和第四个

如果我有 24 个核心,并且想要将外部 for 划分为 16 个线程,并使用其余的线程来执行内部 for ,例如使用 8 执行第二个 for线程不止一个线程,我该怎么办?

void main()
{
//first_for
for(int y=0; y< height; y++)
{
//second_for
for(int x=0; x< width-1; x++)
{
func1();
}
//third_for
for(int x=0; x< width-1; x++)
{
func2();
}

}
//fourth_for
for(int x=0; x<width; x++)
{
//fifth_for
for(int y=0; y< height-1; y++)
{
func3();
}
//sixth_for
for(int y=0; y< height-1; y++)
{
func4();
}
}
}

最佳答案

除了已经说过的内容之外,您可能还想显式启用嵌套并行性。可以通过运行时的库调用或环境变量(对于 OpenMP)来实现此目的。

有关更多信息,请查看此 Oracle Docs .

关于c++ - 在 OpenMP 中并行化嵌套循环并使用更多线程执行内循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17798958/

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