美文网首页
CV09_01:TBB多任务编程

CV09_01:TBB多任务编程

作者: 杨强AT南京 | 来源:发表于2020-03-15 17:24 被阅读0次

TBB与OpenCV

  • OpenCV中训练使用的多任务不是直接调用线程实现,而是使用TBB框架,线程构建块(TBB)可以轻松地编写并行C++程序,充分利用多核性能;具有可移植性、可组合性和可验证性。

下载与安装

  • 下载地址:https://github.com/intel/tbb/releases
  • 安装比较简单:解压后可以直接使用,需要设置PATH,确保dll可以被执行。

例子与编译

  1. 代码-并行找出1-100之间的素数
#include<iostream>
#include<tbb/tbb.h>
using namespace std;
using namespace tbb;

int is_prime(int x)
{
    int i;
    if (x <= 1) {       // 从2开始
        return 0;
    }
    for (i = 2; i * i <= x; ++i) {
        if (x % i == 0) {   /*合数 */
            return 0;
        }
    }
    return 1;
}
class FindPrime {
    public:
    void operator() (const blocked_range < size_t > &r)const {
        for (size_t i = r.begin(); i != r.end(); ++i) {
            if (is_prime(i)) {
                cout << i << " ";
            }
        }
    }
};
int main(int argc, char *argv[])
{
    size_t end = 100;   // 默认找1-100之间素数
    // 创建并行任务,每个任务处理一个素数的判定,并输出
    parallel_for(blocked_range <size_t> (0, end), FindPrime());
    cout << endl;
    return 0;
}

  1. 编译脚本
INCLUDES   = /I "C:\Program Files\tbb\include" 

LIBS       = /LIBPATH:"C:\Program Files\tbb\lib\intel64\vc14"  \
             /DYNAMICBASE \
                "tbb.lib"


CL_ARGS    = /EHsc  \
             /MDd \
             /source-charset:utf-8  \
             /execution-charset:utf-8 \
             /nologo

LINK_ARGS  = /DEBUG /MACHINE:X64 /NOLOGO

OUTFILE    = main.exe
# SOURCE     = tbb_main.cpp
SOURCE     = tbb_prime.cpp
OBJS       = tbb_main.obj

$(OUTFILE):$(SOURCE)
    @cl /c $(CL_ARGS) /Fo:$(OBJS) $(INCLUDES)  $(SOURCE) 
    @link $(LINK_ARGS) $(LIBS) /OUT:$(OUTFILE) $(OBJS)
clean:
    @del *.obj *.exe *.pdb *.ilk 2>/Nul

  1. 计算结果
体验TBB的多任务

相关文章

  • CV09_01:TBB多任务编程

    TBB与OpenCV OpenCV中训练使用的多任务不是直接调用线程实现,而是使用TBB框架,线程构建块(TBB)...

  • linux下安装intel的tbb库

    1、https://github.com/01org/tbb下载最新release版tbb源码包。 2、我的环境为...

  • 多任务编程

    一.多任务的介绍 学习目标 能够知道多任务的执行方式 1. 提问 利用现学知识能够让两个函数或者方法同时执行吗? ...

  • 重拾Java(4)-线程

    一、概述 Java对多线程编程提供了内置支持,多线程是特殊形式的多任务处理,所有现代系统都支持多任务处理。多任务处...

  • day24系统编程

    1python系统编程 1.1进程 1.1.1多任务的引入 单任务: 多任务: 说明: ·程序执行到os.fork...

  • 系统编程:多任务编程

    系统编程:多任务编程 1. 线程: 可以理解成执行代码的分支,线程是执行对应的代码的 1.1 线程的工作原理: ...

  • GIL

    Python的GIL是什么鬼 学习编程的时候,我们少会涉及到多任务。可是在python中使用多任务经常会提...

  • 多一分

    webcal://p07-calendars.icloud.com/published/2/TbB4otDpTal...

  • python_多任务编程

    多任务 多任务:在同一时间内执行多个任务多任务的目的:多任务的最大好处是充分利用CPU资源,提高程序的执行效率 ...

  • 03.多任务编程

    第三天:多任务编程 目标: 完成校花图片下载 http://www.521609.com/qingchunmein...

网友评论

      本文标题:CV09_01:TBB多任务编程

      本文链接:https://www.haomeiwen.com/subject/pehyehtx.html