并行与分布式计算笔记1

并行与分布式计算笔记1

计算节点用InfiniBand网络进行通信,传输速率可以到100GB/s。

并行编译器只能做到执行级的并行,检测到basic block和少量的嵌入的for循环,无法满足并行计算的要求。
所以需要让程序员来编写并行程序。

通过操作系统底层的线程库来编程会非常复杂,甚至出错,所以会有并行编程的工具来进行抽象。

常见的工具有:
OpenMP
Message Passing InterfaceMPI(mpi)
Posix Threads(pthreads)
Open Computing Language(opencl)
CUDA
Map Reduce

并行编程的难点

1找到尽可能多的并行点
2粒度:函数级并行、线程级并行还是进程级并行
3局部性:并行化后是否能够利用局部数据等
4负载均衡:不同线程、不同core之间的负载分布
5协作与同步
6性能模型

任务并行

将一个问题划分成多个不同的子任务在不同的core上运行;
(计算密集型,可以拆分成不同的子任务)

数据并行

1.将问题所涉及的数据才分到不同的core上执行;
2.每个core运行的是相同的程序。
(数据密集型,大数据应用)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值