[問題] openMP不適合跑大量的資料?

看板C_and_CPP作者 (阿霖)時間14年前 (2010/02/27 16:57), 編輯推噓0(003)
留言3則, 3人參與, 最新討論串1/2 (看更多)
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 由於研究的需要,最近在跑FDTD的數值方法, 想要用openMP來加速計算的速度, 在模擬區域小的時候都還有不錯的效果, 可是一但模擬區域大於一定的範圍後,openMP的效果就不復存在, 以下是我模擬程式執行所需的時間(ms): 128*128 256*256 512*512 1024*1024 2048*2048 1-core 72 505 2160 8340 32862 4-cores 40 175 1960 7800 30931 用openMP的部分,雖然全部都有跑滿4個核心, 但是在模擬區域大於512*512以後效果就跟單核心的幾乎沒有兩樣了, 我給予的解釋是:CPU的cache用完了,不過真的是這樣嗎? 不知道各位先進有對於這種情況有沒有什麼看法,謝謝指導。 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) VC++, Windows XP -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.171.37

02/27 18:03, , 1F
用 vtune 去看,其實跟寫法也有關係。
02/27 18:03, 1F

02/27 19:12, , 2F
我倒是覺得你資料相依的太嚴重, 導致CPU都在等待納涼
02/27 19:12, 2F

02/28 20:03, , 3F
可是資料相依程度不會因為模擬區域的大小而有所改變吧
02/28 20:03, 3F
文章代碼(AID): #1BYDvdHo (C_and_CPP)
文章代碼(AID): #1BYDvdHo (C_and_CPP)