DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1018|回复: 0
打印 上一主题 下一主题

[待整理] NIDays2008新技术新体会——多核技术下LabVIEW编程

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-12 13:11:31 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
NIDays 2008 于11月18日在上海举行,课题涉及了很多方面。作为与非网特约工程师,我全程参加了主题演讲和专题讲座。本文只对专题二的LabVIEW 编程技巧下的“多核技术下LabVIEW编程的参考模式”做一些讨论。对这个问题的心得,是我在本届NIDays上最大的收获之一。
       现在我们使用的处理器很多已经是双核了,这就意味着我们写应用程序的时候得考虑怎样充分的使用双核这个特性来优化程序,同时,我们也得考虑由双核所带来的抢资源,死锁等并发问题。但正如任何一位便写过多线程代码的开发者告诉我们的那样,这是编程领域的最艰巨的任务。
LabVIEW是门图形语言,它是基于数据流的多线程的语言,所以编写多线程的程序是一件非常容易的事情,比如图(1):





        在这个程序中,独立的任务是自动进行并行的运行。从表面上看来,它的执行过程是同步的。从cpu的执行过程来看就不一定完全同步了。当cpu只是单核的情况下,cpu在执行这段程序的时候,其实是分了三个线程在执行的。也就是说,除非在cpu是3核,或是3个单核cpu的情况下,这段程序才可以真真的是“完全的”同时执行。
        很多人做的程序遇到过流水线模式,例如:数据采集,分析与记录。当只是单核的时候,程序如图(2)所示:



         但是当我们的CPU的core大于4时,我们就可以做成图(3)的模式了。



       每个Step使用的数据是由前一个Step在上一次Loop中生成的。在这个模式中,我们得注意的有一下几点:
        1)在程序开始和结束时,4各模块的处理,因为当第一次循环的时候,只有完成了step1 “采集”的工作,而下面的step2,step3,step4由于没有数据输入而没有执行。一直到第四次循环的时候,4个step才同时开始正常执行;同理,再结束循环的时候,采集结束了,可是下面的是step2,step3,step4还没有完成相应的处理。所以开头结尾的地方得进行特别的处理。
        2)当CPU没有达到4核的情况下,该程序在执行的过程中会出错,比如双核,每次只能处理其中的2个step,不能同时处理4个,在进行一次loop的时候,不能保证4个step产生新的数据,也不能保证上个loop产生的数据在这次loop都能进行处理。
        在程序中涉及到多线程的时候,得考虑到该计算机中core的数量,资源利用及程序开始和结束时相应的处理。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-8-8 06:48 , 耗时 0.094976 秒, 21 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表