- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

I am just starting in MPI.

Here is part of a FORTRAN PROGRAM I have.

CCCCCCCCCCCCCCCCCCCCCCCCCCCC

c Laplace calculation - tasks divided on all processors

1 nt=1

if (my_rank.eq.0) then

np=mp

else

np=my_rank

endif

nts=ntasks(np,nt)

nte=ntaske(np,nt)

do 55 m=nts,nte

nod14=nod14t(m,nt)

i=nim(nod14)

j=njm(nod14)

nbcv=nbc(i,j)

if (nbcv.eq.0) then

te=t(i+1,j)

tw=t(i-1,j)

tn=t(i,j+1)

ts=t(i,j-1)

t(i,j)=0.25d0*(te+tw+tn+ts)

go to 50

endif

if (nbcv.eq.2) then

t(i,j)=t(i-1,j)

endif

50 if (my_rank.eq.0) go to 55

call mpi_send(t(i,j),1,MPI_DOUBLE_PRECISION,0,1, ! send to master

* MPI_COMM_WORLD,ierr)

55 continue

write(*,*) 'my_rank=',my_rank

IF (my_rank.eq.0) THEN

do 62 nproc=1,nsize-1

nts=ntasks(nproc,nt)

nte=ntaske(nproc,nt)

do 60 m=nts,nte

nod14=nod14t(m,nt)

i=nim(nod14)

j=njm(nod14)

write(*,*) nproc,m,i,j

call mpi_recv(t(i,j),1,MPI_DOUBLE_PRECISION,nproc,1, ! master receive

* MPI_COMM_WORLD,status,ierr)

write(*,*) nproc,m,i,j

60 continue

write(*,*) 'nproc=',nproc

62 continue

endif

CCCCCCCCCCCCCCCCCCCCCCCCCCCC

The output is as follows...

OOOOOOOOOOOOOOOOOOOOOOOOOOOO

>mpiexec -np 12 laplace

my_rank= 3

my_rank= 2

my_rank= 7

my_rank= 1

my_rank= 10

my_rank= 11

my_rank= 5

my_rank= 9

my_rank= 0

1 1 1 1

1 1 1 1

1 2 3 1

my_rank= 4

my_rank= 8

my_rank= 6

OOOOOOOOOOOOOOOOOOOOOOOOOOOO

It goes through all the calculations and mpi_send's

but hangs after the second call to mpi_recv. I have

been trying to figure this out through a long search

but I am still missing something fundamental here.

Your help would be appreciated.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

I believe I resolved this issue...

I Broadcast all required user inputs prior to the calculation section.

Now, I sweep through all 'tasks' (nt=1-4).

After it completes the first iteration (and executes "go to 1")

the program idles again.

I cannot figure out why...

The latest code is attached.

Thanks again.

Link Copied

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

Hi,

Thanks for reaching out to us.

If possible could you please provide the complete reproducer code so that we can investigate more on your issue?

Also, please share the below details:

OS version

MPI version

Thanks & Regards

Shivani

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

The full code is attached. This simple code is a

development step to eventually converting a 3D CFD

code from serial to parallel.

I'm running this on Windows 10 Pro with

Intel Core I5-10600K 6-Core, 12-Thread desktop.

I am using Intel Visual Studio, Intel oneAPI Base

and HPC...

Thank you for your help.

For the problem at hand....

I know that if I were transferring text between

processors I would first write to

write(greeting,*) ...

and then send and receive 'greeting' back and forth

call mpi_recv(greeting,...

call mpi_send(greeting,...

This makes the master wait to receive messages

from other processors. How do I do this in the

current code?

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

I believe I resolved this issue...

I Broadcast all required user inputs prior to the calculation section.

Now, I sweep through all 'tasks' (nt=1-4).

After it completes the first iteration (and executes "go to 1")

the program idles again.

I cannot figure out why...

The latest code is attached.

Thanks again.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

Hi,

We are glad that your issue has been resolved.

Could you please let us know if there is anything else that we can help you with? If no, could you please confirm whether we can close this thread?

Thanks & Regards

Shivani

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

Hi,

Thanks for the confirmation!

As this issue has been resolved, we will no longer respond to this thread.

If you require any additional assistance from Intel, please start a new thread.

Any further interaction in this thread will be considered community only.

Have a Good day.

Thanks & Regards

Shivani

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page