第1章 为什么要并行计算 摘录

1.3 为什么需要编写并行程序  

        利用低频多核所获得的性能收益大于高频单核,为发挥多核性能,需要根据多核处理器编写并行程序。

1.4 如何编写并行程序

        有两种广泛采用的方法:任务并行数据并行
                1.任务并行是指:将待解决问题所执行的各个任务分配到各个核上执行。
                2. 数据并行是指:将待解决问题所处理的数据分配到各个核,每个核在分配的数据集上执行大致相似的操作。

        在reduce的例子中,需要协调的工作如下:
                1.通信:一个或多个核将自己的部分和结果发送给其他核;
                2.负载平衡:希望给每个核分配大致相同数目的数据来计算。
                3.同步:在大多数系统中,核之间不会自动地同步,而是每个核在自己地空间中工作。比如在master核初始化完x数组并使其他数组能够被其他核访问之前,不希望其他核开始工作。

1.5 将做什么

        学会C语言三个扩展:消息传递接口(Message Passage Interface, MPI),POSIX线程(POSIX threads),(OpenMP)。

        关注两种主要地并行系统:共享内存系统分布式内存系统
               1.在共享内存系统中,各个核能够共享访问计算机的内存,理论上每个核能够读、写内存的所有区域。因此可以通过检测和更新共享内存中的数据来协调各个核。
                2.在分布式内存系统中,每个核都拥有自己的私有内存,核之间的通信时显示的,必须使用类似于网络中发送消息的机制。

        Pthreads和openMP是为共享内存系统的编程而设计的,它们提供访问共享内存的机制。

MPI是为分布式系统的编程而设计的,它提供发送消息的机制。

1.6 并发、并行、分布式

        并发计算(cocurrent computing): 一个程序的多个任务在同一个时段内可以同时执行。

        并行计算(parallel computing): 一个程序通过多个任务紧密协作来解决问题。

        分布式计算(dostributed computing): 一个程序需要和其他程序协作来解决问题。

        在并行程序和分布式程序之间没有一条明确的分界线,但是并行程序往往同时在多个核上执行多个任务,这些核在物理上紧密靠近,或者共享内存或者通过互联网络相互连接

        分布式程序往往更加”松耦合“。任务是在多个计算机上执行。这些计算机之间相隔较远并且任务是由独立创建的程序来完成的。

1.10 小结

        在编写并行程序时,我们需要协调各个核的工作。这涉及核之间的通信、负载平衡和同步。

                1.MPI用于分布式内存系统的编程。
                2.Pthreads和OpenMP用于共享内存系统编程。
                3.在分布式系统中,每个核都拥有自己的私有内存,而在共享内存系统中,原则上每个核能访问每个内存区域。
                4.并发程序是指多个任务在一段时间内同时执行。
                5.并行程序核分布式程序的多个任务能在同一时刻一起执行。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值