TA的每日心情 | 郁闷 2019-12-23 14:39 |
|---|
签到天数: 281 天 连续签到: 1 天 [LV.8]以坛为家I 累计签到:281 天 连续签到:1 天
|
楼主 |
发表于 2018-11-10 15:42:12
|
显示全部楼层
本帖最后由 菜鸟萌新 于 2018-11-10 17:11 编辑 * L( ~ ^8 P. Z* P
! I* u- E1 @2 W2 ~
https://software.intel.com/en-us ... c-os-x/topic/5599503 l' X7 l: f2 J9 w y$ Y& J1 Q
- ]( I8 a) q5 Y7 L" ]$ a( _4 _) H( M
The interesting (to me, anyway) part of this question is that the do-variable in an io-implied-do does NOT have "statement scope" the way a DATA implied-do or array constructor implied-do variable do. With statement scope, the implied-do variable is a new, different variable that inherits only the type of any outer-scope variable (but that type must be integer.)The "i" in the I/O implied DO is the same variable as the line 1 DO control variable and ifort is absolutely correct in complaining about this., pgf90 could support this as an extension, but would need to have the ability to diagnose it (perhaps through a standards checking switch), or else risk being a nonconforming implementation." m5 s% d6 R' [
( U9 Z6 t* A7 `% t, Q/ n! @6 K' pThe other interesting part is that we do, sort-of, allow changing DO variables, as an extension, but you have to do it by passing the variable to a procedure which then changes it. ifort recognizes the possibility and generates an explicit test rather than a loop count if it sees this.5 X3 `- P, b& y& O
, {2 f( ` e% w9 u, v2 z3 R: j+ B0 S
这个问题的有趣(对我来说,无论如何)部分是io声明的do中的do的变量没有DATA声明的方式或者数组构造函数声明-do变量的方式。 对于语句范围,声明do变量是一个新的,不同的变量,它只继承任何外部作用域变量的类型(但该类型必须是整数。)I / O暗示DO中的“i”是相同的变量 作为第1行DO控制变量和ifort在抱怨这一点时绝对正确。,pgf90可以支持这作为扩展,但是需要能够诊断它(可能通过标准检查开关),否则冒险成为 不合格的实施。# [1 c7 t/ D' u) K% P: X1 m
% |+ ?) ~. ]/ e+ ~3 U另一个有趣的部分是我们这样做,排序,允许更改DO变量,作为扩展,但你必须通过将变量传递给一个程序然后更改它来完成它。 如果它看到这个,ifort会识别出这种可能性并生成一个显式测试而不是一个循环计数。
' R, g; w0 y7 [. ?9 r9 {2 E$ g/ g |
|