A problem with memory deregistration
Marco Corbatto <[email protected]>
| Newsgroups | gmane.network.myrinet.general |
|---|---|
| Message-ID | <[email protected]> |
Hi,
Using mpich-1.2..3 we get a problem with memory deregistration
using the synchronous send (MPI_Ssend) of a datatype with size >16KB.
The problem doesn't appear either using MPI_Send or sending contiguous
buffers.
For example running the following code:
#include "mpi.h"
#include <stdio.h>
int main(int argc,char **argv) {
int myid, namelen;
char processor_name[MPI_MAX_PROCESSOR_NAME];
MPI_Status status;
float v1[3000],v2[3000];
int ArrayLength[2];
MPI_Aint ArrayOffset[2];
MPI_Datatype ArrayTipi[2] = {MPI_FLOAT, MPI_FLOAT};
MPI_Datatype dtype;
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD,&myid);
MPI_Get_processor_name(processor_name,&namelen);
ArrayLength[0]=ArrayLength[1]=3000;
MPI_Address(v1, &(ArrayOffset[0]));
MPI_Address(v2, &(ArrayOffset[1]));
MPI_Type_struct(2,ArrayLength,ArrayOffset,ArrayTipi,&dtype);
fprintf(stderr,"Process %d on %s\n", myid, processor_name);
if (myid == 0)
MPI_Ssend(MPI_BOTTOM, 1, dtype, 1, 99, MPI_COMM_WORLD);
else
MPI_Recv(MPI_BOTTOM, 1, dtype, MPI_ANY_SOURCE, 99, MPI_COMM_WORLD,&status);
MPI_Barrier(MPI_COMM_WORLD);
MPI_Finalize();
}
we get the following message:
Process 0 on n1
Process 1 on n2
Unexpected state for clear_interval:zone=0x8000000:benice=1,s=0xe4,e=0xeb,i=0xe5,j=0xe5,registered[j]=1,refcount[j]=1
9305 vvvvvv dump_reg_cache vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
regcache.c:132: failed assertion: "0".
9305 from 0x8000000 length 0xe4000,registered=0 refcount=0
9305 from 0x80e4000 length 0x7000, registered=1 refcount=1
9305 from 0x80eb000 length 0x315000, registered=0 refcount=0
9305 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
probably because there is an attempt to deregister a region
with refcount !=0
Thanks in advance
Marco