0

我在visual c++ 2012中有这段代码:

void Run()
{
    #pragma omp parallel for
    for(int imageNo=0;imageNo<4;imageNo++)
    {
        RunForOneImage(imageNo, Data[imageNo],
                       width, height,
                       OutputWidth, OutputHeight);  
    }
}

中的所有变量RunForOneImage都是局部变量,它不使用任何全局或类成员变量。

运行它时,我可以看到只有一个核心变得忙碌,其他核心处于空闲状态。

为什么这不是并行运行?

我在 Visual Studio (/MP) 中选择了多处理器选项。我应该选择其他选项吗?

4

2 回答 2

3

/MP选项表示编译将在多个处理器上运行,其目的是“减少编译源文件的总时间”

它与OpenMP API无关。要启用 OpenMP 支持,有一个/openmp选项(在文档中,您还可以找到一个示例以及如何启用 OpenMP 支持的说明)。

于 2013-08-28T13:05:22.260 回答
2

只需转到 Project Properties->C/C++->Language->Open MP Support 并将其切换为 Yes。

于 2013-08-28T13:54:18.350 回答