gpt4 book ai didi

matrix - Fortran 90 中矩阵的最大大小避免段错误

转载 作者:行者123 更新时间:2023-12-04 17:22:26 25 4
gpt4 key购买 nike

  • Fortran 90 代码中 NxN 矩阵中 N 的最大值是多少,以便不发生段错误?
    例如,当我使用大小为 2^8 x 2^8 的矩阵并将它们用于乘法(使用内在的“matmul”函数)时,我没有任何问题。
    但是,当我使用 2^12 x 2^12 矩阵时,我没有发现任何编译错误,但是我在程序中间出现了段错误。
    我的内存分配用完了还是我的代码中可能存在错误?
    我使用了动态分配,并使用了 64 位 RedHat 操作系统和 64 GB RAM。
  • 最大大小也取决于编译器或系统配置吗?
  • 最佳答案

    Fortran 编译器通常在堆栈上分配可分配的数组;或者可能在堆上。对此我不确定,但我确信 Fortran 标准没有强制要求放置可分配数组的位置。您的编译器文档会告诉您默认情况下可分配数组的放置位置。您可能会发现可以通过移动分配位置或扩展(操作系统确定的)堆栈或堆大小来避免您看到的错误。

    您也可以使用 stat 帮自己一个忙。任何 allocate 的可选参数语句并在您的程序中捕获分配失败。当然,您仍然不会获得分配的数组,但这将避免程序崩溃。

    您还应该遵循@Alexander's answer 中的建议并计算您尝试分配的数组的大小,摆弄堆和堆栈大小不会为您提供比可用 RAM 多的空间。

    关于matrix - Fortran 90 中矩阵的最大大小避免段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19093558/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com