我有一個基本程序,它將線程中的消息發送到每個線程並替換一個字符。我的問題是每個線程中生成的隨機數總是相同的。這裏是我的代碼:使用mpi,fortran在每個線程上獲取不同的隨機數
if (me+1 == npe) then
a = 0
else
a = me + 1
end if
if (me == 0) then
b = npe-1
else
b = me-1
end if
if (me == 0) then
call MPI_Send(msg, len(msg), MPI_CHARACTER, a, tag, comm, ierr)
else
call MPI_Recv(msg, len(msg), MPI_CHARACTER, b, tag, comm, stat, ierr)
call random_number(u)
j = FLOOR(14*u)
msg(j:j) = "?"
call MPI_Send(msg, len(msg), MPI_CHARACTER, a, tag, comm, ierr)
end if
if (me == 0) then
call MPI_Recv(msg, len(msg), MPI_CHARACTER, b, tag, comm, stat, ierr)
end if
我=線程數,NPE =線程總數
一切正常,除了隨機生成的數字。我嘗試使用調用random_seed(我),但它不起作用。
爲什麼你想讓每個數字有所不同? mpi的一部分力量是溝通者在相同的過程中工作。 – kilojoules