[問題]average filter問題

看板C_and_CPP作者 (我真的很帥)時間15年前 (2009/04/11 11:41), 編輯推噓3(304)
留言7則, 2人參與, 最新討論串1/1
請問各位大大,以下是我寫的average filter,請問 怎麼修改可以減少他的運算量,加速速度。謝謝。 for(i=1;i=100,i++) { new_data[i]=(old_date[i]+old_date[i+1]+old_date[i+2]+old_date[i+3])/4 } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 115.43.125.29

04/11 11:52, , 1F
for(i=1;i<100;i++) sum[i] = sum[i-1] + old[i];
04/11 11:52, 1F

04/11 11:53, , 2F
for(i=0;i<100;i++) new[i] = (sum[i+3]-sum[i])/4
04/11 11:53, 2F

04/11 11:54, , 3F
好像要大一點才會省到 orz
04/11 11:54, 3F

04/11 15:20, , 4F
在不用SIMD下 就簡單的分成 A+B C+D 之後 A+C
04/11 15:20, 4F

04/11 15:21, , 5F
並且 UNLOOP 或者一次 LOOP 跑四個增加 throughput 效率
04/11 15:21, 5F

04/11 15:22, , 6F
SIMD 的話就簡單了 不過還是要看 Dest 和 Src 是否重疊到
04/11 15:22, 6F

04/11 15:26, , 7F
沒有 SIMD 也可以玩假的 SIMD 方式 假設來源是 8bit...
04/11 15:26, 7F
文章代碼(AID): #19u15ouc (C_and_CPP)