Memoization
這是一種functional programming optimization的方法。在sequential FP中,這其實就是建立lookup table,類似dynamic programming的方法:
parallelization版本中,lookup table應該要存放的是future objects,這樣才不會馬上去compute tasks,但是一旦compute之後,就不會再做第二次:
Java Streams
簡單來說,就是把java collection轉換成functional programming的collection,所以一堆filter/map/reduce之類的function都可以用,對parallelization來說,跟scala依樣,只要加上個par就可以把stream轉換成parallel stream,所以所有的filter/map/reduce之類的operation都會run in parallel。Determinism
首先定義1. functional determinism: 如果一個parallel prorgam,同一個input永遠會有同一個output
2. structural determinism: 如果一個parallel program,同一個input永遠會有同一個computation graph
3. determinism: 1. 2.同時成立
parallel program最常見的問題就是data race,如果使用本課程所教的parallel programming constructs的話,保證是deterministic!
就這樣 @@
沒有留言:
張貼留言