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灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP