MPI_SEND beansprucht einen großen Teil des virtuellen Speichers
Beim Debuggen meines Programms mit einer großen Anzahl von Kerneln sah ich mich mit einem sehr seltsamen Fehler konfrontiertinsufficient virtual memory
. Meine Untersuchungen führen zu einem ruhigen Code, bei dem der Master jedem Slave kleine Nachrichten sendet. Dann habe ich ein kleines Programm geschrieben, bei dem 1 Master einfach 10 Ganzzahlen mit schicktMPI_SEND
und alle sklaven bekommen es mitMPI_RECV
. Vergleich von Dateien/proc/self/status
vorher und nachherMPI_SEND
hat gezeigt, dass der Unterschied zwischen den Speichergrößen sehr groß ist! Das Interessanteste (was mein Programm zum Absturz bringt) ist, dass dieser Speicher nachher nicht freigegeben wirdMPI_Send
und immer noch viel Platz in Anspruch nehmen.
Irgendwelche Ideen?
System memory usage before MPI_Send, rank: 0
Name: test_send_size
State: R (running)
Pid: 7825
Groups: 2840
VmPeak: 251400 kB
VmSize: 186628 kB
VmLck: 72 kB
VmHWM: 4068 kB
VmRSS: 4068 kB
VmData: 71076 kB
VmStk: 92 kB
VmExe: 604 kB
VmLib: 6588 kB
VmPTE: 148 kB
VmSwap: 0 kB
Threads: 3
System memory usage after MPI_Send, rank 0
Name: test_send_size
State: R (running)
Pid: 7825
Groups: 2840
VmPeak: 456880 kB
VmSize: 456872 kB
VmLck: 257884 kB
VmHWM: 274612 kB
VmRSS: 274612 kB
VmData: 341320 kB
VmStk: 92 kB
VmExe: 604 kB
VmLib: 6588 kB
VmPTE: 676 kB
VmSwap: 0 kB
Threads: 3