LabVIEW使用实时跟踪查看器调试多核应用程序

news2024/9/23 7:18:17

LabVIEW使用实时跟踪查看器调试多核应用程序

随着多核CPU的推出,开发人员现在可以在LabVIEW的帮助下充分利用这项新技术的功能。并行编程在为多核CPU开发应用程序时提出了新的挑战,例如同步多个线程对共享内存的并发访问以及处理器关联。LabVIEW可自动处理大多数多线程任务,同时使用户能够灵活地将线分配给他们选择的CPU(或同一CPU的内核)。LabVIEW2014实时模块支持在PharLap ETS目标上具有最多12个内核的CPU。以前,即使目标有更多可用内核,该模块也仅支持8个CPU内核。

如果要开发实时应用程序,监视详细CPU使用情况和其他事件的最佳方法是从实时目标捕获执行跟踪。借助实时跟踪查看器,可以查看和分析实时任务的执行轨迹,包括虚拟仪器(VI)和操作系统(OS)线程。实时跟踪查看器由两部分组成:检测VI和跟踪查看实用程序,检测VI需要围绕要跟踪其执行的代码添加。跟踪查看实用程序用于查看捕获的执行跟踪。在LabVIEW实时模块和LabWindows/CVI实时模块的2013和先前版本中,实时跟踪观察器被打包为一个独立的工具包(实时执行追踪工具包)。

访问低级执行信息对于优化和调试实时应用程序至关重要,可以轻松识别抖动源,例如处理器关联、内存分配、优先级继承或争用条件。

由不同优先级的多个线程使用共享资源可能会导致应用程序出现意外行为。表1显示了一些共享资源以及应用程序中可能出现的潜在问题。

以下两个屏幕截图表示在嵌入式多核实时目标上运行的程序的执行跟踪。NILabVIEW中的并行编程是使用两个定时循环(TL)结构实现的。每个TL都分配给不同的CPU。给定TL中的所有代码将在同一CPU上执行。处理器关联将一直保留,直到程序完成执行。图1和图2清楚地显示了每个线程的CPU关联性。与给定CPU关联的线程将突出显示,而其余线程将灰显。另请注意在不同CPU上运行的线程的并行执行。此执行跟踪显示与CPU0关联的线程。其余线程灰显。

图1.此执行跟踪显示与CPU0关联的线程

图2.此执行跟踪显示与CPU1关联的线程。

共享资源

时间关键型线程(需要在确定性时间内执行的线程)使用共享资源可能会给实时应用程序带来额外的抖动。其中一个共享资源是LabVIEW内存管理器。它负责动态分配内存。

当内存管理器拥有正常优先级程序时,其余线程(包括时间关键线程)必须等待共享资源可用。在这种情况下,时间关键型线程不可避免地会引入抖动。为了解决此问题,线程调度程序临时提升正常优先级的应用程序,使其在时间关键型线程中运行,以便它可以更快地完成并释放内存管理器。这种现象称为优先级继承或优先级倒置。为了避免这种情况,NI建议避免使用共享资源。内存管理器的解决方案是为数组预分配内存。

当混合两种优先级调度方案时,有时会增强优先级继承-在VI级别和定时循环级别。例如,在图3中,可以看到一个时间关键型子VI(红色图标)和一个定时循环争夺相同的内存资源。时间关键型子VI和定时循环之间共享资源的竞争可能导致优先级继承。使用两种不同优先级分配方案的示例。

图3.使用两种不同优先级分配方案的示例。

图4是另一个程序的跟踪,该程序具有正常优先级子VI和共享公共资源(内存管理器)的时间关键子VI。绿色标志显示动态内存分配,橙色标志显示优先级继承。时间关键型线程的执行被中断,以便可以提升正常优先级子VI以在时间关键型线程中运行,从而更快地释放共享资源。这最终会影响时间关键子VI的确定性。绿色标志显示动态内存分配

图4.绿色标志显示动态内存分配(访问内存管理器)。

需要说明的是,上述的例程和文档,都是可以下载的,双击即可打开,其中压缩文件是可以采用粘贴复制的方式,拷贝到硬盘上。这不是图片,各位小伙伴看到后尝试一下,这个问题就不用加微信咨询了。有关LabVIEW编程、LabVIEW开发等相关项目,可联系们。附件中的资料这里无法上传,可去公司网站搜索下载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/357114.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于SpringBoot+vue的无偿献血后台管理系统

基于SpringBootvue的无偿献血后台管理系统 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背…

基于BIM技术建设的重庆来福士广场项目

1. BIM工程应用概况 1.1 工程概况 重庆来福士广场项目位于朝天门广场与解放碑之间,直面长江与嘉陵江交汇口。是集大型购物中心、高端住宅、办公楼、公寓式酒店和酒店为一体的综合体项目。由于本项目钢结构体量大、结构复杂,混凝土标号高、强度大…

树莓派centos7.9(armv7hl)安装最新版宝塔linux面板 2023-0219

内存卡或usb存储器容量建议不小于16GB 1.启用 EPEL 软件源 树莓派安装centos7.9(armv7hl)以及宝塔linux面板. 2023-2-16_mklpo147的博客-CSDN博客 2.使用gcc-6 树莓派centos7.9(armv7hl)安装并切换GCC-6版本. 2023-2-18_mklpo147的博客-CSDN博客 3.更新系统 yum install -y e…

第1讲-初步认识数据库系统(测试题总结)

一、测试题 数据库系统 包含 数据库管理系统 详细版: 数据库管理系统DBMS是数据管理软件,在用户和操作系统之间。 数据库系统DBS由数据库,数据库管理系统(及其应用开发工具)、应用程序和数据库管理员DBA组成的存储、管…

使用51单片机的GPIO输出占空比可调节的PWM波

一、前言 在一些单片机或微控制器中,通用GPIO可以被配置为产生PWM信号。PWM即脉冲宽度调制,是一种用于模拟输出的技术。它可以通过改变输出信号的脉冲宽度来控制电路中的电平,从而实现对电路的控制。 二、什么是PWM波? PWM波&a…

JavaSE-线程池(5)- 建议使用的方式

JavaSE-线程池(5)- 建议使用的方式 虽然JDK Executors 工具类提供了默认的创建线程池的方法,但一般建议自定义线程池参数,下面是阿里巴巴开发手册给出的理由: 另外Spring也提供了线程池的实现,比如 Thread…

Flink02:Flink快速上手(Streaming WorldCount)

一、Flink快速上手 使用 (1)先把Flink的开发环境配置好。 (2)创建maven项目:db_flink (3)首先在model中将scala依赖添加进来。 (4)然后创建scala目录,因为针…

Lesson5---NumPy科学计算库

5.1 多维数组 Python拥有出色的第三方库生态系统在机器学习中,需要把所有的输入数据,都转变为多为数组的形式。score[i, j]二维数组i,j都从0开始 score[5] [85, 72, 61, 92, 80] score[2,5] [[85, 72, 61, 92, 80],[85, 72, 61, 92, 80]] score[30,5…

Linux系统之iptables应用SNAT与DNAT

目录 SNAT 一.SNAT的原理介绍 1.应用环境 2.SNAT原理 3.SNAT转换前提条件 二.开启SNAT 1.临时打开 2.永久打开 三.SNAT的转换 1.固定的公网IP地址 2.非固定的公网IP地址(共享动态IP地址) 四.SNAT实验 1.实验环境准备 2.配置web服务器(192.168.100.100…

测试3.测试方法的分类

3.测试分类 系统测试包括回归测试和冒烟测试 回归测试:修改了旧的代码后,重新测试功能是否正确,有没有引入新的错误或导致其它代码产生错误 冒烟测试:目的是确认软件基本功能正常,可以进行后续的正式测试工作 按是否…

什么是 RESTful 风格?

一、什么是 REST ? REST即表述性状态传递(英文:Representational State Transfer,简称REST)是Roy Thomas Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。它是一种针对网络应用的设计和开发方式&#…

游戏开发 - 开发流程 - 收集

1.应用场景 主要用于了解,掌握游戏开发的整个流程。 2.学习/操作 1.文档阅读 复习课 | 带你梳理客户端开发的三个重点-极客时间 2.整理输出 2.1 游戏开发流程 -- 参考 按照游戏开发中的三大模块策划、程序、美术,画了一个图。 开发游戏的时候&#xff…

LeetCode171-Excel表列序号(进制转换问题)

LeetCode171-Excel表列序号1、问题描述2、解题思路:进制转换3、代码实现1、问题描述 给你一个字符串columnTitle,表示Excel表格中得列名称。返回该列名称对应得列序号。 例如: A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 …

linux shell 入门学习笔记3 shebang

shebang 计算机程序中,shebang指的是出现在文本文件的第一行前两个字符#! 在Unix系统中,程序会分析shebang后面的内容,作为解释器的指令,例如 以#!/bin/sh 开头的文件,程序在执行的时候会调用/bin/sh,也就…

[软件工程导论(第六版)]第5章 总体设计(复习笔记)

文章目录5.1 设计过程5.2 设计原理5.2.1 模块化5.2.2 抽象5.2.3 逐步求精5.2.4 信息隐藏和局部化5.2.5 模块独立5.3 启发规则5.4 描绘软件结构的图形工具5.4.1 层次图5.4.2 HIPO图5.4.3 结构图5.5 面向数据流的设计方法目的 总体设计的基本目的就是回答“概括地说,系…

2.19 索引和事务

一.联合查询面试问题:聚合查询与联合查询的区别聚合查询是行与行之间的数据加工聚合函数 :count,sum,avg...group by 进行分组,指定列的值,相同的记录合并到同一个组,每个组又可以分别进行聚合查询分组还可以指定条件筛选,如果分组之前指定条件 用where,如果对分组之后指定条件…

< CSDN周赛解析:第 28 期 >

CSDN周赛解析:第 27 期👉 第一题: 小Q的鲜榨柠檬汁> 题目解析> 解决方案👉 第二题: 三而竭> 解析> 解决方案> 拓展知识👉 第三题: 隧道逃生> 解析> 解决方案👉…

【人工智能AI】四、NoSQL进阶《NoSQL 企业级基础入门与进阶实战》

帮我写一篇介绍NoSQL的技术文章,文章的标题是《四、NoSQL进阶》,不少于3000字。帮我细化到三级目录,使用markdown格式。这篇文章的目录是: 四、NoSQL 进阶 4.1 NoSQL 高可用 4.2 NoSQL 数据安全 4.3 NoSQL 性能优化 4.4 总结 四、…

Vue:extends继承组件复用性

提到extends继承,最先想到的可能是ES6中的class、TS中的interface、面向对象编程语言中中的类和接口概念等等,但是我们今天的关注点在于:如何在Vue中使用extends继承特性。 目录 Vue:创建Vue实例的方式 构造函数方式&#xff1…

3D点云处理:点云聚类--FEC: Fast Euclidean Clustering for Point Cloud Segmentation

文章目录 聚类结果一、论文内容1.1 Ground Surface Removal1.2 Fast Euclidean Clustering题外:欧几里得聚类Fast Euclidean Clustering二、参考聚类结果 原始代码中采用的是pcl中的搜索方式,替换为另外第三方库,速度得到进一步提升。 一、论文内容 论文中给出的结论:该…