| 2 | 1/1 | 返回列表 |
| 查看: 988 | 回復(fù): 1 | |||
[求助]
OpenMP并行測試算例,是什么影響了C和FORTRAN的運(yùn)行效率? 已有1人參與
|
|
最近在看OpenMP并行編程,一開始只是想學(xué)習(xí)一下C和FORTRAN的并行語法,于是做了一個(gè)測試:矩陣相乘C=A*B。其中A,B,C都是一個(gè)NxN的方陣。 我用C和FORTRAN分別編寫了程序,并加入了OpenMP的并行語法。測試平臺如下: OS:Ubuntu 14.04 x86_64 GCC 4.7.3 GFORTRAN 4.7.3 RAM:8GB CPU:Intel(R) Core(TM)2 Quad CPU Q9400 @ 2.66GHz 一共4核心 程序計(jì)時(shí)測試: time omp.exe -d 1000 其中omp.exe是編譯好的程序,1000表示1000x1000方陣(矩陣大。 測試程序用小規(guī)模矩陣測試證明計(jì)算結(jié)果正確可靠。并行統(tǒng)一采用全部4核心并行,用top命令查看確認(rèn)滿負(fù)荷運(yùn)行。 測試結(jié)果: 如果編譯時(shí)不加入-fopenmp選項(xiàng),則并行語法不起作用,程序?yàn)槠胀ù谐绦。此時(shí)測試結(jié)果為: C: real 0m9.047s user 0m9.034s sys 0m0.004s FORTRAN: real 0m10.022s user 0m10.012s sys 0m0.000s real 一項(xiàng)就是程序?qū)嶋H執(zhí)行時(shí)間。可以看到,雖然C略有優(yōu)勢,但是總體差別不大。 接下來,編譯時(shí)加入-fopenmp打開并行算法,此時(shí)測試結(jié)果為: C: real 0m3.128s user 0m12.314s sys 0m0.012s FORTRAN: real 0m5.185s user 0m20.465s sys 0m0.016s C比FORTRAN快了好多,將近一倍的速度差。 之后,我為了進(jìn)一步確認(rèn),編寫了第三個(gè)程序。在這個(gè)程序中,我先用C計(jì)算A*B,然后用C調(diào)用FORTRAN的subroutine再算一遍,就是C和FORTRAN的混合編程。C和FORTRAN的計(jì)算部分用C的time函數(shù)分別計(jì)時(shí)(只能精確到秒)。編譯時(shí)開啟并行算法。此時(shí)的測試結(jié)果意外變?yōu)椋?br /> C部分:3秒 FORTRAN部分:2秒 程序總運(yùn)行時(shí)間(time命令計(jì)時(shí)): real 0m5.486s user 0m21.644s sys 0m0.020s 這個(gè)結(jié)果表明,用C調(diào)用FORTRAN模塊的效率不僅比原生FORTRAN程序高,甚至高過了原生C程序? 上網(wǎng)查了一下,發(fā)現(xiàn)對比C和FORTRAN的討論很少,深度分析的更少。我很想知道這是為什么。是什么影響了這三個(gè)程序的執(zhí)行效率,我們在編寫程序的時(shí)候這方面應(yīng)該注意些什么。 我將我的測試程序的源代碼打包附上。里面有三個(gè)目錄:c,fortran 和 hybrid,分別表示C程序,F(xiàn)ORTRAN程序和混合編程程序。歡迎大家測試。 |
source |

木蟲 (正式寫手)

| 2 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 346求調(diào)劑 一志愿070303有機(jī)化學(xué) +4 | 蘿卜燉青菜 2026-03-28 | 4/200 |
|
|---|---|---|---|---|
|
[考研] 本科211生物醫(yī)學(xué)工程085409求調(diào)劑339分 +3 | 里子木yy 2026-03-29 | 3/150 |
|
|
[考研] 一志愿鄭大材料工程290求調(diào)劑 +4 | Youth_ 2026-03-30 | 4/200 |
|
|
[考研] 085602 化學(xué)工程專碩 340分求調(diào)劑 +4 | qianbai11 2026-03-29 | 4/200 |
|
|
[考研] 求調(diào)劑,一志愿 南京航空航天大學(xué)大學(xué) ,080500材料科學(xué)與工程學(xué)碩 +6 | @taotao 2026-03-26 | 7/350 |
|
|
[考研] 一志愿南開大學(xué)0710生物學(xué)359求調(diào)劑 +5 | 兔兔兔111223314 2026-03-29 | 5/250 |
|
|
[考研] 一志愿中南大學(xué)化學(xué)0703總分337求調(diào)劑 +6 | niko- 2026-03-27 | 6/300 |
|
|
[考研] 085600,專業(yè)課化工原理,320分求調(diào)劑 +4 | 大饞小子 2026-03-29 | 4/200 |
|
|
[考研] 調(diào)劑310 +12 | 溫柔的晚安 2026-03-25 | 13/650 |
|
|
[考研] 343求調(diào)劑 +6 | 愛羈絆 2026-03-29 | 6/300 |
|
|
[考研] 356求調(diào)劑 +3 | gysy?s?a 2026-03-28 | 3/150 |
|
|
[考研] 考研調(diào)劑 +10 | 呼呼?~+123456 2026-03-24 | 10/500 |
|
|
[考研] 材料求調(diào)劑 +5 | .m.. 2026-03-25 | 5/250 |
|
|
[考研] 0703化學(xué)一志愿南京師范大學(xué)303求調(diào)劑 +3 | zzffylgg 2026-03-24 | 3/150 |
|
|
[考研] 求調(diào)劑323材料與化工 +7 | 1124361 2026-03-24 | 7/350 |
|
|
[考研] 081200-11408-276學(xué)碩求調(diào)劑 +4 | 崔wj 2026-03-26 | 4/200 |
|
|
[考研]
|
鐘llll 2026-03-26 | 4/200 |
|
|
[考研] 336材料求調(diào)劑 +7 | 陳瀅瑩 2026-03-26 | 9/450 |
|
|
[考研] 085601求調(diào)劑總分293英一數(shù)二 +4 | 鋼鐵大炮 2026-03-24 | 4/200 |
|
|
[考研] 一志愿河工大 081700 276求調(diào)劑 +4 | 地球繞著太陽轉(zhuǎn) 2026-03-23 | 4/200 |
|