c並行編程
⑴ 並行程序設計的類別
目前並行編程類型逐漸匯聚於兩類:用於PVP,SMP和DSW的共享變數的單地址空間模型和用於MPP和機群的消息傳遞的多地址空間模型.
並行編程模型逐漸匯聚於三類標准模型:數據並行(如:HPF),消息傳遞(如:MPI和PVM),和共享變數(如OpenMp).
現在人們希望高性能的並行機應是 具有單一系統映像的巨大的工作站,使得很多用戶都能利用增強處理能力和儲存容量來運行多個串列作業,這就是所謂的串列程序並行系統SPPS.
當我們在實際的並行機上設計並行程序時,絕大部分均是採用擴展Fortran和c語言的辦法,目前有三種擴展的辦法:一是庫函數法:除了串列語言所包含的庫函數外,一組新的支持並行性和交互操作的庫函數(如MPI消息傳遞庫和POSIXPthreads多線程庫)引入到並行程序設計中。二是新語言結構法:採用某些新的語言結構來幫助並行程序設計以支持並行性和交互操作(如Fortran 90 中的聚集數組操作); 三是編譯制導法:程序設計語言保持不變,但是將稱之為編譯制導的格式注釋引入到並行程序中.
⑵ C語言中的MPI編程和多線程有什麼區別,MPI編程中針對的是一台電腦多核還是多台電腦謝謝!
MPI(MPI是一個標准,有不同的具體實現,比如MPICH等)是多主機聯網協作進行並行計算的工具,當然也可以用於單主機上多核/多CPU的並行計算,不過效率低。它能協調多台主機間的並行計算,因此並行規模上的可伸縮性很強,能在從個人電腦到世界TOP10的超級計算機上使用。缺點是使用進程間通信的方式協調並行計算,這導致並行效率較低、內存開銷大、不直觀、編程麻煩。OpenMP是針對單主機上多核/多CPU並行計算而設計的工具,換句話說,OpenMP更適合單台計算機共享內存結構上的並行計算。由於使用線程間共享內存的方式協調並行計算,它在多核/多CPU結構上的效率很高、內存開銷小、編程語句簡潔直觀,因此編程容易、編譯器實現也容易(現在最新版的C、C++、Fortran編譯器基本上都內置OpenMP支持)。不過OpenMP最大的缺點是只能在單台主機上工作,不能用於多台主機間的並行計算!如果要多主機聯網使用OpenMP(比如在超級計算機上),那必須有額外的工具幫助,比如MPI+OpenMP混合編程。或者是將多主機虛擬成一個共享內存環境(Intel有這樣的平台),但這么做效率還不如混合編程,唯一的好處是編程人員可以不必額外學習MPI編程。
⑶ 8255a可編程並行介面c語言實驗
inline int IsSpace(int c)
{
if(c == 0x20 || c == 0x09 || c== 0x0D)
{
return 1;
}
return 0;
}
template<class T>
T RemovePreAndLastSpace(const T& str)
{
int length = str.size();
int i = 0,j = length -1;
while(i < length && IsSpace(str[i])){i++;}
while(j >= 0 && IsSpace(str[j])){j--;}
cout << i << " :" << j<< endl;
if(j<i) return T();
return str.substr(i,j-i+1);
}
⑷ Compac Visual Fortran 如何做並行計算
程序要實現並行其實有兩個方面,不單單是編譯器的問題,首先你還要裝並行庫,比如mpich;其次,你要把源程序改為並行程序,要加上一些並行語句如MPI_Init (&argc, &argv),必要時還應該把程序結構改為適用於並行。最後,你就可以把程序編譯為並行執行碼了,祝你好運!
給你一個vc++配置編譯並行的網址,cvf也應該差不多,windows下並行其實我沒做過,我主要在linux下做並行,
http://securelvlan.spaces.live.com/Blog/cns!C60FD6EABDDFC877!250.entry