24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1065  |  回复: 2

choly8

新虫 (初入文坛)

[求助] 关于fortran程序进行并行计算的问题

之前照着论文的公式和模板,写了一个3d phase-field的fortran程序,由于需要计算的网格数量多,因此,计算速度十分缓慢,按照网上的意思,openmp并行不仅对程序修改的少,而且加速效果好,于是我就在原先的fortran程序中加入了openmp并行。可是,我发现随着线程数threads的增加,我的计算速度反而变得越来越慢,所以想请教一下大佬们问题可能出在哪?个人感觉的原因有如下两点(1.我的程序中使用了大量的离散和差分,并且由于矩阵占据内存,因此对于差分这样的中间变量并没有使用矩阵进行存储,而是每次循环进行刷新,这样会不会导致我的程序不适合Openmp并行呢? 2.在使用opnemp并行和串行的比较时,为了能更好的比较两者的结果,我的网格取的比较小,目前我的网格数量大概在100*100*100左右,这样是不是不利于Openmp进行并行)。   除此之外,最最最主要的就是想请教下各位大佬们,对于上述的程序可以通过怎样的方式进行加速(MPI? GPU?)  谢谢大家了
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yhbgeophy

新虫 (正式写手)


jjdg: 金币+1, 感谢参与 2019-03-10 14:21:30
OpenMP适合于一台电脑,共享内存式的并行,当你开的进程数大于电脑本身的可以的进程数时(一般是CPU核数x2),就起不到加速作用了。MPI一般用于集群的并行计算,如果你有这个条件可以集群,此外MPI也可以用于单机的并行,但是由于进程间通信比较耗时所以效果可能不如OpenMP。注:我刚开始看一些资料,没有实践多少,仅供参考

发自小木虫IOS客户端
2楼2019-03-08 18:16:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cxuxc

新虫 (著名写手)

3楼2019-06-11 13:41:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 choly8 的主题更新
信息提示
请填处理意见