[Beowulf] parallelization problem
Many of your questions may have already been answered in earlier discussions or in the FAQ. The search results page will indicate current discussions as well as past list serves, articles, and papers.
Mattijs Janssens m.janssens at opencfd.co.ukThu Aug 13 13:45:01 PDT 2009
- Previous message: [Beowulf] parallelization problem
- Next message: [Beowulf] Wake on LAN supported on both built-in interfaces ... ??
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Do a non-blocking receive as well so MPI_IRECV instead of MPI_RECV and make sure you have an MPI_WAITALL for all the requests (both from sending and from receiving). Kind regards, Mattijs On Thursday 13 August 2009 20:15:04 amjad ali wrote: > Hi, all, > > > > I am parallelizing a CFD 2D code in FORTRAN+OPENMPI. Suppose that the grid > (all triangles) is partitioned among 8 processes using METIS. Each process > has different number of neighboring processes. Suppose each process has n > elements/faces whose data it needs to sends to corresponding neighboring > processes, and it has m number of elements/faces on which it needs to get > data from corresponding neighboring processes. Values of n and m are > different for each process. Another aim is to hide the communication behind > computation. For this I do the following for each process: > > > > DO j = 1 to n > > CALL MPI_ISEND (send_data, num, type, dest(j), tag, MPI_COMM_WORLD, > ireq(j), ierr) > > ENDDO > > > > DO k = 1 to m > > CALL MPI_RECV(recv_data, num, type, source(k), tag, MPI_COMM_WORLD, status, > ierr) > > ENDDO > > > > > > This solves my problem. But it gives memory leakage; RAM gets filled after > few thousands of iteration. What is the solution/remedy? How should I > tackle this? > > > > In another CFD code I removed this problem of memory-filling by following > (in that code n=m) : > > > > DO j = 1 to n > > CALL MPI_ISEND (send_data, num, type, dest(j), tag, MPI_COMM_WORLD, > ireq(j), ierr) > > ENDDO > > > > CALL MPI_WAITALL(n,ireq,status,ierr) > > > > DO k = 1 to n > > CALL MPI_RECV(recv_data, num, type, source(k), tag, MPI_COMM_WORLD, status, > ierr) > > ENDDO > > > > But this is not working in current code; and the previous code was not > giving correct results with large number of processes. > > > > Please suggest solution. > > > > THANKS A LOT FOR YOUR KIND ATTENTION. > > > > With best regards, > > Amjad Ali. -- Mattijs Janssens OpenCFD Ltd. 9 Albert Road, Caversham, Reading RG4 7AN. Tel: +44 (0)118 9471030 Email: M.Janssens at OpenCFD.co.uk URL: http://www.OpenCFD.co.uk
- Previous message: [Beowulf] parallelization problem
- Next message: [Beowulf] Wake on LAN supported on both built-in interfaces ... ??
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Beowulf mailing list
