Archives


- Beowulf
- Beowulf Announce
- Scyld-users
- Beowulf on Debian

[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.

Search

Mattijs Janssens m.janssens at opencfd.co.uk
Thu Aug 13 13:45:01 PDT 2009


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



More information about the Beowulf mailing list