老李分享: 并行计算基础&编程模型与工具 1
老李分享: 并行计算基础&编程模型与工具
在当前计算机应用中,对高速并行计算的需求是广泛的,归纳起来,主要有三种类型的应用需求:
- 计算密集(Computer-Intensive)型应用,如大型科学工程计算与数值模拟;
- 数据密集(Data-Intensive)型应用,如数字图书馆、数据仓库、数据挖掘和计算可视化等;
- 网络密集(Network-Intensive)型应用,如协同工作、遥控和远程医疗诊断等。
并行编程模型主要有三种:适用于共享内存的多线程编程模型,适用于分布内存的消息传递编程模型,混合编程模型。
在计算机系统中,处理器永远都是访问离自己最近的存储空间速度最快,比如L1 cache->L2->本地节点内存->远程节点内存/磁盘,而各层次的存储容量跟访问速度恰恰相反。并行计算中,并行算法的设计是决定性能的关键,有些问题天生具有良好的并行性,比如待处理数据集合可以被较好的去耦,而有些问题则需要复杂的公式推导和转换以适合并行计算。同时,还要避免计算过程中可能出现的瓶颈,任务划分要充分考虑负载均衡特别是动态负载均衡,“对等”的思想是维护负载均衡和保持可扩展性的关键之一,即在设计时尽量避免使用Master/Slave和Client/Server的模式。
1.并行机的体系
并行机的发展从SIMD到MIMD,衍生除了四种经典的体系结构模式:SMP(Symmetric Shared-Memory Multiprocessor,比如常用的多核机,可扩展性较差,处理器数目8~16个),DSM(Distributed Shared-Memory,物理存储器分布于各个处理节点,而逻辑地址空间采用统一编址,因此属于共享存储,访存时间受限于网络带宽),MPP(Massive Parallel Processor,由成百上千台处理机组成的大规模系统,国家综合实力的象征。。),机群系统(Cluster,互联的同构或异构的独立计算机的集合体,每个节点都有自己的存储器、I/O、操作系统,可以作为单机使用,节点之间采用商品网络互联,灵活性较强)。
硬件:多核CPU(Intel, AMD), GPU(Nvidia), CellBe(Sony&Toshiba&IBM -> game,包括一个主处理单元和8个协处理单元)
概念:数据总线 地址总线 控制总线 (寄存器)位数
老李分享: 并行计算基础&编程模型与工具 1的更多相关文章
- 老李分享: 并行计算基础&编程模型与工具 2
2.并行编程模型和工具 – MPI – MPI(Message Passing Interface)是一种消息传递编程模型,服务于进程通信.它不特指某一个对它的实现,而是一种标准和规范的代表,它是一种 ...
- 老李分享: 并行计算基础&编程模型与工具
在当前计算机应用中,对高速并行计算的需求是广泛的,归纳起来,主要有三种类型的应用需求: 计算密集(Computer-Intensive)型应用,如大型科学工程计算与数值模拟: 数据密集(Data-In ...
- 并行计算基础&编程模型与工具
在当前计算机应用中,对快速并行计算的需求是广泛的,归纳起来,主要有三种类型的应用需求: 计算密集(Computer-Intensive)型应用,如大型科学project计算与数值模拟: 数据密集(Da ...
- 老李分享:使用 Python 的 Socket 模块开发 UDP 扫描工具
老李分享:使用 Python 的 Socket 模块开发 UDP 扫描工具 poptest是业内唯一的测试开发工程师培训机构,测试开发工程师主要是为测试服务开发测试工具,在工作中要求你做网络级别的安全 ...
- 老李分享:《Java Performance》笔记1——性能分析基础 1
老李分享:<Java Performance>笔记1——性能分析基础 1.性能分析两种方法: (1).自顶向下: 应用开发人员通过着眼于软件栈顶层的应用,从上往下寻找性能优化的机会. ...
- 老李分享:android app自动化测试工具合集
老李分享:android app自动化测试工具合集 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨 ...
- linux基础编程:IO模型:阻塞/非阻塞/IO复用 同步/异步 Select/Epoll/AIO(转载)
IO概念 Linux的内核将所有外部设备都可以看做一个文件来操作.那么我们对与外部设备的操作都可以看做对文件进行操作.我们对一个文件的读写,都通过调用内核提供的系统调用:内核给我们返回一个file ...
- 3、TensorFlow基础(一) 设计思想与编程模型
1.TensorFlow系统架构 如图为TensorFlow的系统架构图: TensorFlow的系统架构图,自底向上分为设备层和网络层.数据操作层.图计算层.API层.应用层,其中设备层和网络层,数 ...
- 老李分享:qtp自动化测试框架赏析-关键字自动化测试框架
老李分享:qtp自动化测试框架赏析-关键字自动化测试框架 QTP从2005年继winrunner,robot逐渐退出历史舞台之后,占领主流自动化测试工具市场已经10年之久.当初为了提高在自动化测试 ...
随机推荐
- Redis之Sentinel高可用安装部署
背景: 之前通过Redis Sentinel 高可用实现说明和Redis 复制.Sentinel的搭建和原理说明大致已经介绍了sentinel的原理和实现,本文再次做个简单的回顾.具体的信息见前面的两 ...
- Delphi中TApplication详解
转自:http://blog.sina.com.cn/s/blog_4d6f55d90100bmv9.html TApplication是用于Delphi应用程序的类型,该类在单元forms中声明.T ...
- PHP字符串三种定义方式
PHP的字符串有三种定义方式:单引号 .双引号 .定界符 1.单引号:指定一个简单字符串的最简单的方法是用单引号(字符 ')括起来. 在被单引号括起来的字符串中,要再表示一个单引号,需要用反斜线(\ ...
- C# .NET更智能的数据库操作的封装
前述: 对数据库操作的封装,相信网络上已经有一大堆,ORM框架,或者是.NET本身的EF,都很好的支持数据库操作.这篇文章是分享自己所思考的,对数据库操作的简单封装.我对于这篇文章,认为被浏览者所关注 ...
- 第27篇 重复造轮子---模拟IIS服务器
在写程序的时候,重复造轮子是程序员的一个大忌,很多人对重复造轮子持有反对的态度,但是我觉得这个造轮子的过程,是对于现有的知识的一个深入的探索的过程,虽然我们不可能把轮子造的那么的完善,对于现在有的东西 ...
- 30分钟掌握 C#6
1. 只读自动属性(Read-only auto-properties) C# 6之前我们构建只读自动属性: public string FirstName { get; private set; } ...
- 构建Docker平台【第四篇】创建服务及扩缩容等操作
第一步:创建服务 1. 配置 nginx 的 yaml 文件 apiVersion: extensions/v1beta1 kind: Deployment metadata: name: my-ng ...
- Debian/Ubuntu安装Oracle客户端TNS
本文作为新手在Linux上部署Java程序的必经之路的Oracle客户端配置,请高手绕道. 确定服务器版本 首选确定你的Oracle服务器版本,以便下载相应的客户端.查看的sql如下: select ...
- 微信小程序入门之构建一个简单TODOS应用
最近开始了解微信小程序,虽然小程序已经出了很久了,刚出的那段时间很火,看到很多关于小程序的技术文章,不过现在似乎没那么火了,anyway,我们还是可以学习下的. 一.了解微信小程序 1.理念:小程序开 ...
- jQuery入门(一)
相信学js的人多多少少听过JQuery,JQuery对于前端开发人员来说是不可或缺的,他让开发变得更加简单.那到底什么是JQuery呢?用一句话来说,JQuery就是一个javascript的库.所谓 ...