C++ 如何在Ubuntu12.04中为openCV项目设置多线程openMP?

C++ 如何在Ubuntu12.04中为openCV项目设置多线程openMP?,c++,multithreading,ubuntu,gcc,C++,Multithreading,Ubuntu,Gcc,我想使用#pragma omp parallel在我的for循环中执行多线程。因此,我正在编写以下代码: #pragma omp parallel for for(int i=0; i<square->total; i++) { ...... } 然后我做了cmake..,在终端得到了以下结果: --C编译器标识为GNU --CXX编译器标识为GNU --检查C编译器是否工作:/usr/bin/gcc --检查C编译器是否正常工作:/usr/bin/gcc--works --检测

我想使用
#pragma omp parallel
在我的
for循环中执行多线程。因此,我正在编写以下代码:

#pragma omp parallel for 
for(int i=0; i<square->total; i++)
{
......
}
然后我做了
cmake..
,在终端得到了以下结果:

--C编译器标识为GNU

--CXX编译器标识为GNU

--检查C编译器是否工作:/usr/bin/gcc

--检查C编译器是否正常工作:/usr/bin/gcc--works

--检测C编译器ABI信息

--检测C编译器ABI信息-完成

--检查CXX编译器是否工作:/usr/bin/c++

--检查CXX编译器是否正常工作:/usr/bin/c++--正常工作

--检测CXX编译器ABI信息

--检测CXX编译器ABI信息-完成

--尝试OpenMP C标志=[-fopenmp]

--检测到正在执行测试OpenMP_标志_

--检测到正在执行测试OpenMP\u标志\u-成功

--尝试OpenMP CXX标志=[-fopenmp]

--检测到正在执行测试OpenMP_标志_

--检测到正在执行测试OpenMP\u标志\u-成功

--找到OpenMP:-fopenmp

--配置完成

--生成“完成”

#pragma…
应在其自己的行上

#pragma omp parallel for
for(int i=0; i<square->total; i++)
{
......
}
#pragma omp parallel for
for(int i=0;itotal;i++)
{
......
}
确保不要忘记
#pragma
结尾处的

首先确保它与注释掉的
#pragma
行一起工作,然后添加该行就可以了(假设循环中的所有内容都可以并行,没有并发问题等等)

还要确保将
-fopenmp
传递给编译器和链接器,并且在顶部有
#include
pragma…
应该在它自己的行上

#pragma omp parallel for
for(int i=0; i<square->total; i++)
{
......
}
#pragma omp parallel for
for(int i=0;itotal;i++)
{
......
}
确保不要忘记
#pragma
结尾处的

首先确保它与注释掉的
#pragma
行一起工作,然后添加该行就可以了(假设循环中的所有内容都可以并行,没有并发问题等等)

还要确保将
-fopenmp
传递给编译器和链接器,并且在顶部有
#include
pragma…
应该在它自己的行上

#pragma omp parallel for
for(int i=0; i<square->total; i++)
{
......
}
#pragma omp parallel for
for(int i=0;itotal;i++)
{
......
}
确保不要忘记
#pragma
结尾处的

首先确保它与注释掉的
#pragma
行一起工作,然后添加该行就可以了(假设循环中的所有内容都可以并行,没有并发问题等等)

还要确保将
-fopenmp
传递给编译器和链接器,并且在顶部有
#include
pragma…
应该在它自己的行上

#pragma omp parallel for
for(int i=0; i<square->total; i++)
{
......
}
#pragma omp parallel for
for(int i=0;itotal;i++)
{
......
}
确保不要忘记
#pragma
结尾处的

首先确保它与注释掉的
#pragma
行一起工作,然后添加该行就可以了(假设循环中的所有内容都可以并行,没有并发问题等等)


还要确保您将
-fopenmp
传递给编译器和链接器,并且在顶部有
#include

@user2440724

我按照您的要求编写了代码示例:

#include <string>
#include <iostream>
#include <vector>
#include <omp.h>
using namespace std;
using namespace cv;
//----------------------------------------------------------
// MAIN
//----------------------------------------------------------
int main(int argc, char* argv[])
{
#ifdef _OPENMP 
#pragma omp parallel for
#endif
    for (int i = 0; i < 10; i++)
    {
      std::cout << "A" << std::endl;    
    }
    getchar();
    return 0;
}
#包括
#包括
#包括
#包括
使用名称空间std;
使用名称空间cv;
//----------------------------------------------------------
//主要
//----------------------------------------------------------
int main(int argc,char*argv[])
{
#ifdef\u OPENMP
#pragma-omp并行
#恩迪夫
对于(int i=0;i<10;i++)
{

std::cout@user2440724

我按照您的要求编写了代码示例:

#include <string>
#include <iostream>
#include <vector>
#include <omp.h>
using namespace std;
using namespace cv;
//----------------------------------------------------------
// MAIN
//----------------------------------------------------------
int main(int argc, char* argv[])
{
#ifdef _OPENMP 
#pragma omp parallel for
#endif
    for (int i = 0; i < 10; i++)
    {
      std::cout << "A" << std::endl;    
    }
    getchar();
    return 0;
}
#包括
#包括
#包括
#包括
使用名称空间std;
使用名称空间cv;
//----------------------------------------------------------
//主要
//----------------------------------------------------------
int main(int argc,char*argv[])
{
#ifdef\u OPENMP
#pragma-omp并行
#恩迪夫
对于(int i=0;i<10;i++)
{

std::cout@user2440724

我按照您的要求编写了代码示例:

#include <string>
#include <iostream>
#include <vector>
#include <omp.h>
using namespace std;
using namespace cv;
//----------------------------------------------------------
// MAIN
//----------------------------------------------------------
int main(int argc, char* argv[])
{
#ifdef _OPENMP 
#pragma omp parallel for
#endif
    for (int i = 0; i < 10; i++)
    {
      std::cout << "A" << std::endl;    
    }
    getchar();
    return 0;
}
#包括
#包括
#包括
#包括
使用名称空间std;
使用名称空间cv;
//----------------------------------------------------------
//主要
//----------------------------------------------------------
int main(int argc,char*argv[])
{
#ifdef\u OPENMP
#pragma-omp并行
#恩迪夫
对于(int i=0;i<10;i++)
{

std::cout@user2440724

我按照您的要求编写了代码示例:

#include <string>
#include <iostream>
#include <vector>
#include <omp.h>
using namespace std;
using namespace cv;
//----------------------------------------------------------
// MAIN
//----------------------------------------------------------
int main(int argc, char* argv[])
{
#ifdef _OPENMP 
#pragma omp parallel for
#endif
    for (int i = 0; i < 10; i++)
    {
      std::cout << "A" << std::endl;    
    }
    getchar();
    return 0;
}
#包括
#包括
#包括
#包括
使用名称空间std;
使用名称空间cv;
//----------------------------------------------------------
//主要
//----------------------------------------------------------
int main(int argc,char*argv[])
{
#ifdef\u OPENMP
#pragma-omp并行
#恩迪夫
对于(int i=0;i<10;i++)
{

std::您是否缺少一个
。哪个“for”和在哪里?
#pragma omp parallel for for(int i=0;itotal;i++)
是的,我尝试过……但与“我未在此范围内声明”相同的错误……但如果我删除此“pragma”然后填充程序runsOP,如果我尝试下面的答案没有帮助,请给我们一个完整但简单的示例(带有main()和#includes以及一个(简单的)循环体),包括您如何尝试编译。您缺少一个
for
。哪个“for”和哪里?
#pragma omp parallel for for(int i=0;itotal;i++)
是的,我试过了……但与“我没有在这个范围内声明”相同的错误……但是如果我删除了这个“pragma”内容,那么程序将运行SOP,如果我尝试回答