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,如果我尝试回答