最大 reclen ifort 18 与 ifort 19
maximum reclen ifort 18 vs ifort 19
运行这个小程序
program main
implicit none
integer(8) :: irecl
irecl= 4147483646_8
open(3,file='STORE.data',form='unformatted',access='direct',recl=irecl)
end
用 ifort 19.0.0.117 编译没有问题,但是用 ifort 18.0.1 编译 forrtl: severe (118)
。我知道这是因为 ifort 有最大记录长度(至少 18 版本有)。我找不到任何关于 ifort 19 的最大记录长度的信息。它消失了吗?或者有多高?好像低于一个int*8的范围(9223372036854775807).
比较版本 18 和版本 19 之间的英特尔文档,我发现删除了记录长度值的限制。 (文档对此并不完全清楚,因为它指的是格式化记录,但我认为它也适用于此。)实际上,您将被限制直接访问适合签名 64 位的字节偏移量整数。请注意,默认情况下,您显示的 OPEN 中的 RECL= 单位是 4 字节单位(除非您启用了 "assume byterecl" 选项(也由 standard_semantics 暗示)。
我记得我在 Intel 的时候有一个错误,编译器和 运行-time 库不同意它们对大于 2**32 的 RECL 值的支持。那是固定的,也许在版本 19 中。
我同意 Vladimir F 的观点,您最好直接询问英特尔。您可以在 Intel 论坛中提问,虽然可能需要一段时间,但可能会得到专业的答复。
运行这个小程序
program main
implicit none
integer(8) :: irecl
irecl= 4147483646_8
open(3,file='STORE.data',form='unformatted',access='direct',recl=irecl)
end
用 ifort 19.0.0.117 编译没有问题,但是用 ifort 18.0.1 编译 forrtl: severe (118)
。我知道这是因为 ifort 有最大记录长度(至少 18 版本有)。我找不到任何关于 ifort 19 的最大记录长度的信息。它消失了吗?或者有多高?好像低于一个int*8的范围(9223372036854775807).
比较版本 18 和版本 19 之间的英特尔文档,我发现删除了记录长度值的限制。 (文档对此并不完全清楚,因为它指的是格式化记录,但我认为它也适用于此。)实际上,您将被限制直接访问适合签名 64 位的字节偏移量整数。请注意,默认情况下,您显示的 OPEN 中的 RECL= 单位是 4 字节单位(除非您启用了 "assume byterecl" 选项(也由 standard_semantics 暗示)。
我记得我在 Intel 的时候有一个错误,编译器和 运行-time 库不同意它们对大于 2**32 的 RECL 值的支持。那是固定的,也许在版本 19 中。
我同意 Vladimir F 的观点,您最好直接询问英特尔。您可以在 Intel 论坛中提问,虽然可能需要一段时间,但可能会得到专业的答复。