Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于NS3和std::线程的并行仿真

基于NS3和std::线程的并行仿真
EN

Stack Overflow用户
提问于 2016-02-21 16:21:17
回答 2查看 2K关注 0票数 3

我正在使用NS3框架运行不同配置的with模拟。我想使用std::线程在一个进程中同时运行许多(数百)模拟。

下面是我的代码,并修改了一些配置:

代码语言:javascript
运行
AI代码解释
复制
void simulation(RateAdaptation    rate_adaptation,
                const bool        channel_fading,
                // In meters, between AP and station.
                const uint32_t    distance)
{
  ns3::SeedManager::SetSeed(++seed);

  ns3::NodeContainer station_node, ap_node;
  station_node.Create(1);
  ap_node.Create(1);

  ns3::YansWifiChannelHelper channel;
  channel.SetPropagationDelay("ns3::ConstantSpeedPropagationDelayModel");
  channel.AddPropagationLoss( "ns3::LogDistancePropagationLossModel");



  // About 130 lines of more configuration for the simulation and
  // function parameters.



  ns3::Simulator::Stop(ns3::Seconds(10.0));

  ns3::Ptr<ns3::FlowMonitor> flowmon;
  ns3::FlowMonitorHelper *flowmonHelper = new ns3::FlowMonitorHelper();
  flowmon = flowmonHelper->InstallAll();

  ns3::Simulator::Run();
  ns3::Simulator::Destroy();
  flow_output(flowmon, flowmonHelper);
}

int main(int argc, char *argv[])
{
  std::vector<std::thread> jobs;

  for (uint32_t i = 0; i < 20; ++i)
  {
    uint32_t varying_distance = 5*(i+1);

    jobs.push_back(std::thread(simulation,
                               RateAdaptation::Aarf,
                               false,
                               varying_distance));
  }

  for (auto it = jobs.begin(); it < jobs.end(); ++it)
  {
    it.join();
  }

  return 0;
}

当我只为作业中的一个作业运行这段代码时,它工作得很好,但是对于任何更大的数字(例如两个),我得到的输出如下:

代码语言:javascript
运行
AI代码解释
复制
assert failed. cond="SystemThread::Equals (m_main)", msg="Simulator::ScheduleDestroy Thread-unsafe invocation!", file=../src/core/model/default-simulator-impl.cc, line=289
terminate called without an active exception
Command ['[redacted]'] terminated with signal SIGIOT. Run it under a debugger to get more information (./waf --run <program> --comm    and-template="gdb --args %s <args>").

实际上,在瓦伦丁运行它会带来数百个问题。

两个问题:

  • 我是否可能做错了什么,而NS3应该支持这一点?
  • 知道NS3不能并行运行多个模拟吗?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-22 23:14:41

简短的回答是:你不能用ns-3来完成这个任务。

长篇大论的答案是:使用多个进程而不是多个线程( ns-3库维护不受多线程一致保护的全局状态)。

我建议使用ns-3 python包装器轻松设置并行多处理作业。如果您想在默认的跟踪设置之外执行跟踪,这可能并不简单(在本例中,您可能需要在C++中执行自己的跟踪,在python中进行拓扑设置)

票数 1
EN

Stack Overflow用户

发布于 2016-02-25 20:17:50

我在这方面的工作是注释掉默认的2断言检查,然后新线程运行良好:

DefaultSimulatorImpl::调度(时间控制与延迟,EventImpl *事件){

// NS_ASSERT_MSG (SystemThread::Equals (m_main),“模拟器:调度线程-不安全调用!”);//第231行.}

DefaultSimulatorImpl::ScheduleNow {

// NS_ASSERT_MSG (SystemThread::Equals (m_main),“模拟器:ScheduleNow线程-不安全调用!”);//第284行.}

然后运行与valgring,以验证潜在的种族/mem问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35543906

复制
相关文章
TRTC上下行无声怎么处理
打开监控仪表盘,输入 sdkappid 和 roomid,并切换到问题用户的通话详情页面,之后再切换到音频详情页卡。如果音频发送码率不正常(持续小于16kbps),则为上行无声;如果音频接受码率不正常(持续小于16kbps),则为下行无声。
TRTC小百科
2021/10/11
2.7K0
python3.6 输入多行,输出多行
import sys result=[] for line in sys.stdin:     if line[0] is '\n':         break     score = line.split()     score=list(map(int,score))     n=score[0]     score=score[1:]     scoresum=sum(score)-min(score)-max(score)     sc=float(scoresum)/(n-2)     result.append(round(sc,2)) for i in result:     print(format(i,'.2f'))
py3study
2020/01/09
2.7K0
Java中Scanner的用法:单行/多行输入
以三行输入为例,第一行输入两个数字m,n,分别表示数组num1和num2的长度,第二行和第三行输入num1和num2的元素,以空格分隔。
全栈程序员站长
2022/09/09
2.2K0
Java中Scanner的用法:单行/多行输入
问与答124:如何根据输入值进行动态筛选?
Q:我想在工作表中应用动态筛选,当我在文本框中输入时,Excel会根据我输入的数据动态显示工作表中与输入值相匹配的数据,如何实现?
fanjy
2021/05/07
2.2K0
解决爬虫上下行传输效率问题的实用指南
嗨,大家好!作为一名专业的爬虫程序员,我们经常会面临上下行传输效率低下的问题。在处理大量数据时,如果传输效率不高,可能会导致爬虫任务速度慢,甚至中断。今天,我将和大家分享一些解决爬虫上下行传输效率问题的实用指南,希望能帮助大家提高爬虫任务的效率。
用户614136809
2023/08/16
1660
「译文」如何在YAML中输入多行字符串?
👉️URL: https://stackoverflow.com/questions/3790454/how-do-i-break-a-string-in-yaml-over-multiple-lines 📝Description: In YAML, I have a string that's very long. I want to keep this within the 80-column (or so) view of my editor, so I'd like to break the str
东风微鸣
2022/04/22
5.6K0
「译文」如何在YAML中输入多行字符串?
Linux下,使用speedtest测试网络的上/下行速率
speedtest是一个用Python编写的轻量级Linux命令行工具,在Python2.4至3.4版本下均可运行。它基于Speedtest.net的基础架构来测量网络的上/下行速率。安装speedtest很简单——只需要下载其Python脚本文件。
用户8851537
2021/07/26
2.7K0
CPU中的上下文(上)
Linux是多任务操作系统,cpu划分固定时间片,分给每个进程,当前进程时间片执行完毕,将挂起,运行下一个进程。而进程运行时,需要到寄存器中获得要运行的指令和指令所在内存的位置。
陈不成i
2021/05/24
6190
连续多行输入--C++ 中字符串标准输入的学习及实验(续篇)
编程中常常会用到连续多行输入的情况,如果事先知道要输入多少行的话,可以直接定义一个变量,然后用循环就可以实现了,但有时候事先并不知道,要输入多少行,于是就可以用到输入流碰到文件终止符的情况了,具体的操作就是ctrl+Z,然后按下回车键 程序例1 1 #include<iostream> 2 #include<string> 3 #include<vector> 4 using namespace std; 5 6 int main() 7 { 8 int num; 9 v
用户1215536
2018/02/05
3.8K0
extjs7 combobox 根据输入值执行远端查询过滤选项源码分析
版本 extjs 7.4.0 classic 源码 ext-classic/src/form/field/Base.js // 初始化事件时将onFieldMutation函数绑定到propertychange,textInput事件上 initEvents: function() { var me = this, inputEl = me.inputEl, onFieldMutation = me.onFieldMutation, events =
路过君
2021/12/16
9730
一个都不能少!多行业暴露下行业因子收益研究
最近,公众号测试了数库的行业分类数据,其基于上市公司的产品收入分项数据,能够更细致的刻画跨行业经营的上市公司的行业属性。基于该行业分类构建风险模型,相对于单一行业分类的体系,有两点优势:首先能明显的提高模型的解释度,其次提纯后的行业纯因子组合之间的相关性明显降低,更有利于在组合优化的过程中控制行业风险的暴露。
量化投资与机器学习微信公众号
2019/12/17
2.8K0
一个都不能少!多行业暴露下行业因子收益研究
用R根据logFC和p值批量标注基因上下调的N种方法
情景:假如有下面这些基因 expr logFC p.value gene1 2.4667984 -2.9302068 0.07878848 gene2 1.4482891 -2.9680565 0.04675735 gene3 0.2481085 0.1787332 0.01685758 gene4 0.4244537 -1.0029163 0.02281603 gene5 1.6186835 -1.8350010 0.07323936 gene6 3.3965326
Y大宽
2019/12/19
8.5K0
FPGA上如何求32个输入的最大值和次大值:分治
当然,输入的位宽可能会影响最终的解题思路和最终的实现可能性。但位宽在一定范围内,譬如8或者32,解题的方案应该都是一致的,只是会影响最终的频率。后文针对这一题目做具体分析。(题目没有说明重复元素如何处理,这里认为最大值和次大值可以是一样的,即计算重复元素)
sea-wind
2019/07/31
3.5K0
FPGA上如何求32个输入的最大值和次大值:分治
Oracle-分析函数之取上下行数据lag()和lead()
这两个函数是偏移量函数,可以查出一个字段的上一个值或者下一个值,配合over来使用。
小小工匠
2021/08/16
9610
微信小程序开发实战(9):单行输入和多行输入组件
input组件用于录入单行文本,尽管input的基本功能是文本录入,但该组件的属性还是比较多的,也比较复杂。下面是input属性的属性及其含义。
蒙娜丽宁
2020/07/16
3.1K0
微信小程序开发实战(9):单行输入和多行输入组件
C++从键盘输入多行数据
使用 cin输入数据、vector创建数组存储数据,第一行输入两个数n, m,表示输入输入数据是 n 行 m列的二维数组,代码如下:
嵌入式视觉
2022/09/05
1.1K0
C++从键盘输入多行数据
vue根据下标获取数组中的值_document.getElementBy
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/10/03
4.4K0
Sql Server 中 根据具体的值 查找该值所在的表和字段
在我们的工作中经常遇到这样一个问题,在页面中保存一条数据,有个字段值为“张三”,但是,不知道这条数据保存在了哪个表中,现在我们想要追踪该值是存储到了那个表的那个字段中,具体要怎么操作呢?下面我们可以借助存储过程来解决这一问题
jamesjiang
2022/11/20
7.2K0
Sql Server 中 根据具体的值 查找该值所在的表和字段
站在行式存储的肩膀上实现列式存储
之前简单介绍了一下列式存储和其起源:和谐号为啥快?因为铁轨是列式存储! , 列式存储的起源:DSM 。在人们发现了列式存储的优点之后,就开始设计列存系统了。这些系统基本都是从头设计实现的。但是牛顿说过,要站在巨人的肩膀上。那么能不能在一个传统关系数据库基础上应用列式存储的思想,让其达到列式存储的效果呢?
Apache IoTDB
2020/09/27
7350
站在行式存储的肩膀上实现列式存储
点击加载更多

相似问题

如何删除NA值和上下行

19

如何在()中获得上下行的索引值

16

根据bash中的字符串删除多行和以下行

31

根据以下行中的值读取行

30

如何根据列值在行上循环操作?R

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档