- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用英特尔 TBB 来并行化一个内部循环(3 个循环中的第 2 个循环),但是,只有当内部 2 个循环的规模很大时,我才能获得不错的返回。
TBB 是否为主循环的每次迭代生成新线程?有没有办法减少开销?
tbb::task_scheduler_init tbb_init(4); //I have 4 cores
tbb::blocked_range<size_t> blk_rng(0, crs_.y_sz, crs_.y_sz/4);
boost::chrono::system_clock::time_point start =boost::chrono::system_clock::now();
for(unsigned i=0; i!=5000; ++i)
{
tbb::parallel_for(blk_rng,
[&](const tbb::blocked_range<size_t>& br)->void
{
:::
值得注意的是 openMP(我正试图删除它!!!)没有这个问题。
我正在编译:
英特尔 ICC 12.1 在 -03 -xHost -mavx
在英特尔 2500k(4 核)上
编辑:我真的可以改变循环的顺序,因为输出循环测试需要用基于循环结果的谓词替换。
最佳答案
不,TBB 不会为每次调用 parallel_for
生成新线程。实际上,与每个可能启动一个新线程组的 OpenMP 并行区域不同,TBB 与同一个线程组一起工作,直到所有 task_scheduler_init
对象被销毁;并且在隐式初始化的情况下(省略 task_scheduler_init
),将使用相同的工作线程直到程序结束。
所以性能问题是由其他原因引起的。根据我的经验,最可能的原因是:
schedule(static)
工作得很好,每次都确定性地重复完全相同的分区,而 TBB 的工作窃取调度器有显着随机性。将 blocked_range 粒度设置为 problem_size/num_threads 可确保每个线程一个工作,但不保证相同的工作分配; affinity_partitioner
应该可以帮助解决这个问题。关于C++ intel TBB 内循环优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9299474/
我在这里打破了头,请帮忙。 我正在抓取一个网站。 .MyElement 容器包含我尝试获取的 gif 或 jpg 源 url。 我在我的 node.js 应用程序中使用基于 Cheerio 的 .ea
尝试使用 dictionaryWithObjectsAndKeys 向字典添加值,我想使用 for 循环添加对象,但我找不到正确的出路,请帮忙,使用 for 循环仅显示最后一个值,其他值不出现.看起来
我在 for 循环中有一个 lambda,lambda 中有循环变量参数。当我运行它时,我希望输出数字 0-9。但由于它是一个 lambda,x 不会立即得到评估。 for( int x =
我正在尝试在 C# 中的循环内插入一条数据库记录。 当我像这样对值进行硬编码时它会起作用: string query3 = "INSERT INTO furniture (room_id,me
仍在处理我在 Haskell 中的 SHA1 实现。我现在有了一个可行的实现,这是内部循环: iterateBlock' :: Int -> [Word32] -> Word32 -> Word32
我试图在具有相同类名的 div 内循环。这是为了获得正确的查询字符串,我想稍后将其用于 getJSON 。问题是我无法从 div 中获取各种参数... 这是创建 div 的代码(这个工作正常,我用 C
我想要实现的是 Qt Widget 循环。 简单的例子: UI_dialog 是一个 QDialog,接受后它将打开 UI_mainwindow,它是一个 QMainWindow。 UI_mainwi
谁能解释一下这个算法的时间复杂度是多少? for (i = 1; i = n + n/2 + n/3 ... n/n但是是 < n + 1 + n/2 + 1 + n/3 + 1 + n/4 + 1.
这个问题已经有答案了: JavaScript setTimeOut doesn't seem to work like I expect (1 个回答) 已关闭 5 年前。 为了最佳实践,JS 的相对
我在 Multimap 中创建了 Integer 和 Multimap,并且尝试循环获取键和值。然而,对于 Multimap,它以数组形式返回,我无法删除该数组并仅获取 int。 这是我的代码 pub
我想遍历我所有的 delicious.com 书签并在它们周围添加一个链接... 这是我的测试站点: http://dev.thomasveit.com/json.html $(document).r
我正在尝试执行一些逻辑,它将编辑 minheap.heapList 的长度。我对 Promises 还很陌生,所以我不知道如何解决这个问题。在 while 循环 中,我还将调用一些 async 函数。
我是 VBA 新手,刚开始学习循环。 这是我的代码: sub worksheet_change(byval target as range) application.screenupdating =
我在 R 中运行以下脚本。 如果我使用 %do% 而不是 %dopar% 脚本工作正常。但是,如果在外循环中我使用 %dopar% 循环将永远运行而不会引发任何错误(内存使用量不断增加,直到内存不足)
我有一个 case 语句,如 1) 2) 3) ... 如下,其中 1) 格式 case 有多个 if else 条件。我想在无效条件下重复特定情况。当用户首先选择 1 时,它会询问果汁的名称。接下来
我正在尝试将 html block 传递给电子邮件服务 Nodemailer JS 函数(我使用的是 Node.JS)。我有一个items需要在电子邮件中发送的数组: items = [ { n
我在 page.evaluate 方法中有一个循环。该循环迭代一个查询选择器,该选择器从页面中文本元素的多个实例捕获innerText。 我收到错误评估失败:无法读取“innerText”的属性 我尝
我无法理解如何为下面的资源创建循环。我需要基于嵌套在“维度”块中的变量“实例”创建多个资源。根据我阅读一些文档后的理解,我应该使用 for_each 参数,但是我似乎无法弄清楚。 resource "
我是一名优秀的程序员,十分优秀!