本文要回答的问题:什么是并行计算?如何做到?
确认,该机子如下:
- 4颗物理CPU #sockets
- 每颗是10核 #cores per socket
- 每个核支持2线程 #threads per core
- 总共80个物理CPU,也就是80个线程(4102)
区别并行与并发
“并发”,这和并行是有着本质的不同的。并发是“伪并行”,看似并行,而实际上还是一个CPU在 执行一切事物,只是切换的太快,我们没法察觉罢了。
也就是CPU时间片的轮转。
多线程,可以做并行计算,并行计算还可以通过多进程方式。
多进程(这又包括共享存储区的和分布式多机,以及混合式的),指令级并行。
ILP(指令级并行),x86架构里叫SMT(同时多线程),在MIPS架构里与之对应的是super scalar(超标量)和乱序执行,二者有区别,但共同点都是可以达到指令级并行,这是用户没法控制的,不属于编程范围,只能做些有限的优化,而这有限的优化可能只属于编译器管辖的范畴,用户能做的甚少。
而qsub -pe 和-l p参数的差异。。。
逐步解答,未完待续。