Re: [問題] RGB填圖

看板C_and_CPP作者 (sky)時間11年前 (2014/10/15 09:02), 編輯推噓5(5020)
留言25則, 8人參與, 最新討論串2/2 (看更多)
使用BCB C++&CUDA 影像處理在CUDA完成然後RGB回傳 for (i=0 ; i<h*w ; i++){ colR=colRR[i]; //colRR[i]為cuda部分回傳R colG=colGG[i]; colB=colBB[i]; Emp->Canvas->Pixels[i%400][i/400]=(TColor)RGB(colR,colG,colB); } ※ 引述《sky391 (sky)》之銘言: : 目前做影像處理, : 把一張圖處理完後是存成指標(RGB共三個) : 然後利用迴圈填回變成圖, : 目前400x300 size , : 迴圈跑了12萬次拖了很多速度, : 不知版上高手,有沒有好意見, : 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.163.53.61 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1413334976.A.E55.html

10/15 09:14, , 1F
這影像處理是一直持續做,讀圖->影像處理->填圖
10/15 09:14, 1F

10/15 11:19, , 2F
Emp->Canvas->Pixels[i%400][i/400]=(TColor)RGB(colR,c
10/15 11:19, 2F

10/15 11:19, , 3F
olG,colB); 這段導致緩慢
10/15 11:19, 3F

10/15 11:21, , 4F
可用double buffer方法改善
10/15 11:21, 4F

10/15 11:23, , 5F
如果用組合語言,可以把%改用AND,/改用SHIFT
10/15 11:23, 5F

10/15 11:44, , 6F
試著橫向填圖, 並看看有沒有比較低階的方法填
10/15 11:44, 6F

10/15 11:46, , 7F
BCB 沒有貼整張圖的指令嗎??
10/15 11:46, 7F

10/15 11:52, , 8F
BCB不確定有沒有直貼整張的
10/15 11:52, 8F

10/15 13:00, , 9F
0/400有些怪;賦值的過程記憶體一直跳,可能是慢的主因
10/15 13:00, 9F

10/15 14:20, , 10F
我用i = 1開始也沒有改變
10/15 14:20, 10F

10/15 14:29, , 11F
重點不是i=0或i=1
10/15 14:29, 11F

10/15 14:37, , 12F
已經是分成RGB三個,還有辦法一次抓記憶體嗎?
10/15 14:37, 12F

10/15 14:49, , 13F
合在一起比較好,這樣資料局部性比較高,cache miss
10/15 14:49, 13F

10/15 14:50, , 14F
的延遲比較低。另外就是切幾個thread,利用cache miss
10/15 14:50, 14F

10/15 14:50, , 15F
時跑其他thread(如果你的CPU支援hyperthreading的話)
10/15 14:50, 15F

10/15 14:53, , 16F
不知道RGB函數裡做了些什麼,也許可以用SIMD/FMA指令
10/15 14:53, 16F

10/15 15:11, , 17F
記憶體部分沒有問題
10/15 15:11, 17F

10/15 15:12, , 18F
問題在顯示的部分
10/15 15:12, 18F

10/15 15:24, , 19F
i/400確實也是問題,記憶體不連續產生write miss
10/15 15:24, 19F

10/15 21:33, , 20F
這問題之前解過, #1HVcO7tV , 效能差 50 倍以上.
10/15 21:33, 20F

10/15 21:37, , 21F
原文後段已有解法 , 照著解效能應可有明顯提升.
10/15 21:37, 21F

10/18 14:45, , 22F
阿我的意思就是[][]那裡記憶體一直跳,不是零或一,感謝澄清
10/18 14:45, 22F

10/18 22:23, , 23F
把乘法,除法,取餘數拿掉,用別的方法代替
10/18 22:23, 23F

10/23 10:02, , 24F
謝謝大家的幫忙 問題已解決
10/23 10:02, 24F

10/23 10:44, , 25F
感謝E大的方法 最後效能從做一次8Xms提升到一次4Xms
10/23 10:44, 25F
文章代碼(AID): #1KFSV0vL (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
問題
7
16
完整討論串 (本文為第 2 之 2 篇):
問題
7
16
文章代碼(AID): #1KFSV0vL (C_and_CPP)