草庐IT

tbb-flow-graph

全部标签

c++ - 使用 TBB 的并行性——我们的 list 中应该包含什么?

直到最近,并行编程的前景才引起了我的注意。从那时起,我使用了各种并行编程库。也许我的第一站是英特尔线程构建模块(TBB)。但是,经常成为瓶颈的是由于舍入等因素以及这些程序在不同处理器架构中的不可预测行为而导致的错误。下面是一段代码,用于计算两组值的PIL逊相关系数。它采用了TBB的非常基本的并行模式——*parallel_for*和*parallel_reduce*://AprogrammetocalculatePearsonsCorrelationcoefficient#include#include#include#include#include#include#include#i

c++ - tbb::concurrent_unordered_map::unsafe_erase 是否会使任何现有的迭代器失效?

我看到tbb::concurrent_unordered_map与std::unordered_map非常接近,同时对于并发是安全的。我也知道unsafe_erase对于insert等不是并发安全的。迭代器文档还声明任何现有的迭代器对于insert仍然有效,查找等问题是,unsafe_erase是否会使除被要求删除的迭代器之外的任何其他迭代器失效?std::unordered_map和std::map当然有这种行为,但它没有在任何地方的concurrent_unordered_map文档中指定。 最佳答案 tbb::unsafe_e

c++ - Boost Graph Library : How to use depth_first_visit, ColorMap 问题

初始问题:BoostGraphLibrary:PreventDFSfromvisitingunconnectednodes我正在尝试使用boost::depth_first_visit,但不知道如何提供ColorMap属性。我在这里尝试了示例中给出的方法:http://www.boost.org/doc/libs/1_58_0/libs/graph/example/loops_dfs.cpp我的(相关)代码:///Definevertexproperties.structNodeProperty{unsignedid;///Id.unsignedkind;///Kind.unsigne

Flow3d 11.1 lpbf 熔池仿真模拟 slm 选区激光熔化

Flow3d 11.1lpbf 熔池仿真模拟 slm 选区激光熔化1.该模拟设包含颗粒床以及建立过程(有视频),运用Flow3D11.1、EDEM软件以及Gambit软件(含安装包),步骤清晰内容详细。2.Flow3d软件操作过程介绍详细,包含二次编译文件及过程(含二次编译软件安装包),具有两种模型(各种常见物理模型具有涉及)包含单道,双道,激光功率,扫描速度,蒸汽反冲力,马兰格尼对流,热通量,孔隙,激光光斑直径,表面张力等都有涉及。3.对于模拟中需要的热源程序,蒸汽反冲力的程序都已经写好,后期可以根据自己的需求进行修改。程序中的变量都有具体的文档进行解释。4.10个g的学习视频包含常见报错以

c++ - Boost Graph Library 无向图 无平行边实现

我正在使用BoostGraphLibrary来处理无向图,并声明我的图有typedefproperty>VertexProperty;typedefadjacency_listUndirectedGraph;如您所见,OutEdgeList是std::set类型,我选择它是因为文档中说这种类型将强制不存在平行边。现在,我的程序读取一个文本文件,该文件指示节点之间的边,创建节点(如果以前没有看到)并在它们之间添加边。我最近跑了大数据量的代码,发现奇怪的结果。几个小时后,我发现一些用户的度数比图中的顶点数多,所以我用一个简单的文本文件尝试了代码,该文件只描述了同一对节点之间的两条边,但源、

c++ - 如何将 boost::graph 算法与 listS、setS 作为顶点/边缘容器一起使用?

使用boost::graph库的boost示例通常使用像这样的图usingnamespaceboost;typedefadjacency_list,property>graph;因此它们工作得很好。但我有一个图表typedefadjacency_listgraph;并且算法不是开箱即用的。在大多数情况下,必须提供用于查找特定顶点索引(整数值)的vertex_descriptor的映射。我想检查我的图是否是平面图并计算它的平面嵌入。我提供了一个顶点索引图,它确实以这种方式工作,例如connected_components算法,但显然不适用于boyer_myrvold_planarity_

c++ - tbb 并发 HashMap 查找和插入

我目前正在使用tbb的并发HashMap来执行并发插入HashMap。每个键都是一个字符串,一个值是一个整数vector。我想实现以下目标:在插入过程中,如果键不存在,我将其插入并将值添加到其vector中。如果它存在,我只需将值添加到它的vector中。检查tbb并发HashMapAPI后,我注意到查找和插入函数都只返回bool值。那么,如果它存在,我该如何返回指向该键的指针呢? 最佳答案 有些方法在他们的参数中需要一个访问器。访问器基本上是一个指针加上scoped_lock保护对元素的并发访问。如果没有锁,一个元素可能会被并发修

c++ - 从 boost::labeled_graph 获取节点标签

我想在BGL的labeled_graph中检索标记节点的标签,但找不到执行此操作的方法。以下MWE演示了我正在寻找的内容://g++-O3question.cpp-oquestion.exe-I.--std=c++11-lprotobuf-lite-lpthread-lz-losmpbf#include#include#include#includetypedeflonglongnode_id_t;typedefboost::adjacency_listAdjGraph;typedefboost::labeled_graphLabeledGraph;intmain(){LabeledG

c++ - 权重映射作为 Boost Graph Dijkstra 算法中的函数

我正在使用BoostGraphLibraries,需要使用一个权重图,它不是常数,而是参数K的函数(即边成本取决于K)。在实践中,给定以下代码:#include#include#include#include#include#includestructEdge{Edge(floatweight_):weight(weight_){}floatweight;floatgetWeight(intK){returnK*weight;}};intmain(int,char**){typedefboost::adjacency_listgraph_t;typedefboost::graph_tr

c++ - 如何在 tbb 流程图中中止节点及其子节点的执行

我目前正在测试tbb的流程图功能。为了使用它,我必须能够中止图中某些节点的执行,包括所有依赖它的子节点,但让其他不依赖它的子节点继续执行。从主体抛出异常或调用task::cancel_group_execution()中止所有节点的执行。#include#include"tbb/flow_graph.h"usingnamespacetbb::flow;structbody{std::stringmy_name;body(constchar*name):my_name(name){}voidoperator()(continue_msg)const{if(my_name=="B")tbb