Is randperm() consistent under different hardware platform, OS, MATLAB versions?
이전 댓글 표시
I use randperm() to generate sets of numbers repeatly using a for loop. I always make sure I keep the RandStream consistent over different running environment by using such as,
RandStream.setDefaultStream(RandStream('mt19937ar','seed',1); or RandStream.getDefaultStream();
Recently, I've notice that sometimes I get different randomization sequences across the sequential randperm sets, although I was using an identical seed. The only difference was 1) Physical processor (I was using number of heterogeneous cluster nodes)
Should I get the same sequences across different processors?
답변 (3개)
Walter Roberson
2012년 9월 26일
0 개 추천
Exactly which point you seed at could make a difference. When you use multiprocessing operations, the different tasks are seeded differently, so you would need to seed inside the parallel operation.
Let's test it out!
What do you get? Post in a comment...
% r2011b, Windows 7, 64bit maxNumCompThreads=4
rng(678)
randperm(10)
randperm(10)
ans =
6 5 9 10 1 4 2 3 8 7
ans =
7 4 3 6 8 5 1 2 9 10
Now, on the same system:
% r2007b, Windows 7, 64bit maxNumCompThreads=1
rand('twister',678)
randperm(10) % Same as above...
randperm(10) % Same as above...
댓글 수: 6
Walter Roberson
2012년 9월 27일
I get the same pair of results on R2012a, Mac OS-X Lion, 64 bit
Matt Fig
2012년 9월 27일
Now we just need a linux person to chime int!
Daniel Shub
2012년 9월 27일
I thought Walter was a Linux person... Same in Linux (R2011a, Arch, 64-bit).
Matt Fig
2012년 9월 27일
Is Mac OS a linux thing? I don't know much about it.
Daniel Shub
2012년 9월 27일
No, Mac and Linux are different. I just thought Walter used Linux and not a Mac.
Walter Roberson
2012년 9월 28일
I was on Linux where I used to work.
Peter Perkins
2012년 9월 28일
0 개 추천
John, there is no difference in the random number generators between different hardware.
You seem to be saying that this was a distributed environment. Without knowing more, it's hard to say anything concrete, but you have to be careful about your random stream initialization on the workers. Especially if this is a parfor loop, since the way the iterations get doled out is unpredictable.
카테고리
도움말 센터 및 File Exchange에서 Entering Commands에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!