c 並行程式設計 平行計算筆記 001

2021-10-11 06:25:11 字數 2588 閱讀 8037

平行計算筆記(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...