我是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'的实例后终止调用
如何正确完成?
谢谢!