双核机器使用openmp

http://www.opencv.org.cn/index.php?title=%E5%8F%8C%E6%A0%B8%E6%9C%BA%E5%99%A8%E4%BD%BF%E7%94%A8openmp&diff=next

Wikipedia,自由的百科全书

(修订版本间差异)
16:47 2007年4月16日的修订版本
Shiqi Yu (Talk | 贡献)

← Previous diff
13:16 2006年11月23日的修订版本
222.66.46.27 (Talk | 贡献)

Next diff →
第 2行:第 2行:
从opencv说明上得到 从opencv说明上得到
-一些可以使用 OPENMP 做并行处理 的函数 +" - 一些 函数 可以使用 OPENMP 做并行处理:
cvHaarDetectObjects, cvCalcOpticalFlowPyrLK, cvDistTransform (the new algorithm only), cvHaarDetectObjects, cvCalcOpticalFlowPyrLK, cvDistTransform (the new algorithm only),
- 
因此它们的运行速度在双核CPU上要快 ~50-80% , 当代码用 Intel compiler 或者 MSVC2005 因此它们的运行速度在双核CPU上要快 ~50-80% , 当代码用 Intel compiler 或者 MSVC2005
-编译时。 +编译时。"
于是实验一下. 于是实验一下.
第 24行:第 23行:
(可以搜索一下_OPENMP ,发现只有几个函数优化了 ) (可以搜索一下_OPENMP ,发现只有几个函数优化了 )
-https://p-blog.csdn.net/images/p_blog_csdn_net/hardVB/131404/o_openmp_opencv.JPG+[[Image:https://p-blog.csdn.net/images/p_blog_csdn_net/hardVB/131404/o_openmp_opencv.JPG]]
 +
2.编译问题 2.编译问题
- 我编译的时候出现这个错误 + 我编译的时候出现这个错误
- >./cvbgfg_gaussmix.cpp(343) : error C2039: “foreground_regions”: 不是“CvGaussBGModel”的成员 +7>./cvbgfg_gaussmix.cpp(343) : error C2039: “foreground_regions”: 不是“CvGaussBGModel”的成员
- > c:/Program Files/OpenCV/cvaux/include/cvaux.h(1300) : 参见“CvGaussBGModel”的声明 +7> c:/Program Files/OpenCV/cvaux/include/cvaux.h(1300) : 参见“CvGaussBGModel”的声明
- 最后修改cvaux.h里的 +最后修改cvaux.h里的
- CV_BG_STAT_MODEL_FIELDS 里面的 oreground_regions?/ 变成 oreground_regions*/ +CV_BG_STAT_MODEL_FIELDS 里面的 oreground_regions?/ 变成 oreground_regions*/
- 我觉得我是英文版XP的问题导致文件乱码,需要修改一下的 +我觉得我是英文版XP的问题导致文件乱码,需要修改一下的
3.编译完成用例子lkdemo测试一下,因为它用到了cvCalcOpticalFlowPyrLK , 3.编译完成用例子lkdemo测试一下,因为它用到了cvCalcOpticalFlowPyrLK ,
第 41行:第 41行:
去掉cvWaitKey(10); 去掉cvWaitKey(10);
- 在需要优化的地方加入 + 在需要优化的地方加入
- #pragma omp parallel +#pragma omp parallel
-最后发现可以利用CPU 51%-53% ,说明只是很少使用到了第二个CPU,而不加时平时是最多50% +最后发现可以利用CPU 51%-53% ,说明只是很少使用到了第二个CPU
 + 
 + ,而不加时平时是最多50%
而使用最简单的测试openmp的例子可利用CPU 100% 而使用最简单的测试openmp的例子可利用CPU 100%
第 51行:第 53行:
目前opencv提供的优化还太少,只有这么几个函数,实际上但感觉现在似乎不太需要openmp ,而瓶颈在硬盘IO,摄像头IO,内存IO等等 目前opencv提供的优化还太少,只有这么几个函数,实际上但感觉现在似乎不太需要openmp ,而瓶颈在硬盘IO,摄像头IO,内存IO等等
- 
5。附带最简单的测试openmp的例子 5。附带最简单的测试openmp的例子
-<pre> 
-#include "stdafx.h" 
-#include "omp.h" 
-int _tmain (int argc, _TCHAR * argv[])+#include "stdafx.h"
-{+#include "omp.h"
-#pragma omp parallel+ 
- for (;;)+int _tmain(int argc, _TCHAR* argv[])
- {+{
- int i = 0;+ 
- i++;+#pragma omp parallel
- int y = i;+for(; ; )
- }+{
- return 0;+int i = 0 ;
 +i++;
 +int y = i;
 +}
 +return 0;
} }
-</pre> 

13:16 2006年11月23日的修订版本

因为机器是双核。想到怎么才能更好应用opencv , 从opencv说明上得到

" - 一些函数可以使用 OPENMP 做并行处理: cvHaarDetectObjects, cvCalcOpticalFlowPyrLK, cvDistTransform (the new algorithm only), 因此它们的运行速度在双核CPU上要快 ~50-80% , 当代码用 Intel compiler 或者 MSVC2005 编译时。"

于是实验一下.

环境 :

机器配置 : windows XP 32 , 2G RAM , dual core intel 1.8G *2

软件 : opencv版本1.0 rc1 ,vc2005 中文简体

1.VC2005下首先需要设置一下,但是opencv提供的release openmp配置好像是针对win64版本,需要修改一下,我就自己建立了一套配置, 如图,记得打开/openmp选项, 需要打开的项目是 CV CXCORE CVAUX (可以搜索一下_OPENMP ,发现只有几个函数优化了 )

Image:Http://p.blog.csdn.net/images/p blog csdn net/hardVB/131404/o openmp opencv.JPG


2.编译问题

我编译的时候出现这个错误 7>./cvbgfg_gaussmix.cpp(343) : error C2039: “foreground_regions”: 不是“CvGaussBGModel”的成员 7> c:/Program Files/OpenCV/cvaux/include/cvaux.h(1300) : 参见“CvGaussBGModel”的声明 最后修改cvaux.h里的 CV_BG_STAT_MODEL_FIELDS 里面的 oreground_regions?/ 变成 oreground_regions*/ 我觉得我是英文版XP的问题导致文件乱码,需要修改一下的

3.编译完成用例子lkdemo测试一下,因为它用到了cvCalcOpticalFlowPyrLK ,

修改lkdemo.c的代码,需要将一些IO操作、空闲cpu的代码去掉 把 cvQueryFrame( capture );变成 frame = cvLoadImage("c://test1.bmp",1); 放到for()外边 去掉cvWaitKey(10);

在需要优化的地方加入

  1. pragma omp parallel

最后发现可以利用CPU 51%-53% ,说明只是很少使用到了第二个CPU

,而不加时平时是最多50%

而使用最简单的测试openmp的例子可利用CPU 100%

4。结论

目前opencv提供的优化还太少,只有这么几个函数,实际上但感觉现在似乎不太需要openmp ,而瓶颈在硬盘IO,摄像头IO,内存IO等等

5。附带最简单的测试openmp的例子

  1. include "stdafx.h"
  2. include "omp.h"

int _tmain(int argc, _TCHAR* argv[]) {

  1. pragma omp parallel

for(; ; ) { int i = 0 ; i++; int y = i; } return 0; }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值