码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 求求并行不要寄


    mulu

    • 链表操作与分析
    • MPI常用的API与应用
    • Pthreads常用的API及其应用、互斥锁、忙等待(自旋锁)的实现与应用
    • OpenMP常用的编译指令及其子句应用
    • 课本典型案例:矩阵向量乘、曲边梯形面积计算、通过数学求和公式计算π、蒙特卡洛方法计算π、奇偶交换排序。
    • 第一章 为什么要并行计算 2
      • 1.1 为什么需要不断提升性能
      • 1.2 为什么要构建并行系统
      • 1.4 怎么编写并行程序
        • 任务并行和数据并行 占6分
          • 2021考题
      • 1.5 并发并行分布式
    • 第二章 并行硬件和并行软件 4
      • 2.1 冯诺依曼体系结构的特点及其瓶颈
      • 2.2 冯·诺伊曼模型的改进
        • 2.2.1 缓存
        • 2.2.2 虚拟存储器
        • 2.2.3 低层次并行
          • 指令级并行
          • 流水线多发射问题
      • 2.3 并行硬件
        • 2.3.1 Flynn分类法 占6分
        • 2021考题
        • 2.3.2 Cache的特点、缺失、命中、一致性与解决办法及伪共享问题
      • 2.4 共享内存
        • 动态线程和静态线程
      • 2.5 加速比、效率、阿姆达尔定律
      • 2.6 可扩展性
      • 2.7 并行程序设计
    • 第三章 用MPI进行分布式内存编程 8
      • 3.1 常用API及其应用
        • 初始化
        • 获取进程数量
        • 通信
      • 2021考题
      • 3.2 用MPI实现梯形积分法
      • 3.3 集合通信
      • 3.4 MPI派生数据类型及MPI程序性能评估
      • 3.5 用MPI实现并行排序算法
    • 第四章 用Pthread进行共享内存编程 8
      • 4.1 进程、线程和Pthreads
      • 4.2 矩阵-向量乘法
      • 4.3 临界区 忙等待 互斥
      • 4.4 生产者-消费者同步和信号量
      • 4.5 读写锁及缓存一致性 线程安全
    • 第五章 openMP共享内存编程 8
    • 第六章 分布式系统概述 2

    链表操作与分析

    MPI常用的API与应用

    MPI:一种基于信息传递的并行编程技术(接口标准)。

    Pthreads常用的API及其应用、互斥锁、忙等待(自旋锁)的实现与应用

    Pthreads标准定义了创建和操纵线程的一整套API。

    OpenMP常用的编译指令及其子句应用

    用于共享内存并行系统的多处理器程序设计的一套指导性编译处理方案。OpenMp提供了对并行算法的高层的抽象描述,程序员通过在中加入专用的pragma来指明自己的意图,由此编译器可以自动将程序进行并行化,并在必要之处加入同步互斥以及通信。

    • parallel指令
      • 用在一个代码段之前,表示这段代码将被多个线程并行执行
        请添加图片描述
    • for指令
      • 用于for循环之前,将循环分配到多个线程中并行执行,必须保证每次循环之间无相关性。单独使用不会实现并发执行,也不会加快运行速度,需配合parallel,表示for循环的代码将被多个线程并行执行。

    课本典型案例:矩阵向量乘、曲边梯形面积计算、通过数学求和公式计算π、蒙特卡洛方法计算π、奇偶交换排序。

    第一章 为什么要并行计算 2

    重点:并行程序设计的重要性

    我们需要让程序能够更快地运行,有更加逼真的图像。为了达到这一目的,就需要将串行程序改写为并行程序

    1.1 为什么需要不断提升性能

    计算问题和需求在增加, 更复杂的问题有待解决

    1.2 为什么要构建并行系统

    因为我们想要提高计算机的性能,而性能的提高则需要提高晶体管密度
    更小的晶体管 = 更快的处理器
    更快的处理器 = 更高的能耗
    功率消耗增加 = 热量增加
    增加的热量 = 不可靠的处理器.
    从单核系统转向多核处理器,也就是说我们要引入并行性。

    1.4 怎么编写并行程序

    任务并行和数据并行 占6分

    任务并行
    将任务划分为不同的子任务,由不同的核来完成,多个核协同完成总任务
    数据并行
    是指将待解决问题所需要处理的数据分配给各个核,每个核在分配到的数据集上执行大致相似的操作

    2021考题

    二.1 简答题
    (1)在并行计算任务处理过程中,广泛采用哪两种方法?
    答: 任务并行和数据并行 (2 分)
    (2)假如 P 教授进行“英国文学调查”的授课,她有 100 个学生,还有 4 个助教。
    学期结束的时候,要进行一次期末测试,试卷包括 5 道题,为了给学生打分,P 教
    授和他的助教进行试卷批改,可以采用什么方法,并对方法进行阐述。
    答:
    第一种方案:按照每人批改 100 份试卷中的一道题 任务并行 (2 分)
    第二种方案:按照每人批改 20 份试卷 数据并行 (2 分)

    核与核之间通常需要进行协同它们的任务.
    通信( Communication ):一个或多个核将其当前的部分总和发送给另一个核.
    负载平衡( Load balancing ):在内核之间均匀地分配工作,这样一个内核就不会负载过重。
    同步(Synchronization):因为每个核都有自己的工作节奏,所以要确保核不会比其他核走得太远

    1.5 并发并行分布式

    并发计算:多个任务可以在任何时刻进行。
    并行计算:多个任务紧密合作来解决一个问题。
    分布式计算:可能需要与其他程序合作来解决问题。

    第二章 并行硬件和并行软件 4

    重点:理解什么是并行计算以及并行体系结构、 Flynn 分类法、性能分析、并行加速比与效率;并行程序性能优化

    2.1 冯诺依曼体系结构的特点及其瓶颈

    瓶颈:主存与CPU之间分离
    我们需要知道:

    1. 数据和指令是存在主存中的
    2. 数据和指令是通过互连结构传输到CPU的,这个互连结构通常是总线。
    3. 因为互连结构限定了指令和数据访问的速率,所以程序运行所需要的大部分数据和指令被有效地与CPU隔离开。

    2.2 冯·诺伊曼模型的改进

    三种改进措施:缓存(caching),虚拟存储器(或虚拟内存)、低层次并行

    2.2.1 缓存

    缓存将互连通路加宽,使得一次内存访问能存取一整块代码和数据,而不只是单条指令和单条数据。这些块称为高速缓存块或者高速缓存行。
    而且不再是将所有数据和指令存储在主存中,可以将部分数据块或者代码存储在一个靠近cpu寄存器的特殊存储器里。

    高速缓冲存储器-cahe-缓存

    程序访问完一个存储区域往往会访问接下来的区域,这个原理称为局部性。在访问完一个内存区域(指令或者数据),程序会在不久的将来(时间局部性)访问邻近的区域(空间局部性)。

    2.2.2 虚拟存储器

    如果我们运行一个非常大的程序或者一个访问非常大数据集的程序,所有的指令和数据可能都不能放进主存中。利用虚拟存储器(或虚拟内存),使得主存可以作为辅存的缓存。它通过在主存中只存放当前执行程序所需要用到的部分,来利用时间和空间局部性;那些暂时用不到的部分存储在辅存的块中,称为交换空间(swap space)中。

    2.2.3 低层次并行

    指令级并行

    指令级并行(Instruction-Level parallelism, ILP)通过让多个处理器部件或者功能单元同时执行指令来提高处理器的性能。有两种主要方法来实现指令级并行:流水线和多发射。流水线是指将功能单元分阶段安排;多发射是指让多条指令同时启动。

    流水线多发射问题
    • 流水线
      • 一条指令完整的执行步骤包括取指令、指令译码、执行指令三个步骤。流水线方法就是将指令的执行分成若干个小步骤,分别交由不同的线程处理,每个线程只完成自己负责的那一部分。
    • 多发射
      • 通过增加硬件的方式,将取指令和指令译码实现并行,一次性取出多条指令,然后分发给多个并行的指令译码器,进行译码,然后对应交给不同的功能单元去处理。这样,在一个时钟周期里,能够完成的指令就不只一条了。这种 CPU 设计,叫作多发射

    2.3 并行硬件

    2.3.1 Flynn分类法 占6分

    Flynn分类法,是基于指令流和数据流的数量对计算机进行分类的方法。

    一系列修改那些流经数据处理单元的数据(数据流)的命令,可以被认为是一个指令流。

  • 相关阅读:
    ARM开发初级-ARM、Cortex-M4与STM32背景知识(包含STM32产品命名规则)-学习笔记01
    【智能算法系统】项目展示
    大数据库练习题目集-键值数据库-2022-2023-1-20大数据本
    中科院软件所智能人机交互研发实习生招募
    网络基础之重中之重
    第三方钩子 MouseKeyHook 监控鼠标键盘事件
    电脑上出现多个python版本环境变量配置(包括pip的配置)亲测有效!!!
    CDN+GitHub搭建图床
    MFC基础-单选框和多选框
    Leetcode46. Permutations | 模拟 | 递归 | 记忆化搜索
  • 原文地址:https://blog.csdn.net/qq_51246916/article/details/127632281
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号