写点什么

并行编程:并行层次(Parallel Hierarchies)模式

  • 2007-09-03
  • 本文字数:1173 字

    阅读完需:约 4 分钟

多核处理器的降临带来了新的性能潜力。然而, Ina Fried 说,硬件上如此的趋势,对于软件业是一个巨大的挑战,因为“当今的大多数软件并非为利用这个进步而构建的”。Intel 院士(Fellow) Shekhar Borkar 也评论说“软件巨臂们 [……] 走得还不够快”同时已经到了软件也该遵循摩尔定律(Moore’s Law)的时候了,也就是“每两年对并行量的支持能力”翻一番。(摩尔定律的观点指出现实中每过两年芯片的性能大约翻一番)。Borkar 相信软件开发实践必须改组整备工具以利用起提升的性能潜力。

在这个方向上,墨西哥国家自治大学(the National Automonous University of Mexico)数学系的 Jorge L. Ortega-Arjona 教授提出了一个新的并行编程架构模式(pdf 格式)。这个模式尝试对以下情况下的执行性能进行提高:

现有必要对一个有序数据集合重复进行一系列有序操作组成的运算。考虑这样一个程序,它的输出可以只是一个单个复杂运算的结果,此运算为一系列概念上有序、在不同层次上执行的简单操作,其目标不是为了取值,而是为了产生某些影响。一个高层次上的操作需要执行一个或多个更低层次上的操作。如果这样一个程序以串行方式执行,就可以把它看作一个子过程的调用链,一个接一个的进行求值。

他的并行层次(Parallel Hierarchies)模式是“对分层(Layers)模式的扩展”,把问题划分为若干分层组件,负责“向更复杂级别的层次提供操作或功能,同时把更简单的子任务委派给复杂级别次之的层次。”“通过允许‘同一层次上两个以上组件 [……] 同时存在,通常完成相同操作’引出”功能性并行的元素为:

在各层操作的执行过程中,通常高级别的层次只得等待低级别层次的结果。然而,如果每个层次通过多个组件来表示,它们就能够并行执行并且为新请求提供服务。自此,几个有序操作集合就能够被同一个系统,同时负载。几个运算则能够在时间上相重叠。

Ortega 教授提出的这个模式的几个已知用法包括“树形结构操作比如搜索树,其中为每个节点都建立一个搜索进程”。已列出的限制包括“并非每一个系统运算都能被构造出高效的层次结构,”当上方层次对下方层次有过多依赖(例如:典型的基于 Web 的应用)时,这个模式就不太好使了,并且进行正确的层次级别设计会相当复杂。

如果你同意 Jon Erickson所相信的“在所有开发者和架构师的视野中,并发[…] 应该位于最前端”,那关注一下这个领域的新兴研熬究比较好。

查看英文原文: Programming for Parrallelism: The Parallel Hierarchies Pattern - - - - - -

译者简介:岳立东,Ableverse 创始人,技术推广大使。开源项目 WoW (内含 ToB 对象数据库)和 SecureJSH 创建者。目前致力于东道组件接合(Hosting Based Interfacing)理论研究,在此基础上的软件并行分布架构及对象数据库应用,技术博客 http://complystill.javaeye.com/ 。欲参与 InfoQ 中文站内容建设,请邮件至 china-editorial[at]infoq.com

2007-09-03 02:301798

评论

发布
暂无评论
发现更多内容

架构师的十八般武艺:架构决策

agnostic

架构决策

自定义 Hero 动画的路径

岛上码农

flutter 前端 移动端开发 安卓开发 8月月更

聊聊实际使用的电源转化电路,分享一些不同场合下的转3.3V电路

矜辰所致

电路设计 8月月更 电源转化

Python 教程之数据分析(3)—— Python中不同图表的数据可视化

海拥(haiyong.site)

Python 8月月更

Grafana Labs CEO 关于 Grafana Mimir 的问题答复

Grafana 爱好者

Mimir

【Django | 项目搭建】快速搭建自己的项目

计算机魔术师

8月月更

【SpringBoot 一】SpringApplication启动类的Args详解

石臻臻的杂货铺

spring-boot 8月月更

Kubernetes源码学习之一:下载和编译源码

程序员欣宸

Kubernetes 8月月更

CR,我们在Review什么

agnostic

CR

HTML入门

楠羽

#开源

【超文本标记语言】:走进HTML的世界....

翼同学

html html5 HTML5, CSS3 8月月更

Jenkins 构建成功后发送邮件配置

宁在春

Docker jenkins 8月月更

「uTools」生成P站Logo插件

小鑫同学

8月月更

【Django | 增删改查】学生管理系统案例

计算机魔术师

8月月更

C++中转换构造函数与默认函数的优先级

计算机魔术师

8月月更

元器件选型实例(如何选一款合适的 DC-DC )

矜辰所致

电路设计 电源设计 8月月更 元器件选型

聊聊面试中的过滤器与拦截器

TimeFriends

8月月更

吹爆!阿里最新开源的这份Redis全栈小册,涵盖了Redis的所有操作

Java永远的神

Java 数据库 redis 程序员 面试

共36万字!为上岸Alibaba,我把Github上Java面试题都整理了一遍

退休的汤姆

Java 程序员 面试题 Java工程师 秋招

自阿里P8爆出1031道java面试题后,我在boss直聘狂拿千份Offer

退休的汤姆

Java 程序员 面试 阿里 秋招

Jenkins + Github + Nginx 自动化部署 Vue 项目

宁在春

Docker jenkins 8月月更

设计电商秒杀系统

Pengfei

趣味俄罗斯游戏开发心得

计算机魔术师

8月月更

理一理 OC/OD 门、开漏输出、推挽输出、图腾柱等概念

矜辰所致

电路设计 8月月更 电路基础

小米最新充电器最高支持210W闪充,成为行业内第一

科技怪咖

使用 Containerlab + Kind 快速部署 Cilium BGP 环境

Se7en

【算法实践】手把手带你快速实现插入排序

迷彩

Python 算法 插入排序 8月月更 折半插入排序

[CSS入门到进阶] 你真的了解 width height 吗?

HullQin

CSS JavaScript html 前端 8月月更

C语言基本的窗口开发

计算机魔术师

8月月更

常见性能测试场景概述

穿过生命散发芬芳

性能测试 8月月更

日拱算法:双指针解“救生艇”问题

掘金安东尼

算法 前端 8月月更

并行编程:并行层次(Parallel Hierarchies)模式_架构_Sadek Drobi_InfoQ精选文章