2012年3月22日

摘要: 在大规模节点间的并行时,由于节点间通讯的量是成平方项增长的,所以带宽很快就会显得不够。所以一种思路增加程序效率线性的方法是用MPI/OPENMP混合编写并行部分。这一部分其实在了解了MPI和OPENMP以后相对容易解决点。大致思路是每个节点分配1-2个MPI进程后,每个MPI进程执行多个OPENMP线程。OPENMP部分由于不需要进程间通信,直接通过内存共享方式交换信息,不走网络带宽,所以可以显著减少程序所需通讯的信息。Fortran:Program hello use mpi use omp_lib Implicit None Integer :: myid,numprocs,rc,... 阅读全文
posted @ 2012-03-22 12:39 a++ 阅读(8471) 评论(0) 推荐(1) 编辑
 
摘要: 和MPI支持在分布式内存机器上运行不一样,OPENMP只能在共享内存机器上运行。这一局限性带来的好处就是编程时相对好处理一点。对于天然并行的代码可以不做过多处理就能并行,而MPI则需要消息传递。另外,MPI的消息传递会带来带宽(系统和网络)上的要求,一旦并行节点数增多则会阻塞。这点也是OPENMP的一个优势。并行开始及结束声明:Fortran 77/90:!$OMP PARALLEL 代码区!$OMP END PARALLELC/C++:#pragma omp parallel { 代码区 } 某个循环区块的并行Fortran 77/90:!$OMP DO [clause ...... 阅读全文
posted @ 2012-03-22 11:33 a++ 阅读(2176) 评论(0) 推荐(0) 编辑