gpt4 book ai didi

memory - 在 Fortran 90 中跟踪内存使用情况

转载 作者:IT王子 更新时间:2023-10-28 23:36:51 26 4
gpt4 key购买 nike

我正在尝试跟踪 Fortran 90 程序中子例程的内存使用情况和 CPU 时间。要跟踪跟踪 cpu 时间,我使用以下内容:

调用 cpu_time(tic)
调用子程序(args)
调用 cpu_time(toc)
time = toc-tic

有没有办法做类似记录内存使用的事情?做这个的最好方式是什么?提前感谢您的帮助。

最佳答案

liskawc 有一个非常好的解决方案,我一直在寻找类似的东西。

他要求提供反馈,有几个方面可以改进。

  • 有几个系统调用可以通过直接从 Fortran 程序中读取系统文件来消除
  • 解决方案取决于用户目录中的临时文件
  • 我的 fortran 编译器不喜欢打开以波浪号开头的文件

我修改了他原来的程序来解决这些问题:

subroutine system_mem_usage(valueRSS)
implicit none
use ifport !if on intel compiler
integer, intent(out) :: valueRSS

character(len=200):: filename=' '
character(len=80) :: line
character(len=8) :: pid_char=' '
integer :: pid
logical :: ifxst

valueRSS=-1 ! return negative number if not found

!--- get process ID

pid=getpid()
write(pid_char,'(I8)') pid
filename='/proc/'//trim(adjustl(pid_char))//'/status'

!--- read system file

inquire (file=filename,exist=ifxst)
if (.not.ifxst) then
write (*,*) 'system file does not exist'
return
endif

open(unit=100, file=filename, action='read')
do
read (100,'(a)',end=120) line
if (line(1:6).eq.'VmRSS:') then
read (line(7:),*) valueRSS
exit
endif
enddo
120 continue
close(100)

return
end subroutine system_mem_usage

如果您可以进一步改进此程序,请随时更新!

关于memory - 在 Fortran 90 中跟踪内存使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22028571/

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