原帖地址:https://v2ex.com/t/768540
以下是我的回复:
蒙特卡洛是一类算法,这类算法本身都是可以并行的
例如 spark的例子,并行计算 Pi的值
https://github.com/apache/spark/blob/master/examples/src/main/scala/org/apache/spark/examples/SparkPi.scala
不过,具体问题具体分析。
我们很多时候,并行是为了加速,而不是加量。
单机执行【或者单线程执行】,如果需要8个小时。
并行自然是为了8个线程同时跑,这样1个小时就可以完成了。
而不是,每个线程跑8个小时,这样就没有意义了。
如何实现呢?
可以参考这篇论文。
https://webdocs.cs.ualberta.ca/~mmueller/ps/enzenberger-mueller-acg12.pdf
A Lock-free Multi-threaded Monte-Carlo Tree Search Algorithm
我特别希望看到v2ex可以更多提出这样的帖子。我觉得对初学者而言,这类问题是比较常见的。而我们老一辈也希望回答年轻人的问题,让技术得以传承。
我年近半百,儿子都上大学了,仍然坚持每天看论文学习。活到老学到老。我很欣赏 这位同学,因为他学习了,否则不会提出这个问题。而且我也欢迎 大家提问,我会尽力回答。我觉得大家互相学习/讨论,才能自己进步,帮助别人进步。
不过,我比较忙,一般上来的时间也少。回答不及时是肯定的。另外,我也不是万能的,很多问题也回答不了。总之,鼓励大家多学习,多提问吧。