隨着單核計算能力的不斷的被挖掘,單核計算性能提升的潛力在不斷的減少。爲了進一步提升PC的計算能力,使用多核的CPU不失爲一種明智的選擇。 多核CPU不再通過提升指令級指令的並行計算來獲得性能的提升,而是通過多個核(實質上就是多個微型的CPU)的並行計算來提高CPU的性能。這種CPU能支持物理層的並行計算。這使得並行計算成爲了計算機發展新時期的重要的研究方向。 以前的程序設計絕大多數都是串行的,也就是指令流的執行在同一時間週期內,只能執行一條指令。然而這是否意味着串行化的程序設計不支持並行計算呢?答案是否定的。很簡單的,只要你有一個N核的CPU,你就可以通過線程的創建來實現並行計算(最適合創建的線程數與核的數目相等------現階級主要是雙核的,所以你要充分使用計算機的計算能力,創建雙線程進行並行計算,是最爲合理的)。 -----原理:操作系統將這些相互獨立的線程分配給不同的處理機(CPU單核)進行並行處理。 ------這些結論當然不是我誇誇其談的啦,我是做過相當測試的。測試的代碼很簡單,創建一個WIN32程序.在裏面設置如下:當選擇不同的菜單選項時,可以分別選擇創建不同數目的線程進行不間斷計算(死循環)。關鍵代碼可見文未。 實驗結果表明: 當N=0時,創建的線程數爲0,CPU利用率爲系統閒置時的利用率,10%左右。 當N=1時,創建的線程數爲1,CPU利用率達到 60%左右 當N=2時,創建的線程數爲2,CPU利用率達到 100%,此時系統反應相當緩慢了,窗口的拖拉變得相當遲緩。 當N=3,10時,創建的線程數爲3,10,CPU利用率依然爲100% 。。。。。。。 (這是在配置爲VISTA終極版,CPU爲AMD 3600+(雙核) 內存爲2G(跟內存無關的) 下的實驗結果 ) 這個實驗結果也讓我想到了我以前的掃雷程序------使用了多線程,從而解決了因界面繪製時間過長,而造成程序易於崩潰的問題。這就是使用串行化語言(C++)編寫的並行化程序啊,感慨中。。 附線程的創建與銷燬程序如下: case ID_N0: 線程代碼如下: DWORD WINAPI ThreadProc (PVOID pParam) |
如何在普通PC上進行多核編程
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.