2013-08-28 37 views
0

OpenMP的支持,我有這樣的代碼在Visual C++ 2012:/MP不能夠在VS2012

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)中選擇了多處理器選項。我應該選擇其他選項嗎?

回答

3

/MP選項意味着編譯將在多個處理器上運行,它的宗旨是「減少總的時間來編譯源文件」

它與OpenMP API無關。要啓用OpenMP支持,有一個/openmp選項(在文檔中還可以找到示例以及如何啓用OpenMP支持的說明)。

2

只需轉到Project Properties-> C/C++ - > Language-> Open MP Support,並將其切換爲Yes。