回覆列表
  • 1 # 自可樂

    對大量資料的計算可以考慮將資料分佈在不同的計算節點上,使每個單獨節點上的資料量小於其可用記憶體。劃分資料時,應儘量使不同計算節點上的資料交換和通訊量最少,最佳情況是使各臺節點完全獨立地進行計算,不做任何資料交換和通訊。

    因為現在的機器幾乎都是多核多處理器的,在每個節點上還可以進行節點內的並行,以充分利用每臺機器的計算效能。

    做平行計算還需要選擇一種合適的平行計算工具,很多程式語言都提供了多種並行實現機制。以 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)實現非同步並行,使用 [IPython.parallel 模組](https://ipython.org/ipython-doc/3/parallel/index.html)進行多種方式的並行,使用 [mpi4py 包](https://pypi.org/project/mpi4py/)進行 MPI 訊息傳遞平行計算,等等。如果可以使用 C/C++,Fortran 或者使用 cython 為 Python 編寫擴充套件模組,還可以使用 OpenMP 並行。我的個人[簡書專題](https://www.jianshu.com/c/5019bb7bada6)和 [CSDN 部落格專欄](https://blog.csdn.net/column/details/26248.html)中有對用 Python 做平行計算的專門介紹並提供了大量的程式例項。有需要或者感興趣的可以瞭解下。

  • 中秋節和大豐收的關聯?
  • 你喜歡以前過年時貼年畫那種感覺嗎?