并行化数组whith tbb :: paralel for

时间:2018-01-24 22:44:11

标签: c++ arrays parallel-processing intel tbb

我是IntelTBB中的新手,我正在尝试并行化一个向量数组。这是函数,我将数组作为指针传递。

void calculate(map<int,string> &m, vector<order>* ord, auto&k, string &dir){

for(int i=0;i<k;i++){
//here I declare a series of variables

    for(int j=0; j<ord[i][j].size()-1; j++){
        // here I do a series of calculations with the values of
        // the array and I generate one file for each row of the array
        // with this calculations, to do this I declare more variables
     }


}


}

我想并行化这个函数,以便它可以同时处理数组的多行。我尝试使用parallel_for执行此操作,如下所示:

void calculate(map<int,string> &m, vector<order>* ord, auto&k, string &dir){

tbb::parallel_for(tbb::blocked_range<int>(0,k),[&](tbb::blocked_range<int>r)
{
for(int i=r.begin();i<r.end();i++){
//here I declare a series of variables

    for(int j=0; j<ord[i][j].size()-1; j++){
        // here I do a series of calculations with the values of
        // the array and I generate one file for each row of the array
        // with these calculations, to do this I declare more variables
     }


});


}

这个程序编译得很好,但是当它执行时,有时我会得到一个错误计算的结果(生成我需要的文本文件),但通常我会得到这样的错误:

TBB警告:应用程序请求完全异常传播,但构建链接库时不支持它 抛出'tbb :: capture_exception'的实例后终止调用

如何正确完成?

谢谢!

0 个答案:

没有答案