對大量數(shù)據(jù)的計算可以考慮將數(shù)據(jù)分布在不同的計算節(jié)點上,使每個單獨節(jié)點上的數(shù)據(jù)量小于其可用內(nèi)存。劃分數(shù)據(jù)時,應(yīng)盡量使不同計算節(jié)點上的數(shù)據(jù)交換和通信量最少,最佳情況是使各臺節(jié)點完全獨立地進行計算,不做任何數(shù)據(jù)交換和通信。
因為現(xiàn)在的機器幾乎都是多核多處理器的,在每個節(jié)點上還可以進行節(jié)點內(nèi)的并行,以充分利用每臺機器的計算性能。
做并行計算還需要選擇一種合適的并行計算工具,很多編程語言都提供了多種并行實現(xiàn)機制。以Python為例,可以使用標準庫中的[threading模塊](https://docs.python.org/2/library/threading.html)進行線程級別的并行,[multiprocessing模塊](https://docs.python.org/2/library/multiprocessing.html)進行進程級別的并行,[concurrent.futures模塊](https://docs.python.org/3/library/concurrent.futures.html)實現(xiàn)異步并行,使用[IPython.parallel模塊](https://ipython.org/ipython-doc/3/parallel/index.html)進行多種方式的并行,使用[mpi4py包](https://pypi.org/project/mpi4py/)進行MPI消息傳遞并行計算,等等。如果可以使用C/C++,F(xiàn)ortran或者使用cython為Python編寫擴展模塊,還可以使用OpenMP并行。我的個人[簡書專題](https://www.jianshu.com/c/5019bb7bada6)和[CSDN博客專欄](https://blog.csdn.net/column/details/26248.html)中有對用Python做并行計算的專門介紹并提供了大量的程序?qū)嵗S行枰蛘吒信d趣的可以了解下。