- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我对英特尔 TBB 流图性能进行基准测试的尝试。这是设置:
continue_msg
到 N
后继节点broadcast_node<continue_msg>
)t
秒。Tserial = N * t
Tpar(ideal) = N * t / C
,其中 C
是核心数。Tpar(actual) / Tserial
以下结果显示了加速作为单个任务(即主体)处理时间的函数:
t = 100 microsecond , speed-up = 14
t = 10 microsecond , speed-up = 7
t = 1 microsecond , speed-up = 1
对于轻量级任务(其计算时间少于 1 微秒),并行代码实际上比串行代码慢。
1 ) 这些结果是否符合英特尔 TBB 基准?
2 ) 当有数千个任务每个花费不到 1 微秒的时间时,是否有比流程图更好的范例?
最佳答案
并行的开销
你的成本模型是错误的。
理想的并行计算时间是:
Tpar(ideal) = N * t / C + Pstart + Pend
其中 Pstart
是开始并行处理所需的时间,而 Pend
是完成并行处理所需的时间。 Pstart
大约为几十毫秒并不罕见。
我不确定您是否熟悉 OpenMP(尽管了解它是件好事),但是,就我们的目的而言,它是一种在线程团队之间划分工作的线程模型。下图显示了与线程组大小相关的一些命令的开销:
要点是让您的并行性(parallel for
行)可能很昂贵,并且会随着线程数量的增加而增长。结束并行性(barrier
行)具有相似的成本。
事实上,如果你看一下 TBB 的教程,第 3.2.2 节(“自动分 block ”)说:
CAUTION: Typically a loop needs to take at least a million clock cycles for parallel_for to improve its performance. For example, a loop that takes at least 500 microseconds on a 2 GHz processor might benefit from parallel_for.
实现更快的速度
加速此类代码的最佳方法是仅在有大量操作的情况下并行执行操作和/或调整执行工作的线程数,以便每个线程都有很多事情要做。在 TBB 中,您可以实现类似的行为,如下所示:
#include <tbb/parallel_for.h>
// . . .
if(work_size>1000)
tbb::serial::parallel_for( . . . );
else
tbb::parallel_for( . . . );
// . . .
您希望将 1000
调整为足够高的数字,以便您开始看到并行性带来的好处。
您还可以减少线程数,因为这会在一定程度上减少开销:
tbb::task_scheduler_init init(nthread);
TBB 还执行动态负载平衡(参见 here)。如果您希望循环迭代/任务具有广泛的运行时间分布,这很好,但如果预期的运行时间相同,则表示不必要的开销。我不确定 TBB 是否有静态调度,但可能值得研究。
如果人们最终没有对 TBB 做出坚定的 promise ,那么在 OpenMP 中,您会执行以下操作:
#pragma omp parallel for if(work_size>1000) num_threads(4) schedule(static)
关于multithreading - 英特尔 TBB 流程图开销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48081943/
我正在为算法制作流程图,并且遇到了 else if 语句的一些问题。 对于像这样的 if 语句 if (something) {} else if (something) {} else {} els
我为 jQuery Flot 图表编写了一个插件,它允许您通过单击图表的线条来动态添加数据点,通过右键单击删除它们,还允许在 Canvas 上拖动这些点。 这工作正常,当您将鼠标悬停在某个点上或拖动一
我设计了一个flowchart概括地描述编程过程的工作原理。此过程的一部分涉及循环访问一组项目。我想知道是否有任何标准或半标准的方法来表示流程图中的“foreach”样式循环,这不涉及使用像 m =
这是关于生产以下产品的 EPR/库存管理的一般问题: 1) 组装2)拆卸 通常在组装时,我们生产的成品将作为库存进入库存。示例: 成品不错: 1x Desktop CPU 原 Material : 1
我有一个关于不喜欢/喜欢的折线图。正值应具有较深的绿色边框,红色值应具有较深的红色边框。此外,红点应该用红色填充,而不是绿色。 这就是它的样子! 这就是它应该的样子 几个小时后我无法得到任何解决方案,
我的对象大致如下所示: public class Object1 { public string connectionIn1 { get; set; } public string con
我正在使用 Flowchart来自 http://gojs.net/latest/samples/flowchart.html它工作正常。唯一的问题是,它没有 t display the toolba
我已经在互联网上搜索了几天使用 html 和 css 制作流程图(饼图和垂直图)的方法,但我没有找到任何东西。有人用 html 和 css 制作这些类型的图表并且可以提供帮助吗我? 最后我找到了一种方
我有一个图表,在 Y 轴上显示 0-100%,在 X 轴上显示四分之一。源数据包括: { date: '2015 Q1', numerator: 55, denominator: 105, p
Oracle sql执行流程图_SQL执行过程 1、sql语句的执行步骤: 1)语法分析,分析语句的语法是否符合规范,衡量语句中各表达式的意义。 2) 语义分析,检查语句中涉及的所有数据库对象是否
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
我正在尝试使用流程图在 xaxis 上显示时间 这是我的数据数组(时间、值) var time = [["13:33","0.04668"],["13:23","0.04856"],["13:12",
有人可以指点我一些教程或提供有关如何在 Dart 中创建图表/流程图的示例代码片段吗?简单的情况是有几个元素可以相互连接,并且可以读取哪个元素连接到哪里。有大量 JS 示例,但出于学习目的,我想采用
我是 D3.js 的新手。请注意,正在使用版本 4。 .HTML文件 (很多来自 here ): .node circle { fill: #fff; stroke: steelblue
我已经使用英特尔出色的 TBB 流程图库成功制作了一个应用程序原型(prototype)。它似乎工作得很好,但现在我需要将代码重构为生产就绪版本。 以前,我曾为这个特定领域使用过一些更大、更“过度开发
目前我正在尝试制作流程图,这是我目前得到的代码: #flowchart { width: 580px; text-align: center; fon
我需要编写一个 C++ GUI,这样用户就可以制作一个流程图/管道,方法是从工具栏中选择几个 block 并将它们放入一个窗口中,然后按照他想要的顺序连接它们,然后程序运行流程图。 (为简单起见,只考
我需要一个非常简单、直接的 CSS/HTML 流程图,格式如下: Node1 | Node2 | Node3 | Node4 | Node5 | Node6 我对 CSS 几乎一无
如果可能,还可以在 excel 应用程序中运行所有模块。 最佳答案 流程图会很有用。我从未见过类似的代码,但有一些 VBA 工具,您可能会觉得有趣。这些是我知道的:http://www.vitosha
我是 GNUradio 的新手,我正在制作一个 FM 接收器。我正在将数据记录到文件接收器中。但是我只需要1毫秒的数据。我如何指定这个时间,以便我的流程图在这个时间之后自动停止? 我还阅读了一些关于调
我是一名优秀的程序员,十分优秀!