Fortran I/O:指定大记录大小

2024-01-19

我正在尝试将一个数组写入文件,我以这种方式打开文件:

open(unit=20, FILE="output.txt", form='unformatted', access='direct', recl=sizeof(u))

Here, u是一个数组并且sizeof(u)是 2730025920,大约 2.5GB。 当我运行该程序时,出现错误Fortran runtime error: RECL parameter is non-positive in OPEN statement,我认为这意味着记录大小太大。

有办法处理这个问题吗?一种选择是在多个写入调用中写入数组,以便每次写入的记录大小小于 2.5GB。但我想知道是否可以在一次调用中写入整个数组。

Edit: u已被宣布为double precision u(5,0:408,0:408,0:407)该程序被编译为gfortran -O3 -fopenmp -mcmodel=medium test.f该程序中有一些 OpenMP 代码,但文件 I/O 是顺序的。

gfortran v 4.5.0,操作系统:64 位 AMD Opteron 上的 Opensuse 11.3

感谢您的帮助。


只要内存允许,您应该能够编写大数组。看起来你正在得到整数溢出sizeof功能。sizeof不是 Fortran 标准,我不建议使用它(编译器之间的实现可能有所不同)。相反,更好的做法是使用inquire语句获取记录长度。我能够用 ifort 重现你的问题,这个解决方案对我有用。您可以通过声明更高种类的变量来避免整数溢出:

integer(kind=8) :: reclen

inquire(iolength=reclen)u 

open(unit=20,file='output.txt',form='unformatted',&
     access='direct',recl=reclen)

编辑:经过一番调查,这似乎是一个 gfortran 问题。为整数设置更高的种类reclen解决了 ifort 和 pgf90 的问题,但没有解决 gfortran 的问题 - 我刚刚用版本 4.6.2 尝试过这个问题。虽然reclen有正确的正值,看起来recl是 gfortran 内部的 32 位有符号整数(感谢 @M.S.B. 指出了这一点)。 Fortran 运行时错误表明了这一点,而不是表明该值大于最大值。我怀疑这是操作系统问题。如果可能,尝试使用 ifort(免费用于非商业用途):英特尔非商业软件下载 http://software.intel.com/en-us/articles/non-commercial-software-download/.

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

Fortran I/O:指定大记录大小 的相关文章

  • LAPACK 反演例程奇怪地混合了所有变量

    我正在使用 Fortran 进行编程 并尝试使用 Lapack 包中的 DGETRI 矩阵逆变器 http www netlib org lapack explore html df da4 dgetri 8f html http www
  • fortran 77 到 fortran 90 的转换器软件 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有 fortran 77 编码 但我想转换为 fortran 90 在哪里可以下载转换器软件 这是我帮
  • 循环变量文件名[重复]

    这个问题在这里已经有答案了 我正在使用 Fortran 对分成许多文件的庞大数据集进行计算 文件的名称是 maltoLyo12per reimage set1 traj maltoLyo12per reimage set2 traj mal
  • 在 Fortran 90 中,是否必须事先声明数组维度?

    是否有必要在任何其他代码之前声明数组维度 例如 我编写了以下简化的示例代码 PROGRAM mytest IMPLICIT NONE INTEGER i j k mysum Let array c be a k by k 2 array D
  • 忽略 doxygen 注释块中的行

    是否可以在 doxygen 注释块中包含将被 doxygen 忽略的内容 换句话说 我们可以在 doxygen 评论块中发表评论吗 背景 我们正在将 Fortran 项目的代码内注释转换为 doxygen 可解析的格式 但是该项目要求代码内
  • Fortran 读取混合文本和数字

    我正在使用 Fortran 90 读取包含以下格式数据的文件 number 125 var1 2 var2 1 var3 4 number 234 var1 3 var2 5 var3 1 我尝试了以下命令并且工作正常 read 2 tem
  • 可变格式

    我编写了一个程序来计算平方有限差分矩阵 您可以在其中输入行数 等于列数 gt 这存储在变量矩阵中 该程序运行良好 program fin diff matrix implicit none integer dimension allocat
  • fortran中双引号和单引号的区别?

    我刚刚开始使用 Fortran 对双引号和单引号的使用感到困惑 它们是等价的 它们的用法没有区别 您可以使用它来打印引号字符之一 print print 首先打印 进而 注意 您还可以在一行中使用两个引号字符来打印一个 print prin
  • 指定 gfortran 应该在其中查找模块的目录

    我目前基于模块来编译程序 例如主程序foo这取决于模块bar 如下 gfortran c bar f90 gfortran o foo exe foo f90 bar o 当foo f90 and bar f90位于同一目录中 如何指定 g
  • 在一条语句中对多个变量进行相同的赋值

    有没有一种方法可以为不同的变量分配相同的值 而无需在单个语句中构造数组 例如 如果我有变量a b c d and e 我可以分配类似的东西吗 a b c d e 10 0 我知道我可以用一行来做 a 10 0 b 10 0 c 10 0 d
  • 如何在Fortran代码中将二维数组转换为一维数组?

    如何将 r i j 转换为一维数组以便可以轻松地对数字进行排序 program sort implicit none character CN 8 O 7 integer j iconf nconf integer i nbins t in
  • R:使用带有 .Call 和 C/C++ 包装器的 Fortran 子例程而不是 .Fortran 的优点?

    我有一个 R 包 它使用大量 Fortran 子例程来进行递归线性代数计算的嵌套循环 很大程度上依赖于 BLAS 和 LAPACK 例程 作为 Fortran 的接口 我使用 Fortran功能 我刚刚读过乔纳森卡拉汉的博客文章 http
  • Fortran gfortran linux 中的“分段错误(核心转储)”错误

    我正在创建一个程序 该程序将分析目录中的文件 fits 然后它将在另一个目录中创建另一个文件 txt 它只是一个转换器 当我尝试执行该程序 编译正常 时 它给了我一条错误消息 程序收到信号 SIGSEGV 分段错误 无效的内存引用 此错误的
  • 这些双精度值如何精确到小数点后 20 位?

    当精度是一个问题时 我正在测试一些非常简单的等价错误 并希望以扩展双精度执行操作 这样我就知道答案在 19位数字中 然后以双精度执行相同的操作 其中第 16 位会有舍入误差 但不知何故 我的双精度算术保持了 19 位精度 当我在扩展双精度中
  • Fortran 意图(inout)与省略意图

    良好的实践表明 Fortran 中的子例程参数每个都应具有指定的意图 即intent in intent out or intent inout 如上所述这个问题 https stackoverflow com questions 1011
  • 在 fortran 子例程中包含 c/c++ 头文件

    我有一个用 C C 编写的库 其开发人员声明该库具有 Fortran 接口 该接口将被启用 包括头文件 h 并调用经典子例程 我想编译我的 Fortran 程序并链接该库 该库已经过测试并且可以工作 这是主程序 Main program I
  • Fortran90 中 BLAS 函数返回零

    我正在学习在Fortran90中使用BLAS 并使用子例程编写了一个简单的程序SAXPY https software intel com en us mkl developer reference fortran axpy和函数SNRM2
  • FORTRAN:数据多态

    我试图隐藏真实数据类型和复杂数据类型之间的差异 在 FORTRAN 2003 中 我认为可能有一种方法可以做到这一点 目标是定义一个多态可分配数组 其类型可以在运行时决定 另外 还有一个子例程 它使用多态数组来做一些代数 相同的方程适用于真
  • Fortran DLL 导入

    Fortran 中有一段代码罗伯特 L 帕克和菲利普 B 斯塔克 http www stat berkeley edu 7Estark Code sbvq f FORTRAN subroutine bv key m n a b bl bu
  • CMake:Fortran 模块和编译顺序

    我有一个大型 Fortran 程序 其中包含许多目录 每个目录都在伪库中单独编译 但仍然存在相互依赖的混乱 因此最终所有伪库都组合在一个可用的库中 我想使用 Fortran 模块 但它非常脆弱 因为我不能依赖自动依赖项检查 并且根据顺序编译

随机推荐

  • Java 8 DateTimeFormatters 常量在哪里定义?

    我正在看DateTimeFormatter https docs oracle com javase 8 docs api java time format DateTimeFormatter html类 我想知道常量在哪里 M EEE a
  • 包含或异或有什么区别?

    我一直在研究一些业务流程执行语言 BPEL 和相关的建模系统 BPMN 其中设计人员需要了解流程流的包容性和排他性网关 非常感谢您的帮助 假设适用相同的规则 对术语的一般解释就足够了 这是我试图理解的一些技术文本对马克的回应 对于连接两个活
  • 是否在数据库级别或服务器/实例级别启用了“CLR 集成”?

    我试图了解启用 CLR 是否在数据库级别或服务器级别 实例级别启用它 在线书籍根本不清楚 如果我使用此命令启用 CLR 会发生什么 它会在所有服务器上启用吗 sp configure clr enabled 1 GO RECONFIGURE
  • “结合更牢固”这句话是什么意思?

    我知道这可能是一个新手问题 但我试图理解这句话 来自一篇关于使用 EBNF 的元语言的论文 Logical and binds stronger than logical or 在此之前它说 Conditions are condition
  • 无法从 master 连接到 kubernetes pod:i/o 超时

    我配置了 1 个主节点和一个节点的 kubernetes 集群 运行主节点和节点的机器不在同一网络中 对于网络 我安装了 calico 并且所有 pod 都在运行 为了测试我使用的集群获取外壳示例 https kubernetes io d
  • 用 Java 写入文件

    我对 Java 很陌生 由于某种原因我无法写入文件 我的代码如下所示 FileWriter fstream try fstream new FileWriter fileLocation BufferedWriter out new Buf
  • 如何定期更新 Label 控件的值?

    我试图让标签显示一些文本 然后在一段时间后刷新自身并能够稍后重新显示其他内容 但目前我不知道如何使标签暂停 如果可能的话 到目前为止我的代码 foreach var x in mod labelWARNING Visible true la
  • 全屏纹理采样的最佳方式

    在片段着色器中采样全屏纹理的最佳方法是什么 例如延迟渲染器中的 g 缓冲区 或后处理着色器中的场景纹理 目前我使用以下两种方式 将屏幕尺寸作为统一值传递给着色器并计算 u v gl FragCoord vec2 texCoord gl Fr
  • 在 .each 循环中显示一个条目的模式 - Rails / Bootstrap

    我想要一个链接来打开一个模式 显示单击的对象 word title 显示在每个循环中 现在它会打开模式 但随后会为循环中的每个项目再次显示它 h1 Glossary of words h1 p Pagination at 25 p tabl
  • 如何将 CSV 或 JSON 导入到 firebase cloud firestore

    有没有办法像 Firebase 实时数据库一样将 CSV 或 JSON 导入到 firebase cloud firestore 通用解决方案 我发现许多脚本允许上传 JSON 但没有一个允许子集合 我上面的脚本处理任何级别的嵌套和子集合
  • 如何使用XNA加载文件夹中的所有文件?

    我想加载文件夹中的所有文件 内容 纹理 进入游戏使用Content Load 文件名 但是 我无法以这种方式 找到 位于 Content 内的文件 该程序而是查看 bin 调试 内容 纹理 但是当尝试使用 Content Load 加载 j
  • 模板类成员特化声明

    当我在模板类中专门化一个 静态 成员函数 常量时 我 对声明的去向感到困惑 这是我要做什么的一个例子 直接来自IBM 关于模板专业化的参考 http publib boulder ibm com infocenter comphelp v8
  • Koa 中的 Promise 错误处理

    如果我在 Koa 中做出承诺 它们可能会被拒绝 function fetch var deferred q defer Some async action which calls deferred reject return deferre
  • 如何让Android上的工具栏占据全宽?

    结果如下 https i stack imgur com VgbZT png https i stack imgur com VgbZT png 我希望它位于状态栏正下方且全宽 就像这样 https i stack imgur com FF
  • Internet Explorer 8 在哪里存储其故障转储?

    我正在对抗一个错误 该错误不会在我的计算机上重现 但每次都会在我客户的计算机上重复 我已经尝试了一切 现在我正在寻找 IE8 崩溃后留下的任何调试数据 或其他数据 谷歌和微软的搜索没有给我任何结果 Internet Explorer 8 在
  • npm 错误! npm install 时代码 EINTEGRITY

    当我尝试进行 npm install 时 出现此错误 npm ERR code EINTEGRITY npm ERR sha512 boQj1WFgQH3v4clhu3mTNfP vOBxorDlE8EKiMjUlLG3C4qAESnn9A
  • 将 div 定位到包含 div 的底部

    如何将 div 定位到包含 div 的底部 div class outside div class inside inside div div 此代码将文本 inside 放置在页面底部 outside width 200px height
  • aov 公式错误项:矛盾的例子

    我已经看到了 R 中受试者内设计的通用公式的两种基本方法aov R 随机 X 依赖 W 内 B 之间 Pure within X Error R W1 W2 or X W1 W2 Error R W1 W2 Mixed X B1 B2 Er
  • deep=True 在 pyyaml.Loader.construct_mapping 中做什么?

    在网上搜索自定义构造函数的用法时 我看到如下内容 def some constructor loader node value loader construct mapping node deep True return SomeClass
  • Fortran I/O:指定大记录大小

    我正在尝试将一个数组写入文件 我以这种方式打开文件 open unit 20 FILE output txt form unformatted access direct recl sizeof u Here u是一个数组并且sizeof