[已答复] parfor是不是不能定义全局变量

[复制链接]
ljq_ 发表于 2021-4-20 15:22:27
有parfor的程序里是不是不能定义全局变量

9 条回复


gywxd 发表于 2021-4-20 18:35:22
parfor 可以读取全局变量,不能写全局变量

ljq_ 发表于 2021-4-21 11:50:53
gywxd 发表于 2021-4-20 18:35
parfor 可以读取全局变量,不能写全局变量

我感觉也不能读取  
我试了一下  函数里面的全局变量都是空的

gywxd 发表于 2021-4-21 13:28:28
ljq_ 发表于 2021-4-21 11:50
我感觉也不能读取  
我试了一下  函数里面的全局变量都是空的

你的感觉不对

ljq_ 发表于 2021-4-23 11:30:43

我也实验了

gywxd 发表于 2021-4-23 16:50:38

    tmp = 5;
    broadcast = 1;
    reduced = 0;
    sliced = ones(1, 10);
    parfor i = 1:10
      tmp = i;
      reduced = reduced + i + broadcast;
      sliced(i) = sliced(i) * i;
    end

parfor中的tmp是临时变量,parfor结束后tmp的值依然是5,不受临时变量的影响。
broadcast是广播变量,每次循环中的值不变。
redued是简约变量,Matlab对其的值将分段由各worker计算后送回主进程处理。
sliced为切片变量,数据传输有优化提升。
i为循环变量。

全局变量就是广播变量, 有时候使用情况特殊也满足简约变量 的特性。

ljq_ 发表于 2021-4-24 09:44:18
gywxd 发表于 2021-4-23 16:50
tmp = 5;
    broadcast = 1;
    reduced = 0;

我定义了global variable  就不行了

baoyx 发表于 2021-7-20 21:55:45
ljq_ 发表于 2021-4-24 09:44
我定义了global variable  就不行了

是的 我也试过 全局变量调用都不行 真的不能高估parfor

whg329 发表于 2021-9-11 17:04:49
ljq_ 发表于 2021-4-21 11:50
我感觉也不能读取  
我试了一下  函数里面的全局变量都是空的

你好,想问一下楼主的问题解决了吗?
好像遇到了相同的问题,就是parfor外面定义的变量到了parfor里面全部变成了[],但是某些变量又正常
变成[]的变量都是通过yalmip定义的sdpvar

ljq_ 发表于 2021-9-15 19:53:35
whg329 发表于 2021-9-11 17:04
你好,想问一下楼主的问题解决了吗?
好像遇到了相同的问题,就是parfor外面定义的变量到了parfor里面全 ...

不能定义全局的变量  建议仔细看一下parfor里面的变量定义要求
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表