这几天在研究OpenCV+TBB,目前只看了最简单的parallel_xx操作。
的确用起来非常方便,实现了一种“任务”级别的并行。
下载:
http://threadingbuildingblocks.org 可能被和谐
另外还有包装在Intel Parallel Studio XE里的版本,但是要收费的,可以试用30天,大家自己google。
安装:
单独下载的版本解压就可以了,集成版安装的时候默认就选上了。
带着TBB编译OpenCV,见之前的一篇blog:
http://blog.csdn.net/twilightgod/article/details/6692766
使用:
用CMake生成的时候实际上是在文件cvconfig.h里写上了#define HAVE_TBB
OpenCV对TBB进行了一些包装,具体在module\core\include\opencv2\core\internal.hpp
包装了parallel_for, parallel_do, parallel_reduce, BlockedRange。
在源码中能看到很多#ifdef HAVE_TBB的地方,这些都是OpenCV已经写好的优化的地方,如果你没有TBB也会有串行的代码。
需要注意的是,如果在自己的代码中用,
#include "opencv2/core/core.hpp"
#include "opencv2/core/internal.hpp"
得在之前加上#HAVE_TBB
TBB本身的使用最好就是看官方文档和sample了,很详细,还有做好的vs工程可以调用。
欢迎交流。