Re: [問題] MEX加速 with Eigen library

看板MATLAB作者 (sigh...)時間11年前 (2013/12/24 12:51), 編輯推噓0(0013)
留言13則, 2人參與, 最新討論串2/2 (看更多)
簡單回一下, 1. min_b || y - Xb ||^2 不要用 inv(X'X)X'y 來解, 用 X\y, Matlab 說明裡有寫而且會給 warning. min_b || y - Xb ||^2 + c^2 ||b||^2 = min_b || [y; zeros(length(b), 1)] - [X; c*eye(length(b))]*b ||^2 所以加上 L2 penalty 一樣用 \ 來解 2. Eigen 不一定比較快, 大部份的演算法他都還沒平行化, (不過做 cross-validation 就自己平行他吧...) Blas3 也還沒用到 AVX 指令, 在新的機器上 (Sandy bridge 以上吧) Matlab 矩陣相乘會快上二倍 (Haswell 系列有 AVX2 可能會差到四倍)。 真的要比 MATLAB 快就 link MKL, Eigen 有 wrapper 可以直接 link MKL, 可是我沒用過也不曉得 lapack 系列他有沒有處理好, 如果不行的話改用 Armadillo http://arma.sourceforge.net MKL 在 linux 下有 academic license -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 207.237.240.224

12/24 13:02, , 1F
謝謝回應
12/24 13:02, 1F
※ 編輯: forloricever 來自: 207.237.240.224 (12/24 13:06)

12/24 13:29, , 2F
我最後看了我的東西,要解的是inv(X'X)*y
12/24 13:29, 2F

12/24 13:29, , 3F
第一點真的讓我長了知識,謝謝您
12/24 13:29, 3F

12/24 13:29, , 4F
第二點則是EIGEN的矩陣對矩陣乘法都有平行
12/24 13:29, 4F

12/24 13:30, , 5F
我覺得不是慢在矩陣乘法 是迴圈
12/24 13:30, 5F

12/24 13:34, , 6F
因為當我cv的parameter變少,EIGEN就比較快了
12/24 13:34, 6F

12/24 13:35, , 7F
所以我一開始想問的是我的理解是c++迴圈應比matlab快
12/24 13:35, 7F

12/24 13:35, , 8F
但是 我的程式不是如此 想問為什麼?
12/24 13:35, 8F

12/24 13:51, , 9F
可能要先用matlab profiler 看看慢在哪邊
12/24 13:51, 9F

12/24 13:52, , 10F
如果主要是矩陣運算慢的話用 C++ 也不會快太多
12/24 13:52, 10F

12/24 13:52, , 11F
因為 MATLAB 也是 pass 給 MKL 做
12/24 13:52, 11F

12/24 16:55, , 12F
好,那我了解了,謝謝您。
12/24 16:55, 12F

12/24 16:55, , 13F
armandillo沒有比較快XDDD
12/24 16:55, 13F
文章代碼(AID): #1IkHA-In (MATLAB)
文章代碼(AID): #1IkHA-In (MATLAB)