搜索历史
热搜词
利用数据流语言简化并行编程
电子工程专辑 | 2010-11-30 10:00

不管是修改现有应用程序还是编写全新代码,设计并行应用程序所面临的挑战要比顺序程序艰巨得多。

毫无疑问,目前常用的高层抽象和API极大简化了设计过程,但大多数方法仍需要人工识别并行代码部分,并要考虑竞态条件以及并行任务之间的同步等等问题。随着单颗芯片上的CPU内核数量不断增加,想要充分利用多核硬件优势的相关应用,很可能会遭遇并行编程的痛苦。

基于数据流的一类编程语言,不仅能显著简化针对今天的多内核处理器开发代码的过程,而且能够成为发挥未来更多内核CPU优势的关键策略。

顺序搜索

在寻求并行编程挑战的解决方案时,首先认识到目前编程语言和并行处理器架构之间的不匹配,是很有帮助的。

随着处理器硬件的发展,嵌入式工程师和计算机科学家编写的程序通常都与硬件结构直接相关。在最基本的层次,这种概念在汇编语言中非常突出,因为在汇编语言中都是直接操作处理器的寄存器。

现代编程语言

现代编程语言已经提升了其抽象层次,除了人工线程操作外,还提供基于任务的API和并行结构。但嵌入式编程有一个方面基本保持没变:编程是按顺序逐行方式进行的,所模拟的是在大多数微处理器上单线程执行的顺序行为。

这与流程图方法有很大区别,后者正是许多工程师针对某项应用展开头脑风暴时所追求的。流程图方法不是立即集中处理按照CPU架构要求的一组顺序步骤,而是让编程人员更直接地解决他们想要解决的问题,方法是集中精力于操作数据需要的算法上,以及这些算法之间的从属性。

另外,流程图是以直观可视方式表达并行过程(没有数据依赖性的过程)的一种自然选择。

传统的做法要求编程人员在CPU实现之前将流程图部分转换为顺序语句——这是不仅费时,而且对并行任务来说相当困难的任务。然而,经过十多年研发推出的编程语言,可以直接编码函数和数据依附信息,从而使转换步骤变得不再必要。参考数据流语言可以发现,它们有一个无法被忽略的重要优点:自动识别代码的并行部分并在多内核处理器上予以执行的能力。

简而言之,传统编程语言要求编程人员将他们的想法适应顺序执行模型,并人工识别代码的并行部分。而今天的数据流解决方案,能够使用智能编译器检测并行机制(图2),然后选择如何最佳调度顺序型CPU指令。这是一项根本性的改变,它能让开发人员集中精力解决手头的问题,而不是去处理底层硬件。

图2:数据流编译器可以自动识别代码并行部分,并在运行时通过调度在多内核CPU上执行。

阅读 参与讨论 评论(0)

强化五一假期效应 虹魔方发力大屏运营
 04月28日
强化五一假期效应 虹魔方发力大屏运营
倪健中会长:推动中国发起全球元宇宙大会联合会
 01月04日
倪健中会长:推动中国发起全球元宇宙大会联合会
第五届数智中国科技周·全球元宇宙大会(深圳站)收官战报...
 01月04日
第五届数智中国科技周·全球元宇宙大会(深圳站)收官战报来啦!
学术盛宴!人工智能国际治理学术论坛12月18日下午重磅举办!
 01月02日
学术盛宴!人工智能国际治理学术论坛12月18日下午重磅举办!