您好、欢迎来到现金彩票网!
当前位置:21点 > 自动并行化 >

MATLAB并行计算问题(应该是变量传递出了问题)

发布时间:2019-07-31 11:09 来源:未知 编辑:admin

  这个程序是蒙特卡洛算法求整数规划,使用向量运算和并行计算以节省时间,但是出了这样的错也是搞不定啊。。求大神指教

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  解决办法:如楼上建议的那样,直接用for循环是一个办法,但就目前的循环来看,似乎并无使用循环的必要,直接用向量化的赋值语句就可以了。

  题主最好把mengte函数的代码贴出来,我再帮着看看怎样改写以提高效率。

  Matlab的并行计算实质还是主从结构的分布式计算。当你初始化Matlab并行计算环境时,你最初的Matlab进程自动成为主节点,同时初始化多个(具体个数手动设定,详见下文)Matlab计算子节点。Parfor的作用就是让这些子节点同时运行Parfor语句段中的代码。Parfor运行之初,主节点会将Parfor循环程序之外变量传递给计算子节点。子节点运算过程时互不干扰,运算完毕,则应该有相应代码将各子节点得到的结果组合到同一个数组变量中,并返回到Matlab主节点。当然,最终计算完毕应该手动关闭计算子节点。

  这里讲述的方法仅针对多核机器做并行计算的情况。设机器的CPU核心数量是CoreNum双核机器的CoreNum2,依次类推。CoreNum以不等于核心数量,但是如果CoreNum小于核心数量则核心利用率没有最大化,如果CoreNum大于核心数量则效率反而可能下降。因此单核机器就不要折腾并行计算了,否则速度还更慢。下面一段代码初始化Matlab并行计算环境:

  如果出错,说明你没有安装Matlab并行工具箱。确认安装了此工具箱后,运行:

  如果出错,证明你的机器在开启并行计算时设置有问题。请联系MathWorks的售后服务。

  并行计算中parfor循环要求内部不受外部影响,就是说,parfor循环对外要有独立性。而你的程序中,f(1,col(i))=0;牵涉到col,f等外部参数,使循环不能独立进行,所以,才有提示。

  要怎么修改才可以啊?这个parfor循环是为了将col所保存的下标所对应的f元素归零。将col转化为静态变量,或常数可以吗

http://mervynsons.com/zidongbingxinghua/326.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有