加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

LABVIEW 进阶 · 多线程工作

(2011-01-11 21:12:32)
标签:

labview

多线程

cpu

并行

    随着多核时代的来临,全新的并行程序架构也应运而生。然而即便是拥有着多核的硬件,软件上的开发依然前路漫漫。分析并行性和针对的并行算法设计极具挑战性,而实现的代码架构同样是艰巨的任务。

 

    作为图形化编程G语言的执行者, Labview 广泛应用于工业界的各个领域。有别于传统的文本编程, Labview 本身就是并行的程序开发结构。根据程序中的数据流分布, Labview 编译器能够自动识别并行模块并创建多线程。这种潜在并行化的多线程会根据程序效率将多线程安排在多核上(如果是多核计算架构体系的话)。

 

    各种编程结构中,循环是最为耗时和消耗资源的。一直运行的循环会让执行的线程负担很重,单个CPU时间将会达到100%,虽然这个循环占用的线程不会始终固定在同一个线程上。

 

http://s6/middle/5d06e239g9991dfebdab5&690进阶 · 多线程工作" TITLE="LABVIEW 进阶 · 多线程工作" />

http://s5/middle/5d06e239g9991e1492aa4&690进阶 · 多线程工作" TITLE="LABVIEW 进阶 · 多线程工作" />


    可以看到,并行排列的循环结构被分配到了不同线程上,并且根据运算量分配到了多核上,每个循环均占用了100% CPU时间。但是,占用满CPU的后果是系统对其他线程的反应得不到响应,例如界面的执行线程。因此程序中应当尽量避免CPU满占的情况。即使需要长时间的循环,绝大部分情况下循环中的动作不需要时刻不停的运算,因此添加延时函数或者配合其他程序结构可以有效的降低CPU的占用率。

 

http://s14/middle/5d06e239gdffb2ee67a0d&690进阶 · 多线程工作" TITLE="LABVIEW 进阶 · 多线程工作" />

 

    利用 Labview 中的定时循环(Timed Loop)结构可以把任务分配到指定的核上。结果表明,在第二颗核上的循环占用了100% CPU时间(总占用率25% ),而在指定的第三颗核上,即使是添加1毫秒的延时,都可以把相应CPU的占用率降低下来。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有