并行运算学习笔记

三.
并行:表面并行,不断切换。并发:真正的并发操作


mimd 多指令多数据。(sisd,simd,misd )
simd在并行性较大的数据问题上游泳,但对复杂的并行问题帮助不大。
mimd系统通常是异步的。
共享内存系统,分布是式存系统。
共享内存系统:一组自治的处理器通过互联网与内存系统相互连接,每个处理器能够访问每个内存区域。(cpu)
分布是内存系统:每个处理器有自己的私有内存,处理器之间通过发送消息或者使用特殊的函数访问其他处理器内存。(socket)




四.
1.printf("thread %d ->my_value = %d \n" , my_rank. my_x)
竞争问题,即读写冲突。称之为非确定性。
当进程或线程尝试同时访问一个资源时,称程序有竞争条件。
临界区:一次只能被一个线程所执行的代码块。
互斥锁:由硬件支持的一个特殊类型的对象。
MY_VALUE = COMPUTE_VAL(MY_RANK);
LOCK (&ADD_MY_VALUE_LOCK);//忙等待,一个县城进入循环,只为了测试一个条件
//操作
UNLOCK(&ADD_MY_VALUE_LOCK);
//锁加太多会影响时间效率,性能,尽量不要多加(使得并行变成了穿行)
加速比s=T串行/T并行
必须穿行执行的计算a
可以并行执行的计算b
并行开销c(冗余计算和通信操作)
串行执行时间T1=a+b
并行执行时间T2=a+b/p+c(p个处理器)
并行程序效率:E=T1/(T2*P)


GUSTAFSON-BARSIS 加速比<=p+(1-s)p,s表示并行总执行时间中串行代码的比例
amdahl从串行角度出发,由你出发,问题规模角度(串行总执行中串行代码的比例)
增加并行程序使用的进程或者线程数,如果问题规模也以相应的增长率增加,该程序的效率值e保持不变,则称该程序是可扩展的。
增加线程进程数,不增加问题的规模,仍然可以位置固定的效率e,则强可扩展
增加线程进程数,增加相同倍率的问题规模,效率e不变,则弱可扩展


五.
计时:开发过程中分析实现或设计中的问题;运行时的性能,
如何计时:所有线程同时开始计时,取最长的线程时间作为总进程并行执行时间。一般不将io时间记录在内(多次运行时间不同取最短运行时间)
一般线程数与cpu内核数正比关系
任务指的是一个


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部