平行計算筆記(001)-安裝mpi,openmp動力
需要用高效能計算求解微分方程,這也將是我這接下來三年的學習方向之一。目前以mpi為主,將來肯定會涉及到異構計算。希望寫這些筆記記錄我的修煉歷程。目前的學習目標及就是掌握將偏微分方程組的差分形式稠密化。對將來的看法
主要的方向是平行計算的程式開發。希望能夠做數學性更強的研究。平行計算最合適的看來還是神經網路和計算機圖形學。因為如果要將計算潛力發揮出來,需要時間複雜度和空間複雜度是乙個量級的。偏微分方程組的差分求解的問題在於,將偏微分方程組差分化之後,得到的是稀疏矩陣,無法完全發揮計算潛力。
所以將來可能會涉及一些計算機圖形學和神經網路,主要還是應用,計算機體系結構會涉及的比較少。為並行機程式設計[1]
2023年mcgraw和axelrod定義了為並行機開發應用軟體的四條不同的途徑。
1. 擴充套件現有編譯器以便將序列程式轉化為並行程式。
2. 擴充套件現有程式語言,增加新操作以允許使用者表達並行性。
3. 在現有序列語言上增加乙個並行語言層。
4. 定義全新的並行語言和編譯系統。
1. 安裝mingw和msmpi1.1 mingw-w6464位系統得到這樣的結果表示安裝好了msmpi。
按照[mingw coding under windows (c, c++, openmp, mpi)](
處理一下msmpi檔案,其中$msmpi_lib64這些路徑由set msmpi檢視。
> mkdir ~/msmpi # create a temporary folder under your home directory
> cd ~/msmpi # enter the folder
> cp "$msmpi_lib64/msmpi.lib" . # copy msmpi.lib to ~/msmpi/; the import library, which is a placeholder for dll
> cp "$windir/system32/msmpi.dll" . # copy msmpi.dll to ~/msmpi/; the runtime library
> gendef msmpi.dll # generate msmpi.def. for 32-bit, use: gendef -a msmpi.dll, which specifies the stdcall format
> dlltool -d msmpi.def -d msmpi.dll -l libmsmpi.a # generate the (static) library file libmsmpi.a
> cp libmsmpi.a /mingw64/lib # copy this library file to where g++ looks for them;
# try "g++ --print-search-dirs"
> cp "$msmpi_inc/mpi.h" . # copy the header file mpi.h to ~/msmpi/
在 ~/msmpi 資料夾中,開啟 mpi.**件 , 找到「typedef __int64 mpi_aint」,在這條語句上面一行加上 「#include 」 (without the quotes), 來定義 __int64.
> cp mpi.h /mingw64/include # copy the header file to the default include folder
c程式的編譯命令和執行命令為:
>gcc -o mpi_hello_world.exe mpi_hello_world.c -l msmpi -l "c:program files (x86)microsoft sdksmpilibx64" -i "c:program files (x86)microsoft sdksmpiinclude"
執行程式命令為mpiexec -n 3 mpi_hello_world.exe,這裡3是程序數
得到hello world from processor laptop-8jdfvna8, rank 2 out of 3 processors
hello world from processor laptop-8jdfvna8, rank 0 out of 3 processors
hello world from processor laptop-8jdfvna8, rank 1 out of 3 processors
1.3 openmp
編譯使用openmp需要加上 -fopenmp
gcc -fopenmp omp_hello.c -o omp_hello
總結
win10環境下使用msmpi其實有點麻煩,linux使用openmpi其實非常簡單。關於msmpi,下面是今天安裝測試用到的所有檔案。
其實visual studio配置msmpi看起來更好用,不過因為以後主要還是使用linux,所以還是使用gcc
參考文獻
[1] parallel programming in c with mpi and openmp, michael j. quinn, mcgraw-hill, 2003.
[2]
[3]
python平行計算 python平行計算
0.基礎並行 發 multiprocessing threading 1.concurrent 2.併發 asynico 3.ipython下的平行計算 使用ipyparallel庫的ipython提供了前所未有的能力,將科學python的探索能力與幾乎即時訪問多個計算核心相結合。系統可以直觀地與本...
CUDA平行計算框架程式設計 矩陣相乘平行計算
當下的gpgpu general purpose gpu graphic process unit cuda compute unified device architecture 即通用計算圖形處理器。安裝過程可參考我的另一篇blog cuda軟體架構 1 開發庫 cuda library 2 執...
R語言平行計算程式設計
r語言並行程式設計例項,將資料集rcuters 21578的50個文件賦值100,000次,得到包含500萬個文件的資料庫,查詢正規表示式。tm軟體包是r語言中為文字挖掘提供處理的package,提供資料匯入 語料庫處理 預處理 元資料管理 建立term document矩陣等功能。平行計算 lib...