【发布时间】:2011-11-10 04:58:45
【问题描述】:
我使用 OpenMP 和 Intel TBB 并行化了图像卷积和 lu 分解。我正在1-8个核心上测试它。但是,当我在 OPenMP 和 TBB 的 1 个核心上尝试使用 set_num_threads(1) 和 task_scheduler_init InitTBB(1) 分别指定一个线程时;由于 TBB 开销,与顺序代码相比,TBB 性能显示出一些小的下降,但令人惊讶的是,OpenMP 在单核上没有显示任何开销,并且性能与顺序代码完全相同(使用 Intel O3 优化级别)。我正在使用 OpenMP 循环的静态调度。这是现实的还是我做错了什么?
【问题讨论】:
-
如果
num_threads到set_num_threads(num_threads)的参数仅在运行时(即来自用户输入)已知,是否也会发生这种情况?