热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Matlab并行计算确保parfor循环或spmd语句透明性

parfor循环或spmd块的主体必须是透明的。透明性意味着所有对变量的引用必须在代码的文本中可见。在下面的例子中,变量X没有转移到workers。只有字符向量’X

parfor循环或spmd块的主体必须是透明的。透明性意味着所有对变量的引用必须在代码的文本中可见。

在下面的例子中,变量X没有转移到workers。只有字符向量’X’被传递给eval,并且X在循环或块体中不作为输入变量可见。因此,MATLAB®在运行时出现错误。

X = 5;
parfor ii = 1:4eval('X');
end

X = 5;
spmdeval('X');
end

类似地,您不能通过在parfor或spmd语句中执行clear来清除工作空间中的变量:

parfor ii &#61; 1:4<statements...>clear(&#39;X&#39;) % cannot clear: transparency violation<statements...>
end

spmd; clear(&#39;X&#39;); end

或者&#xff0c;可以在不再需要变量时将其值设置为空&#xff0c;从而释放该变量所使用的内存。

parfor ii &#61; 1:4<statements...>X &#61; [];<statements...>
end

对于spmd块&#xff0c;可以从客户机工作区中清除它的组合。

一般来说&#xff0c;透明性的要求限制了对变量的所有动态访问&#xff0c;因为在任何给定的worker中可能不存在整个变量。在透明工作区中&#xff0c;如果没有在代码中显式地指定变量&#xff0c;则不能创建、删除、修改、访问或查询变量。

其他违反parfor循环透明性的行为或函数的例子包括:

谁和谁

evalc、evalin和assignin与工作区参数指定为“caller”

保存并加载&#xff0c;除非加载的输出被分配给变量

如果一个脚本试图读取或写入父工作区的变量&#xff0c;那么运行这个脚本可能会导致透明性冲突。为了避免这个问题&#xff0c;可以将脚本转换为函数&#xff0c;并使用必要的变量作为输入或输出参数来调用它。

请注意

透明性只应用于parfor或spmd构造的直接体&#xff0c;而不应用于从那里调用的任何函数。保存和加载的解决方法是在函数中隐藏保存和加载的调用。

MATLAB确实成功地执行了出现在parfor主体中调用的函数中的eval和evalc语句。

并行仿真软件模拟

您可以使用parsim命令并行运行Simulink®模型&#xff0c;而不是使用parfor循环。有关并行使用Simulink的更多信息和示例&#xff0c;请参见运行多个模拟(Simulink)。

如果您的Simulink模型需要访问包含在.mat文件中的变量&#xff0c;则必须将这些参数加载到每个worker的工作空间中。您必须在parpool打开之前和之后执行此操作。要实现这一点&#xff0c;可以使用spmd或parfevalOnAll&#xff0c;如示例所示。

spmd evalin(&#39;base&#39;, &#39;load(&#39;&#39;path/to/file&#39;&#39;)&#39;)
end

parfevalOnAll(&#64;evalin, 0, &#39;base&#39;, &#39;load(&#39;&#39;path/to/file&#39;&#39;)&#39;)

如果您的模型还需要在MATLAB脚本主体中定义的变量&#xff0c;则必须在每个parfor迭代中使用assignin或evalin将这些变量移动到每个worker的基本工作空间。


推荐阅读
  • 本文介绍了使用数据库管理员用户执行onstat -l命令来监控GBase8s数据库的物理日志和逻辑日志的使用情况,并强调了对已使用的逻辑日志是否及时备份的重要性。同时提供了监控方法和注意事项。 ... [详细]
  • 在Windows10系统上使用VMware创建CentOS虚拟机的详细步骤教程
    本文详细介绍了在Windows10系统上使用VMware创建CentOS虚拟机的步骤,包括准备条件、安装VMware、下载CentOS ISO文件、创建虚拟机并进行自定义配置、设置虚拟机的ISO与网络、进行安装和配置等。通过本文的指导,读者可以轻松地创建自己的CentOS虚拟机并进行相应的配置和操作。 ... [详细]
  • 在本教程中,我们将看到如何使用FLASK制作第一个用于机器学习模型的RESTAPI。我们将从创建机器学习模型开始。然后,我们将看到使用Flask创建AP ... [详细]
  • vue使用
    关键词: ... [详细]
  • Linuxchmod目录权限命令图文详解在Linux文件系统模型中,每个文件都有一组9个权限位用来控制谁能够读写和执行该文件的内容。对于目录来说,执行位的作用是控制能否进入或者通过 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
author-avatar
手机用户2502920591_700
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有