1
sivacohan 2012-08-24 21:15:52 +08:00
在这竟然有玩这个的,没想到啊没想到。我现在不玩了。不过这个问题我可以凭记忆给出一个不靠谱答案。
openmp可以看作c的扩展集,当然我是以c为例,你要是用fortan也行。对for循环之类的东西进行了一些扩展,具体自己看手册,让你可以用串行的方式写并行。如果没记错应该是共享内存方式。 mpi我用的相对多一些。当然现在不玩了。mpi是消息传递机制。你必须在函数内调用mpi send(我手机不知道怎么打下划线)来实现进程/线程间通信。 已经说了,是不靠谱回答~大家就清点喷我吧。 |
2
gracehunter 2012-08-24 21:16:50 +08:00
要吧源程序修改一下,指定哪一块执行多线程。
|
3
Ricepig 2012-08-25 01:56:31 +08:00
如果对于相互无依赖且无数据争抢情况的循环,使用OpenMP可以近乎自动地对他们进行并行化。
也就是说,你在这类循环上加上OpenMP标记,编译器会自动将他们并行化。 |
4
Ranler 2012-08-25 08:34:47 +08:00 2
OpenMP在多核共享内存模型机上使用,且必须用户指定程序的并行部分(各种循环),然后由编译器完成并行化工作。
penMP可以和MPI组合使用,OpenMP完成单机上的多核并行,MPI完成集群上机器间的通信。这是一种适合计算密集型的框架。 推荐一个简单教程: https://computing.llnl.gov/tutorials/openMP/ |