gpt4 book ai didi

c++ - 编译时出现TBB错误

转载 作者:行者123 更新时间:2023-11-27 23:59:38 25 4
gpt4 key购买 nike

我正在尝试执行以下代码

#include <iostream>
#include <cstring>
#include "tbb/tbb.h"

using namespace std;
using namespace tbb;

class Accumulate{
float& arr;
float* src;

public:
Accumulate(float& _arr, float* _src)
:arr(_arr), src(_src){}
void operator() (int i) const{
arr += src[i];
}

};

int main(int argc, const char * argv[]) {
float arr[4] = {1,3,9,27};
float sum = 0;
parallel_for(0, 4, Accumulate(sum, arr));
cout<< sum << endl;
}

我正在尝试使用 parllel_for 来计算总和,这需要 tbb 库。我下载了源代码 tbb 目录并将其粘贴到我的 xcode 项目目录中。

当我尝试编译上面的代码时,我似乎得到了以下错误未找到“tbb/internal/_flow_graph_types_impl.h”文件

我不确定我遗漏了什么,请指教

最佳答案

我可以在 TBB 仓库中看到这个文件:https://github.com/01org/tbb/blob/tbb_2017/include/tbb/internal/_flow_graph_types_impl.h

请确保您安装的 TBB 没有损坏。

题外话的建议,你的程序在 sum 上存在数据竞争,你可以使用 lambda 而不是显式仿函数:

int main(int argc, const char * argv[]) {
float arr[4] = {1,3,9,27};
atomic<float> sum = 0; // fixing data-race. Still, it's not recommended way
parallel_for(0, 4, [&](int i){
sum += arr[i];
});
cout<< sum << endl;
}

另请参阅 tbb::parallel_reduce 以使此代码正确、简洁且高效。

关于c++ - 编译时出现TBB错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40138885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com