gpt4 book ai didi

fortran - Fortran intent(inout) 是否传递值的副本,或指向 RAM 地址的指针/引用?

转载 作者:行者123 更新时间:2023-12-05 00:23:56 27 4
gpt4 key购买 nike

正如标题所述,我想知道 Fortran intent(inout) 是否传递值的副本,或指向 RAM 地址的指针/引用?我需要知道这一点的原因是我需要传递一个(相对)大数据矩阵。如果它创建了一个会导致我出现问题的本地副本。谢谢!

最佳答案

Fortran 没有指定函数和子例程参数如何传递的细节,但它确实要求如果一个过程修改了 intent(out)intent(inout)参数,则在过程返回后,调用者将可以看到更改。编译器通过引用传递参数来实现这一要求是很常见的,但这不是唯一的可能性——复制输入/复制输出是主要的替代方法。

您通常可以依靠编译器来实现最快的行为,它可以确定是正确的,这通常是通过引用传递。但是,在某些情况下这不起作用,例如将非连续数组部分传递给假定大小的虚拟参数,并且有时复制输入/复制输出更快(可能在某些大型多处理器系统上分段内存架构)。

最重要的是,尽管您提出了一个很好的问题,但没有通用的答案。通常情况下,您最好先使其工作,然后在需要时使其更快。将数组复制问题放在脑后,但在可以进行测试之前不要太担心它。

关于fortran - Fortran intent(inout) 是否传递值的副本,或指向 RAM 地址的指针/引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27304084/

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