使用parallel_deterministic_reduce时Intel TBB调度耗时过长,求优化方法
如何降低Intel TBB的调度开销?
背景
我参考《Intel® oneAPI Threading Building Blocks应用中的调度开销》文档编写了测试程序,使用Intel VTune Profiler做性能分析时,发现arena_slot::get_task及TBB调度内部的调用栈占用了较多时间。
我尝试在代码中用tbb::task_arena ta(8);指定线程数,但性能没有明显提升,核心代码如下:
double VectorReduction(double* v, size_t n) { tbb::task_arena ta(8); double sum = ta.execute([&]() { return tbb::parallel_deterministic_reduce( tbb::blocked_range<double*>(v, v + n), 0.0, [](const tbb::blocked_range<double*>& r, double value) -> double { return std::accumulate(r.begin(), r.end(), value); }, std::plus<double>()); }); return sum; }
问题
请问有哪些方法可以减少Intel TBB的调度时间?
内容的提问来源于stack exchange,提问作者roderick
相关产品推荐
相关产品推荐

