1.了解 并行 并发 交错并发 串行的意思

2.法则

Amdahl 法则 ,通过以下预测多处理器系统的最大理论性能提升(即加速比),这个公式应用于运行在多核处理器上的并行算法:

公式: 最大加速比(倍数)=1/((1-P)+(P/N));

其中:

  P 表示能够完全并行运行的代码比例

  N 表示可用计算单元数(处理器或物理内核数)

缺点:Amdahl法则考虑的只是物理内核数目的变化,并未考虑可以在既有应用程序中添加新功能以充分利用增加的并行处理能。

Gustafson 法则,这个公式通过问题的大小来测量在固定时间内可以执行的工作量:

公式:总工作量(单元数)=S+(N+P)

 其中:

  S 表示一次顺序执行完成的工作单元数

  P 表示能够完全并行运行的代码比例

  N 表示可用计算单元数(处理器或物理内核数)

3.创建成功的基于任务的设计

遵循以下的步骤就可以创建出成功个的基于任务的设计:

  3.1.将每个问题分解为很多子问题,完全不要考虑顺序执行

  3.2.将每个问题想象下面三类中的一类:

    a. 能够以并行的方式进行处理的数据---对数据进行分解以实现并行化,

    b.需要很多任务,而且能够以某种复杂的并行化惊喜处理的数据流---对数据和任务分解以实现并行化。

    c.可以并行运行的任务---对任务进行分解以实现化。

  3.3.将设计组织为能够表达并行化的形式

  3.4.考虑不同子问题连接起来的任务的必要性。尽量可能地避免依赖性

  3.5.在进行任务的时候,心理要想着并发和潜在的并行化。

  3.6.分析并行化的问题的执行计划,考虑当前的多核微处理器和未来的架构。在设计的时候要准备好更高的可扩展性。

  3.7.尽可能减少临界区。

  3.8.尽可能通过基于任务的程序设计实现并行化。

  3.9.调优和迭代。

4.理解多核并行程序的设计原则

  8个原则:

  4.1 按照并行的方式思考

  4.2 使用抽象编程

  4.3 按照任务(事情)编程,而不是按照线程(cpu 内核)编程.

  4.4 设计的时候要考虑关闭并发的情形.

  4.5 避免使用锁 -- 非常重要

  4.6 利用为帮助并发而设计的工具和库

  4.7 使用可扩展的内存分配器

  4.8 设计的时候要考虑随增长的工作负载而扩展。

转载于:https://www.cnblogs.com/jzhou/p/5549899.html

第一章 基于任务的程序设计相关推荐

  1. 山西农业大学c语言答案,第一章C语言及程序设计概述-东北农业大学教务处.doc...

    全国高等农林院校"十一五"规划教材 C语言程序设计 孙力 主编 中国农业出版社 内容简介 本书是全国高等农林院校"十一五"规划教材之一. 全书共11章,分别介绍 ...

  2. 实战精通OpenCV第一章--基于Android的图片卡通化及肤色改变(三)

    第一章 基于Android的图片卡通化及肤色改变 一.基于Visual Studio的图片卡通化 二.基于Visual Studio的肤色改变 三.Android代码移植 最近由于工作比较忙,很抱歉没 ...

  3. 实战精通OpenCV第一章--基于Android的图片卡通化及肤色改变(二)

    转载请注明出处:https://blog.csdn.net/mymottoissh/article/details/86723580 第一章 基于Android的图片卡通化及肤色改变 一.基于Visu ...

  4. 实战精通OpenCV第一章--基于Android的图片卡通化及肤色改变(一)

    转载请注明出处:https://blog.csdn.net/mymottoissh/article/details/86709457 本系列博客是基于<Mastering OpenCV with ...

  5. python使用符号 标示注释-第一章:Python语言程序设计

    关于课程: 课程作者为北京理工大学教授嵩天 学习账号是微信账号登陆:昵称为coke 1-1节:程序设计的基本方法 计算机与程序设计 编译和解释 程序的基本编写方法 计算机编程 1-1单元小结 计算机与 ...

  6. C语言程序设计第二版呼克佑第一章C语言与程序设计课后习题简答题答案

    如果对您有帮助,请您关注并点赞这篇文章,这样做会极大地激励我持续更新,祝您凛冬散尽,星河长明! 有任何错误请在评论区告诉我,我会及时回复并改正! 1.什么是程序?什么是程序设计? 程序是软件系统中不可 ...

  7. 《程序设计技术》第一章例程

    <程序设计技术>例程 <程序设计技术>第一章 C语言与程序设计(例程) <程序设计技术>第二章 C语言基础知识(例程) <程序设计技术>第三章 程序控制 ...

  8. 用计算机求解的问题可以分为,大计基--第1章--基于计算机的问题求解.ppt

    大计基--第1章--基于计算机的问题求解 * 问题没有现成软件可以解决,都需要人们根据具体的问题编制相应的计算机程序加以解决 * 四色问题又称四色猜想.四色定理,是世界三大数学猜想之一(费马猜想.四色 ...

  9. 第一章 MBSE概览

    第一章 基于模型的系统工程概览 建模语言: 建模方法: 建模工具:   这是<SysML精粹>的读书笔记,记录SysML语言学习及自己的思考. MBSE:   MBSE(基于模型的系统工程 ...

最新文章

  1. JavaScript编码风格指南
  2. mapper注解的主要作用_Mybatis中mapper的xml解析详解
  3. 学python入门书-如何学习Python,以及新手如何入门?
  4. JVM-10虚拟机性能监控与故障处理工具之【JDK的命令行】
  5. Kerberos的原理 - MIT
  6. Python培训:学完Python可以做什么?
  7. shell 目录下文件名放入循环_批量删除同一目录下的文件名前缀
  8. redis在java中的方法_redis在java中的使用方法
  9. C语言电话薄登录系统,求助 哈稀表编电话薄程序(c语言) 算法
  10. 【转载】一份不可多得的深度学习技巧指南
  11. Office2010安装出错1935
  12. migo获利能力段增加新字段
  13. python兔子繁殖问题_【算法】兔子繁殖之斐波那契数列
  14. 什么是虚拟机?虚拟机有那几种
  15. 安装Ubuntu 系统
  16. 从市场换手率变化判断头部
  17. 基于PHP+MySQL米步童鞋商城网站的设计与实现
  18. python 通达信公式函数,481009_易基策略二号
  19. mvn Mac Linux 版本,Mac 下 Maven 的命令行安装
  20. apicloud安卓更新,新版本不能覆盖旧版本的问题及解决方案

热门文章

  1. Github | ICCV2019论文1000余篇更新!附下载链接
  2. 2018 年度人工智能热门事件大盘点:「悲喜交加」
  3. pycharm入门的简易使用教程
  4. python使用request发送post请求_python之使用request模块发送post和get请求
  5. php package manager,package命令的安装教程
  6. Java基础---键盘录入工具(Scanner类)
  7. MongoDB模糊查询-查询某月的数据
  8. 检查服务器端口占用情况命令
  9. 软件测试第八次作业—— 缺陷管理(含缺陷管理工具的配置实验)
  10. 爬虫常用Xpath和CSS3选择器对比