“常用公式”在线计算,“设计手册”在线查询
最近被spmd指令搞得焦头烂额,比如大家看我的程序结构:[i,j,k,l]=ndgrid(1:n,1:n,1:n,1:n);spmd    if(labindex==1)         M1=int(JCC(i+j,k+l,x),x,0,1);    end    if(labindex==3)         M3=int(JCC(i-j,k+l,x),x,0,1);    end    if(labindex==2)         M2=int(JCC(i+j,k-l,x),x,0,1);    end    if(labindex==4)         M4=int(JCC(i-j,k-l,x),x,0,1);    endend0这是指令并行,每个线程负担大约1w个符号积分。不过总感觉效率略低下,从单线程到双线程,加速比很接近2,但双线程到4线程则提升很小,最终大概只达到了2.5的加速比。至于数据并行,我主要是需要做矩阵乘法和解稠密线性方程组,这些矩阵都并不是特别大(最多不过50*50的规模),感觉用distributed(A)之类的指令做,还不如直接乘来得快,更糟的是,我自己写的并行高斯列主元消去法的速度居然还不如左除法,简直是颜面扫地。关键是,选主元,交换这些过程都需要循环嵌套,parfor指令我又不怎么会用,真正并行的只有消元那个过程,所以效率特别低下,求各位大神的经验。我所处理的线性方程组都是恰定的,而且都是非奇异矩阵。总之,本人纯粹的菜鸟,很多问题可能都很小白,还请大神们不吝赐教。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 支持支持 反对反对

共 3 个关于本帖的回复 最后回复于 2014-6-1 19:55

沙发
石光 新来的 发表于 2014-6-1 14:26:12 | 只看该作者
研发埠培训中心
matlab里的矩阵运算都是用的lapack,尤其是非函数调用的那些个运算符,更是快速,想自己编写超越很难,尤其是矩阵规模还不大。如果只是矩阵方程的数目比较多,想并行加速的话,可以用parfor,示意如下:% 求解Ax = b.其中A和b都保存在cell数组里parfor k = 1:1000    x{k} = A{k}{k};end
板凳
任建敏 新来的 发表于 2014-6-1 14:44:15 | 只看该作者
研发埠人才中心
同样的问题,,顶一个!!求高手来回答
地板
欧来良 新来的 发表于 2014-6-1 19:55:33 | 只看该作者
多谢。这个解方程组的办法很有效,多谢多谢
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注我们

360网站安全检测平台