2011-03-05 23 views
1

this paper:避免不必要的序列化算法:算法,比如隨機 數生成器,必須通過種子下一臺發電機呼叫連載 算法不必要的,如果次數發電機將 稱爲內一個線程無法準確預測。相反,這些算法 應替換爲更多分佈式版本。自動並行化友好的編程實踐

問:任何人都可以請解釋「如果在線程內調用生成器的次數不能準確預測,就會不必要地序列化算法。」至於隨機數 代我們必須通過一個種子。因此如何避免序列化。

回答

1

如果您有依賴於以前的值RNG(最),你寫這樣的:

r = Random.new(); 
for(int i=0; i<100*usersInput; i++) 
    r.rand(); 
} 

它甚至不能由智能編譯器自動並行化。但是,如果你寫這樣的:

for(int i=0; i<usersInput; i++) { 
    r = Random.new(); 
    [for(int j=0; j<100; j++) { 
     r.rand(); 
    }] fork 
} 

一個非常聰明的編譯器可以使usersInput用戶號碼的線程的程序運行,每次將只需要運行100次迭代,而不是usersInput * 100。