MATLAB 板


LINE

※ 引述《Leon (Achilles)》之銘言: : ※ 引述《celestialgod (攸藍)》之銘言: : 這討論串很有意思, 值得回一下. : : 我嘗試去寫了mex跟cuda (最近剛學matlab 拿來當練習) : : *******mat_exd.cpp******* : : #include "mex.h" : : void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) : : { : : int colNum = (int) mxGetN(prhs[0]); : : double *X, *Y; : : X=mxGetPr(prhs[0]); : : plhs[0] = mxCreateDoubleMatrix(colNum, colNum, mxREAL); : : Y = mxGetPr(plhs[0]); : : for (int i=0; i<colNum; i++) : : { : : for (int j=0; j<colNum; j++) : : { : : if(i>=j) : : Y[j*colNum+i]=X[i-j]; : : } : : } : : } : 嗯.. 你會用 memcopy 嗎? : 其實裡面那個迴圈可以改成 memcpy(), 只是 size 要注意一下. 不會,C++才看一點點而已...我晚點可以去google 然後再試試看結果 我學語言的歷程跟別人相反QQ (R -> matlab -> C++ -> CUDA) 其中C++都只看一點點 matlab算是懂基本的function而已 CUDA觀念大部分都有了,只是C/C++還學得太淺 更改如下 ************mat_exd.cpp************** #include <cstring> #include "mex.h" void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { int colNum = (int) mxGetN(prhs[0]); double *X, *Y; X = mxGetPr(prhs[0]); plhs[0] = mxCreateDoubleMatrix(colNum, colNum, mxREAL); Y = mxGetPr(plhs[0]); int j = 0; for (int i=0; i<colNum; i++) { memcpy(Y+(colNum*i+j), X, (colNum-i)*sizeof(double)); j += 1; } } **************Result****************** original part: 0.216 secs mex part: 0.113 secs => 顯著快非常多!!! CUDA part: 0.284 secs : : **********Result********** : : original part: 0.216 secs : : mex part: 0.610 secs : : CUDA part: 0.284 secs : : 我沒有看到m大說的mex比較快QQ.... : : 請問我是哪裏寫得不好嗎.... : Matlab 是架構在 C/C++ 上面的, 你 mex 比 matlab 慢的話 : 鐵定是哪裡寫得不夠好.... : 另外, 你用甚麼機器? N size 多少? N跑10000 機器是 [email protected] ASUS GTX670 2G and ram 16G OS: windows 7 SP1 matlab: 2013a 我的C/C++ 一定寫不好QQ 我太依賴R跟matlab的向量運算...還不習慣C/C++去寫 : 我很訝異這題目 Cuda 竟然跑得和 Matlab 差不多快, : 因為 Cuda 在 memory move 上面是很慢的.. : 你機器 memory 夠的話, 要不要試試看 N = 20,000 或是 40,000 的 case ? CUDA的話 N=15000就不能跑了...我的VRAM不夠大 : 我很想知道這個結果. Sorry, 我可能要跟我們老師借機器跑了 他才有6G VRAM的電腦 --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.164.166.108
1F:→ Leon:你 cuda 要切幾次把 data feed into GPU 09/08 08:05
太高級了XDD 我還沒有那種程度@@....我的CUDA目前到shared memory而已..... 另外,感謝大大指點memcpy這個函數@@....這個函數好用太多XD 只是最後一格要注意size問題
2F:→ iHakka:沒有什麼計算的話用cuda不會比較快,且H2D.D2H超浪費時間 09/08 17:38
3F:→ iHakka:另外可以直接傳gpuarray.zeros(N)進去看會不會比較快 09/08 17:39
**************Result****************** original part: 0.216 secs mex part: 0.113 secs CUDA part: 0.038 secs => 更快了..... 更動地方 o = feval(kern, X, N, gpuArray.zeros(N)); ※ 編輯: celestialgod 來自: 218.164.166.108 (09/08 17:45)







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:e-shopping站內搜尋

TOP