以下 Fortran“并发”循环有效吗?

2024-01-01

我不认为下面的do concurrentFortran 循环有效,如下所示acc在每次迭代中都会被修改。但是,gfortran 没有给我任何类型的警告,并且结果值acc正确的是 55。它是否有效?

integer :: acc, i
acc = 0
do concurrent (i=1:10)
    acc = acc + i
end do

循环确实无效。在这种情况下,编译器不需要检测这一点并报告原因。

在 Fortran 2008 8.1.6.5(“DO CONCURRENT 构造的限制”)中,我们有以下一项限制:

迭代中引用的变量应在该迭代期间预先定义,或者在任何其他迭代期间不应定义或变为未定义。当循环终止时,通过多次迭代定义或变为未定义的变量将变为未定义。

acc是这样一个变量,它通过多次迭代(所有迭代)来定义(位于内部赋值语句的左侧)。因此,该循环是一个糟糕的循环(并且在循环构造的末尾acc是未定义的,所以检查它的值也是很顽皮的)。

正如评论中所指出的,与其他无效的 Fortran 程序类似,您可能仍然会在这里得到正确的答案,而没有任何抱怨。在这种情况下,DO CONCURRENT 构造可以以与普通 DO 构造完全相同的方式实现,以给出完全相同的答案。仅当并行运行时(例如使用自动并行化或在 GPU 上)或进行非常严格的编译器检查时,数据依赖性才会导致竞争条件和错误答案或中止。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以下 Fortran“并发”循环有效吗? 的相关文章

  • 与 gfortran 和 gcc 静态链接的混合语言

    我有一些用 C 和 Fortran 编写的代码 我想将其编译成静态链接的可执行文件 如果我动态编译代码 使用 fno underscoringgfortran 的选项 一切正常 但是 我想将其链接到 so文件中 静态链接大部分需要的库 然后
  • Fortran 接受来自 C 的字符串(?)

    我觉得这应该是一个简单的问题 但我无法让它发挥作用 我有一些 Fortran 代码 需要如下输入 SUBROUTINE TRACE X Y NAME XX YY EXTERNAL NAME CALL NAME X Y XX YY 我正在尝试
  • Intel Fortran 错误 #6633:实际参数的类型与虚拟参数的类型不同

    对于可能在这里提出这样一个基本问题 我深表歉意 我是使用英特尔 Fortran 编程的新手 所以我认为在这种情况下 我不知道有一些东西丢失或组织错误 如果有人能在这方面帮助我 我将不胜感激 问题是我在编译代码时看到以下错误 而我相信我已经声
  • 从接口访问参数 (Fortran)

    我正在使用参数来修复所用类型的精度 在我尝试在接口中使用相同类型之前 这种方法工作得很好 考虑这个小例子 module Hello implicit none save integer parameter K selected real k
  • 为什么 OpenMP SIMD 指令会降低性能?

    我正在学习如何在 OpenMP Fortran 中使用 SIMD 指令 我 写了简单的代码 program loop implicit none integer i j real 8 x x 0 0 do i 1 10000 do j 1
  • 在 fortran 中生成序列数组

    Fortran中是否有一个内在函数可以生成一个包含从a到b的数字序列的数组 类似于python的range gt gt gt range 1 5 1 2 3 4 gt gt gt range 6 10 6 7 8 9 不 没有 但是 您可以
  • 在 Fortran 语言中 advance='no' 是什么意思?

    我是 Fortran 新手 我不明白这一行 write a35 advance no in program democonvertion implicit none real tc tf tr tk write a35 advance no
  • C++/Fortran 中贝塞尔函数的集成 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 如何在 Fortran 或 和 C 中对包含贝塞尔函数的方程进行从 0 到 无穷大 的数值积分 我在matlab中做了 但对于较大的输入和特
  • 将派生类型中的指针分配给 Fortran 中相同类型中的目标

    我想在包含在同一派生类型中的派生类型中分配一个指针 下面的代码给了我下面的错误 这是怎么回事 我该如何解决这个问题 24 zoos i tigers 1 gt zoos i animals 1 1 1 Error Expected boun
  • 不确定 openmp 循环中应该共享或私有什么

    我有一个更新矩阵 A 的循环 我想将其设为 openmp 但我不确定哪些变量应该共享和私有 我本以为只有 ii 和 jj 就可以工作 但事实并非如此 我想我也需要在某个地方进行 OMP ATOMIC UPDATE 该循环仅计算 N 和 N
  • 提高由整数商定义的变量的精度

    假设我有以下程序 program derp implicit none integer parameter ikind selected real kind 18 real kind ikind a 2 0 3 0 print a end
  • 在 Fortran 中读取行数已知但每行条目数未知的数据文件

    如何读取包含已知行数但每行中的条目数未知的数据文件 例如如果我的数据文件包含类似的内容 1 3 4 5 6 7 8 9 1 3 5 6 4 5 6 7 8 3 5 6 7 8 4 5 7 8 即三行 但每行中的数据未知 有一次我需要来自一行
  • 链接到遗留库:-lgfortranbegin from a premade makefile

    我在尝试编译由一些研究人员开发的程序时遇到了一些麻烦 该程序应该以非常精确的方式计算傅立叶变换和其他一些有用的操作科学论文在这里 https www researchgate net profile Gerard Gomez2 public
  • 编译错误:无法打开模块文件

    我有这个代码 PROGRAM xfit driver for routine fit USE nrtype USE nrutil USE nr USE ran state ONLY ran seed IMPLICIT NONE INTEGE
  • fortran中双引号和单引号的区别?

    我刚刚开始使用 Fortran 对双引号和单引号的使用感到困惑 它们是等价的 它们的用法没有区别 您可以使用它来打印引号字符之一 print print 首先打印 进而 注意 您还可以在一行中使用两个引号字符来打印一个 print prin
  • 从 Fortran 字符串中提取单个字符

    我需要一个程序将基数 a 转换为基数 b 其中基数 a 和 b 可以是从 2 到 36 我的想法是使用字符串作为数字 作为中介转换为基数 10 然后从基数 10 转换为基数 b 由于我是 Fortran 新手 我不太理解函数和子字符串 现在
  • 最佳 Fortran IDE [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 stackoverflow上有人用Fortran吗 您使用什么 IDE 您认为哪一个是最好的 似乎我周围的很多人都对 Intel Visu
  • 指定 gfortran 应该在其中查找模块的目录

    我目前基于模块来编译程序 例如主程序foo这取决于模块bar 如下 gfortran c bar f90 gfortran o foo exe foo f90 bar o 当foo f90 and bar f90位于同一目录中 如何指定 g
  • 如何在Fortran代码中将二维数组转换为一维数组?

    如何将 r i j 转换为一维数组以便可以轻松地对数字进行排序 program sort implicit none character CN 8 O 7 integer j iconf nconf integer i nbins t in
  • 尝试读取名单后返回的状态不是预期的

    我想从文件中读取名单 但在名单不存在的情况下实现捕获选项 从我读到的here http msg ucsf edu local programs IBM Compilers Fortran html pgs lr76 htm我期望状态为 84

随机推荐

  • Jquery - 延迟鼠标移出事件

    有没有办法让 jQuery 在之前等待一定的时间mouseout事件被解雇 目前它触发得太早 我宁愿等待 500 毫秒 然后再评估鼠标的离开 下面是我使用的代码示例 under construction this bind mousemov
  • asp.net web表单json返回结果

    我使用 asp net 和 Web 表单 在我的项目中我有 asmx Web 服务 WebMethod public string GetSomething avoid circual reference parent child List
  • 使用Python提取目录中所有pdf文档的页数

    我正在尝试使用 PyPDF2 来获取目录中每个 pdf 的页数 我可以使用 getNumPages 查找一个 pdf 文件中的页数 但我需要遍历一个目录并获取每个文件的页数 有任何想法吗 这是我到目前为止的代码 import pandas
  • 在 Bootstrap 3 中创建基础风格的块网格?

    在 Zurb Foundation 3 中 它们有一个 块网格 的 CSS 构造 它是一个无序列表 您可以在其中指定一行中的项目数 这是他们的文档 http foundation zurb com docs components block
  • 文件名中带有空格的 sqlcmd 脚本

    我有一个简单的SQLCMD脚本包含如下几行 Load data into Exampletable BULK INSERT dbo Example NOTE I ve tried single AND double quotes here
  • c# - 有没有办法制作固定(高度/宽度)控制台?

    我一直在 microsoft Visual Studio 2013 中闲逛 我制作了一个控制台应用程序 但我想知道是否有一种方法可以为其设置固定大小 高度 宽度 这意味着它无法调整大小 如果有人知道这是否可行 如果您能帮助我 我将不胜感激
  • 在 java 8 中将字符串转换为 Map

    有人可以指导我如何使用 Java 8 实现以下目标吗 我不知道如何将该计数器作为密钥 String str abcd Map
  • 如何将附加参数传递给 TypeScript 中的属性装饰器?

    我有一个简单的类 它的属性有物业装饰师 https github com Microsoft TypeScript Handbook blob master pages Decorators md property decorators应用
  • jQuery 根据复选框验证不同的字段

    我正在尝试使用jQuery 验证插件 http jqueryvalidation org 验证我的一份申请中的表格 表格 简化 如下
  • 如何在 tkinter 中创建模式对话框?

    我有一个运行一些嵌入式 Python 脚本的 MFC 应用程序 我正在尝试使该嵌入脚本创建模式的对话框之一 但我没有取得太大成功 谁能指出我制作模式对话框的方法 我是否需要为此使用 Windows 函数 还是仅 Tk 或 Python 函数
  • 如何在水晶报表中合并行?

    我正在使用 Crystal Report Version 10 2 Visual Studio 2008 并在 Crystal Report 中显示存储过程的结果 我的存储过程返回输出 如下所示 但我想在报告中显示 如下所示 提前致谢 使用
  • 如何在 div #content 加载时显示 div #loading

    我想实施一个解决方案 当 div content 中的内容正在加载时 隐藏 div content 显示 div loading 然后当 div content 加载完毕后 隐藏div loading 淡入 div content 我努力了
  • Vim - 在重音字母或 ñ 之后插入额外空格

    我有一个关于 Vim 的问题 我在 Mac OS X Snow Leopard 上并编译了 vim 以开始使用编辑器 有时我会用其他语言打字 我发现在输入带重音的字母时 每个字母后都会添加一个额外的空格 我还使用 Mac 西班牙语键盘进行打
  • 我尝试使用动画来使线性布局进行翻译,像这样向左<->向右。但我遇到了一些错误

    这是我的第一个应用程序 我尝试从右到左或从左到右翻译 这是代码 资源 gt 动画 gt 向左翻译
  • Node.js 和 java 之间的 mqtt 通信

    目标是使用 mqtt 协议发送数据 Java 项目 tempSensor 使用 mqtt 协议和使用 mqtt 订阅 tempvalue 的 Node js 生成 tempvalue Node js 和 java 项目都使用相同的密钥进行发
  • 如何在 iOS 中使用 MpMoviePlayerController 在 UISlider 上显示缓冲数据?

    我在用MPMoviePlayerController播放音频 我想在滑块上显示缓冲数据 如下所示 我想显示缓冲区数据 如滑块中的红色部分 我尝试用谷歌搜索它 但我没有得到任何解决方案 以及如何自定义滑块 提前致谢 是的 我们可以使用显示流数
  • 继承树上的反序列化顺序

    我有一个标记的基类Serializable 以及标记的派生类Serializable也 我想在反序列化期间在基类中做一些事情 因此声明了一个标记为OnDeserializing 但重要的是该方法将在任何派生类的之前执行OnDeseriali
  • 调整位图大小是在视图中裁剪而不是缩放

    我不知道如何调整位图的大小 根据这里的帖子 Bitmap createScaledBitmap 是执行此操作的方法 但它对我来说不起作用 由于视图的性质 我在 onDraw 中完成所有操作 因此我认为我不能使用布局或 ImageView 这
  • Three.js 具有恒定大小的对象

    我正在开发一个绘图程序 我需要的是一个具有恒定大小的 THREE Object3D 元素 就像线条始终为 1px 一样 换句话说 我试图在舞台上放置一个对于观看者来说尺寸始终相同的对象 所以如果你靠近它 它的大小不会改变 类似的机制是三线
  • 以下 Fortran“并发”循环有效吗?

    我不认为下面的do concurrentFortran 循环有效 如下所示acc在每次迭代中都会被修改 但是 gfortran 没有给我任何类型的警告 并且结果值acc正确的是 55 它是否有效 integer acc i acc 0 do