美文网首页
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多任务编程

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