gpt4 book ai didi

c++ - 使用#pragma omp parallel for 创建多个线程失败

转载 作者:搜寻专家 更新时间:2023-10-31 01:11:02 25 4
gpt4 key购买 nike

全部。我是 OpenMP 的初学者。我想像这样使用 OpenMP:

float* Arrays;
int OneArrayLength = 100;
float* ArrayPointers[ArrayNums];
for(int i = 0; i < ArrayNums; i ++)
{
ArrayPointers[i] = Arrays + i*OneArrayLength;
}
#pragma omp parallel for
for i = 0 to LastPointer
{
Algorithm al;
al.process(ArrayPointers[i])
}

它并没有像我预期的那样工作。我可以编译代码并运行它,但速度并没有变快。

更新:感谢@nogard。将项目设置设置为支持 (openmp) 确实有效。还有一个原因我没能解决这个问题。我使用 Interl 诊断工具来获取 .gap 文件。它没有给出关于优化这个循环的任何信息,但它可以提供一些关于如何优化其他循环的建议。我对此感到困惑。

最佳答案

我认为问题在于您没有进行适当的项目设置:

Configuration Properties -> C/C++ -> Language -> Open MP Support -> Yes (/openmp)

默认情况下不设置此标志,因此 OpenMP 被简单地禁用

要测试 OpenMP 线程的数量,您可以运行这个简单的程序:

int iam = 0;
int np = 1;

#pragma omp parallel default(shared) private(iam, np)
{
#if defined (_OPENMP)
np = omp_get_num_threads();
iam = omp_get_thread_num();
#endif
std::cout << "Hello from thread " << iam << " out of " << np << std::endl;
}

关于c++ - 使用#pragma omp parallel for 创建多个线程失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15407306/

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