【问题标题】:How can I measure the memory occupancy of Python MPI or multiprocessing program?如何测量 Python MPI 或多处理程序的内存占用率?
【发布时间】:2015-08-26 00:22:17
【问题描述】:

我在 Cray XE6 机器上执行此操作,我无法在计算节点上登录并且不可能进行交互式会话,因此我需要以某种方式使用 top 命令:在后台运行 top 并让它拍摄快照定期并将其发送到日志文件...有人可以举例说明如何执行此操作吗?

谢谢

【问题讨论】:

    标签: python memory multiprocessing mpi mpi4py


    【解决方案1】:

    使用resource 模块查询当前内存使用情况。然后,在 MPI 程序的某个地方,每隔一定时间将使用情况转储到日志中。

    例如,以下测量当前进程的最大常驻内存大小,并将该值附加到文件中。您可能会做的是在模拟的每个时间步长的某处插入 sn-p。

    import datetime
    import resource
    import os
    from mpi4py import MPI
    
    mem = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
    rank = MPI.COMM_WORLD.Get_rank()
    fname = 'r{}.log'.format(rank)
    with open(fname, 'a') as f:
        # Dump timestamp, PID and amount of RAM.
        f.write('{} {} {}\n'.format(datetime.datetime.now(), os.getpid(), mem))
    

    注意文件的命名,使用正在运行的 MPI 进程的等级(根据 @Hristo 的建议)。

    【讨论】:

    • 对于 MPI 程序,根据进程等级(即MPI.COMM_WORLD.rank)命名日志文件更有意义,因为在不同节点上运行的两个等级最终可能具有相同的 PID。
    • 好点;更改代码以在文件名中使用 MPI 等级。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-24
    • 2013-05-14
    • 1970-01-01
    • 2011-09-20
    • 1970-01-01
    • 2018-06-07
    • 2016-07-19
    相关资源
    最近更新 更多