MATLAB 板


LINE

各位版友好: 最近在实作演算法 sub routine 时遇到了效能问题,sub routine 的目标是在给 定Z矩阵的情况下,找到最好的W来使得 L(ZW) + C*Tr(W'W)最小,其中Loss function 的 长相是 \sum_{(i,j) sample} -R_{ij}log(sigmoid(ZW_{ij}))-(1-R_{ij})log(1-sigmo id(ZW_{ij})), R 是观察到的资料,取值在{0,1}。C 是 regularization constant. 然後 minimize function 的gradient 会是 ▼W = Z'▼L(ZW)+2CW 资料型态 : Z 会是一个 N*K 的sparse 矩阵, W 会是 K*N 的 dense 矩阵 , R 会是 N*N 的 sparse 矩阵 (只考虑有被抽样的点), N >>> K, N/K = 10^2~10^3 。 当前解法 : 之前已经实作了一个 Z 是 dense 的版本,由 matlab 经由 mex 把资料传到 C里,然後我再在C里使用 liblbfgs library 求解传回。而我需要做的事就是给定w 求 gradient给liblbfgs,目前的复杂度是 nnz(R)*K (算ZW) + nnz(R)*K (算Z'▼L) + K^2 (算+CW) 现在我有问题的点是我有很多可能的改进方向,不知道该选择什麽比较好。 (1) 沿用原本的架构,只是将Z是sparse 也考虑进去,再自己利用回圈实作sparse 矩阵乘 法,复杂度应该是 nnz(R)*K*r (evaluate ZW, 其中因为Z的row sparse,在算ZW_ij可能 平均起来只要做 rK 次) + nnz(R)*K*r (同理) + K^2 结果 : 速度大概会变快1/r 倍 优 : 我只要改改code就好,也不用学新东西 缺 : 因为自己实作,不会平行处理,没有利用到 multi core (2) 在做稀疏矩阵乘法时直接使用类似Intel-MKL 的library 来加速 优 : 简单,之前有修过数值方法,还记得怎麽call API 缺 : 我不太清楚要怎麽使用ICC 来编译mex file,不知是否相容,可以 mex -setup ICC? 不清楚实际怎麽implement,无法细致的分析 (3) 交由GPU来计算,不管是在C里自己写还是就直接在matlab 里做,用matlab提供的GPU API 优: 可以很平行的处理?学习GPU运算增强自己的能力XD 缺: 没有写过这样利用GPU去做事的程式,learning curve有点抖,可能需要花很多时间找 资料或实作,一样可能很难分析。 (4) 可能还有其他方法? 或者要进一步考虑Block Algorithm 或 catch affinity 版友觉得应该朝哪个方向努力呢?这个subroutine会很常被call到,效能是非常重要的考量 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.112.218.160
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MATLAB/M.1507742158.A.5F3.html
1F:推 sunev: 你哪部份是用matlab script,哪部份是用mex,哪部份是用C? 10/12 01:27
抱歉没有讲清楚,由於演算法还在早期研究正确性,目前主要是使用matlab,但为了加快 W求解,所以写了一个mex function 从 matlab 读入 Z,W,R 等资料,在这个mex function 处理好变数的传递後,会call一个普通的C++ function,然後计算都在上面。 ※ 编辑: InnocentMage (140.112.218.160), 10/12/2017 01:33:06
2F:推 sunev: matlab内建sparse,要刻一个BFGS也不是很难。你的瓶颈在哪 10/12 01:29
我原本是觉得matlab不够快,而手边又有C++的lbfgs solver http://www.chokkan.org/software/liblbfgs/ 所以想把它用mex file 接起来,目前的瓶紧是 lbfgs 每个iteration 算得不够快,而这个library 需要自己实作evaluate 就是在给定W下gradient 会是啥,所以才想优化这部分。 ※ 编辑: InnocentMage (140.112.218.160), 10/12/2017 01:38:20
3F:推 sunev: BFGS的哪个部份不够快,现在gradient是用matlab还是用C算? 10/12 01:57
4F:→ sunev: 所以你有用过matlab的BFGS然後嫌不够快,改用C确实变快? 10/12 02:03







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

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

TOP