Fortran Coder

查看: 2295|回复: 5
打印 上一主题 下一主题

[并行] Fortran程序的openmp如何解决同一个变量被多个线程调用

[复制链接]

8

帖子

2

主题

0

精华

入门

F 币
38 元
贡献
18 点
跳转到指定楼层
楼主
发表于 2022-8-24 11:18:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Fortran程序的openmp如何解决同一个变量被多个线程调用
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

798

帖子

2

主题

0

精华

大宗师

F 币
3793 元
贡献
2268 点
沙发
发表于 2022-8-25 09:39:26 | 只看该作者
1、为什么要解决,遇到啥问题,你需要说清楚这些。
2、是否需要解决,怎么解决,需要根据具体情况判断。
3、你可以先看看openmp视频 https://www.bilibili.com/video/BV1uA411v776?p=1

8

帖子

2

主题

0

精华

入门

F 币
38 元
贡献
18 点
板凳
 楼主| 发表于 2022-8-25 16:07:43 | 只看该作者
在循环调用同一个子函数时,出现无法并行的问题,发现是在子函数中使用了一个程序包FM(Fortran中将一些变量转变为任意精度),这个程序包涉及变化的全局变量,会引起竞争。所以想问这个问题如何解决才能并行

798

帖子

2

主题

0

精华

大宗师

F 币
3793 元
贡献
2268 点
地板
发表于 2022-8-26 09:48:06 | 只看该作者
试试用 critical 指令把FM相关的圈起来。

8

帖子

2

主题

0

精华

入门

F 币
38 元
贡献
18 点
5#
 楼主| 发表于 2022-8-26 15:11:22 | 只看该作者
但是这样不就变成单线程运行,实现不了并行加速啊

798

帖子

2

主题

0

精华

大宗师

F 币
3793 元
贡献
2268 点
6#
发表于 2022-8-27 14:02:43 | 只看该作者
如果FM不支持omp并行,怎么都不行,除非改代码。或者用mpi。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-4-28 01:49

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表