#include "memory_parallel.h" int get_cluster_memory_usage_kb(long* vmrss_per_process, long* vmsize_per_process, int root, int np) { long vmrss_kb; long vmsize_kb; int ret_code = get_memory_usage_kb(&vmrss_kb, &vmsize_kb); if (ret_code != 0) { printf("Could not gather memory usage!\n"); return ret_code; } MPI_Gather(&vmrss_kb, 1, MPI_UNSIGNED_LONG, vmrss_per_process, 1, MPI_UNSIGNED_LONG, root, MPI_COMM_WORLD); MPI_Gather(&vmsize_kb, 1, MPI_UNSIGNED_LONG, vmsize_per_process, 1, MPI_UNSIGNED_LONG, root, MPI_COMM_WORLD); return 0; } int get_global_memory_usage_kb(long* global_vmrss, long* global_vmsize, int np) { long vmrss_per_process[np]; long vmsize_per_process[np]; int ret_code = get_cluster_memory_usage_kb(vmrss_per_process, vmsize_per_process, 0, np); if (ret_code != 0) { return ret_code; } *global_vmrss = 0; *global_vmsize = 0; for (int i = 0; i < np; i++) { *global_vmrss += vmrss_per_process[i]; *global_vmsize += vmsize_per_process[i]; } return 0; }