家庭云服务器高阶应用:通过Matlab分布式计算来演示所谓的“家庭云计算”(非云储存)(转)

Matlab是强大的计算软件,这不需要过多介绍了,大到航天航空领域,小到计算方程式,Matlab无处不在。

像是这种大型的计算工具必然要支持分布式群集计算功能,即让多台电脑、服务器,协同计算同一数据,以实现“人多力量大”的加速效果。

我本人不会使用Matlab,但出于对老婆的关心,考虑到她常因电脑性能不足,而为了一个计算登上数个小时,我决心利用家里的电脑资源(家庭服务器+家庭日用电脑主机)来打造一个基本的Matlab计算群集,以达到加速效果。而这样的一个布局,也正符合了我当初设计的“家庭云”的理念。

有了Matlab云集,上网本现在都可以跑大型计算了~ 

第一步:安装Matlab及其分布式计算服务(MDCE)

MDCE服务是需要另外购买的,学生版不提供(盗版基本都包括了)。

- 安装Matlab程序的部分我就省略了。安装好以后,请运行Matlab(我以2013a版本为范例)
- 在顶端地址栏部分打开以下路径:C:\Program Files\MATLAB\R2013a\toolbox\distcomp\bin (见下图)

- 然后分先后运行 !mdce install 以及 !mdce start (注意指令前面的感叹号!)

此时可以右键点击左边的addMatlabToWindowsFirewall.bat,然后选择在Windows资源管理器中打开,然后以管理员身份运行。这样的目的是为了打开防火墙中Matlab分布式计算的对应端口。

到这里就算完成Matlab分布式计算服务的安装了。需要注意的是:所有将参与该计算群集或使用该计算群集功能的服务器和计算机都需要完成以上操作,包括很弱的上网本也要,不开启MDCE服务是不能连接计算机群的。

第二步:进行机群的配置

光是完成以上安装还不行,还要进行配置,即把所有可以用的计算机资源都联系捆绑在一起。

· 具体操作是在刚才打开防火墙的批运行文件目录下(C:\Program Files\MATLAB\R2013a\toolbox\distcomp\bin),以管理员身份再运行admincenter.bat文件,然后就会看见下图:

当然我们首先点击那个“Add or Find”,然后被要求输入主机名或相应IP地址(如果有多台主机,则需要重复此项操作将其全部加入)

完成后结果如下:

现在我有三台四核CPU电脑在计算机群内,且都开启了MDCE服务,接下来我要做的就是建立一个Job,然后选择开启的总线程,然后做一个示范性计算。

· 建立Job就是点上图中间部分左侧的Start
· 然后随便写一个名字,我用Job1
· 然后选择由哪台电脑作为主机来发起该计算 (见下图)

然后设置要开启的总线程(workers),由上图可见,三台四核CPU主机一共可以提供12个workers,即12条线程同时启动进行Matlab并行计算。

这里要说明一下的是,“核心”是指电脑的物理核,多线程不算核心,譬如Intel i7 四核8线程CPU只能作为四核对待,只能提供4个worker,而AMD的FX八核处理器,由于是物理核,则能提供8个worker

还有一点,服务器集群中的worker必须要统一,即大家都必须使用同等数量的worker来协同工作,不能某一台性能强点就开启四核,另一台弱点只开启两核,这样不行!所以,请不要把双核CPU、四核CPU混在一起作为一个集群,除非你只打算在四核主机上开启两个worker。

以上图为例,我勾选了全部三台主机作为计算集群,然后每台开启四个核,即四个worker,然后总共有12个worker将为我同时进行计算。

到这里,配置部分就完成了。接下来要在Matlab操作机器上调用以上配置。Matlab称之为Cluster Profile。

第三步:Matlab客户机调用集群

回到Matlab主程序,打开下图显示的Manage Cluster Profiles

打开上述管理器后,默认情况下只有一个local档案(这是给Matlab开启本机多核计算的档案,不要删除了)。我们直接点击那个Discover Clusters就可以了,不需要手动配置,选择On your network(本地局域网内)

完成后看到下图

我用1和2表明了先后要做的两件事:1.给档案改名(右键然后选择改名,我改为cluster)。2.检测一下是否一切正常

全部测试通过!如果你有某项测试未通过,可以点击感叹号看到具体原因,很多时候是防火墙造成的,注意执行前面提到的开启防火墙。(如果实在是弄不清防火墙设置,可以索性关闭了~)

到这里就大功告成了!演示一下开启12个worker进行计算

matlabpool open cluster; 是调用cluster配置文件,开启12个worker的指令,右下角显示的是成功开启的worker数量。

matlabpool close; 是关闭分布式计算/并行计算的指令,建议每次用完都执行一次。

因为我不会具体的matlab代码,所以没法演示一段12 worker一起计算的表现。根据老婆之前调用8个worker(服务器+家中主电脑)的经验,仅把for循环改为parfor循环(具体参见Matlab官方指导有关如何运用并行计算),原先一个小时的计算现在能提速2.5倍甚至更多。

最后:关于一些疑问和解答

1. 首先要解释一下以上Matlab的分布式计算和博客主题“家庭云”的关系。很多网站的文章在提到“家庭云”的概念时,总是暗示,甚至错误地把“云技术”与“云储存”划上等号。“云技术”说白了是服务器的利用,而在服务器端存储文件,只是云技术的一部分。Matlab的分布式计算,正巧可以帮助理解云计算的核心概念,而在家中架设一个实时开放的Matlab服务器,这就是“家庭云计算”的典型表现,超越了我之前云储存的应用范围。

2. 这个云目前为止只是在家中局域网的范围服务,在学校在公司,怎么使用家中的云?

如果有看过前面的博文,会知道家庭云最基本的一项功能就是提供VPN连接。我没有打算把Matlab服务器公开到互联网上,所以端口不用在路由器上映射,如果学校或公司电脑需要用到家里的云,VPN连接回家就好了,所有IP都是固定好设置好的,与在网内使用服务无异。

3. Matlab分布式计算的防火墙端口设置是比较麻烦的。根据官方资料,如果线程多了,所使用的端口也会相应增加。也就是说,8个worker所需要打开的端口,和12个worker所需要打开的端口是不一样的!所以,上面不会设置防火墙的网友可以索性把它关闭了。

4. 上网本的最高阶利用:

上网本是很弱的设备,勉强跑个Windows就可以了,谈运行Matlab?简直笑话!但是,有了云集Matlab,可以在上网本上运行任何计算。这里需要注意的是,在配置上述第二步骤的时候,上网本千万不要加入到群集中,只勾选服务器就可以了。上网本所需要做的就是把代码和数据从本机发送给服务器,然后计算的工作由服务器处理。

本文出自 “www.DIYPCs.com” 博客,请务必保留此出处http://cnbeta.blog.51cto.com/1234897/1193348

 完整示例clear all;

% 寻找资源。

jm = findResource('scheduler', 'type', 'jobmanager', 'name', 'myJM','LookupURL', '192.168.0.100');

% 使用刚才找到的资源建立一个工作

job = createJob(jm);

% 设置该工作的文件关联,让所有 workers 都可以找到原程序文件,需要在Client 上设置共享文件夹。

set(job, 'PathDependencies', {'\\192.168.0.101\matlab_code\','/mnt/'})

% 另一种方法,把用到的原程序文件传给所有 workers。

% set(job, 'FileDependencies', {'hm.m'});N = 5;M = 4;

% 建立 4 个任务,每任务都是算 hp(M, N)。

createTask(job, @hp, 1, {{M, N}, {M, N}, {M, N}, {M, N}});

% 提交工作给 jobmanager。

submit(job)

% 等待所有 workers 都把任务做完。

waitForState(job, 'finished')

% 取出计算结果。

results = getAllOutputArguments(job);

% 销毁 Job,释放资源

destroy(job);

Matlab 集群计算平台搭建相关推荐

  1. RocketMQ 实战 集群监控平台搭建

    RocketMQ 实战 集群监控平台搭建 概述 RocketMQ有一个对其扩展的开源项目incubator-rocketmq-externals,这个项目中有一个子模块叫rocketmq-consol ...

  2. rocketmq-console集群监控平台搭建

    集群监控平台搭建 概述 RocketMQ有一个对其扩展的开源项目incubator-rocketmq-externals,这个项目中有一个子模块叫rocketmq-console,这个便是管理控制台项 ...

  3. matlab集群搭建问题

    本文是在matlab 集群搭建中遇到一些问题的总结: 1.破解版的是否可以用,我已经搭建到集群还没使用目前看来破解版的是可以用的,不存在要用到"Licence Manager". ...

  4. 微服架构基础设施环境平台搭建 -(四)在Kubernetes集群基础上搭建Kubesphere平台

    微服架构基础设施环境平台搭建 -(四)在Kubernetes集群基础上搭建Kubesphere平台 通过采用微服相关架构构建一套以Kubernetes+Docker为自动化运维基础平台,以微服务为服务 ...

  5. 容器集群管理平台的比较

    2019独角兽企业重金招聘Python工程师标准>>> 容器化和微服务是当前最热话题,不久之前,笔者(据说因为现在都不用笔了,"笔者"的称谓已经不合适了,因为输入 ...

  6. RDD:基于内存的集群计算容错抽象

    转载自:http://shiyanjun.cn/archives/744.html 摘要 本文提出了分布式内存抽象的概念--弹性分布式数据集(RDD,Resilient Distributed Dat ...

  7. 转载:从集群计算到云计算

    链接:http://www.soft568.com/info/detail/3-13616-p2.html 目前,云计算在我国发展非常迅猛.IBM在中国无锡太湖新城科教产业园建立的中国第一个云计算中心 ...

  8. Kubernetes 学习总结(19)—— Kubernetes 集群管理平台如何选择?Rancher vs KubeSphere

    前言 Kubernetes(K8s)集群管理平台都是基于 Kubernetes 提供功能,可以说他们是在 K8s 的基础上封装了一层更为友好的操作方式.他们都是为了降低 k8s 集群运维复杂度,降低运 ...

  9. RDD:基于内存集群计算的容错抽象。

    转载自品略图书馆 http://www.pinlue.com/article/2020/03/1519/2310027613940.html 该论文来自Berkeley实验室,英文标题为:Resili ...

最新文章

  1. 读书笔记4:单例模式
  2. linux ll一页一页,Linux使用技巧33则
  3. Linux_LEMP
  4. [转载]C#中注册Dll的问题
  5. 浅谈C/C++中的指针和数组(一)
  6. 计组之数据运算:2、奇偶校验码、海明校验码 循环冗余校验码
  7. sql关系数据库计算机,关系数据库语言SQL - 淮阴工学院计算机工程实验中 ….ppt...
  8. linux grep查找指定文件或目录下文件的字符
  9. 如何安装树莓派鱼眼摄像头模块
  10. iOS证书的种类和其作用
  11. 【android开发】手机应用管理器的实现之获取应用列表(一)
  12. c语言程序运行超时是怎么回事,这个运行超时是什么原因?求助~
  13. 格式化后如何修复损坏的JPEG文件?
  14. Android开发者接口mock location demo
  15. UIKit 中文文档手册汇总目录
  16. burpsuite代理监听
  17. MySQL数据库设计作业 ——《网上书店系统》数据库设计实验报告
  18. 中职学生学业水平计算机考试试题,中职学业水平测试试卷(综合卷).docx
  19. 关于openCV报错无法打开文件“opencv_world340d.obj”的配置问题
  20. 如何用OKR提高下属执行力

热门文章

  1. Sublime Text3常用基本操作
  2. 工业交换机防护等级介绍
  3. 21秋期末考试建筑力学与结构10126k2
  4. 【渝粤教育】国家开放大学2018年春季 0177-22T电机学(二) 参考试题
  5. 【渝粤教育】国家开放大学2018年春季 0463-22T英语语音 参考试题
  6. 【渝粤教育】 国家开放大学2020年春季 1069中央银行理论与实务 参考试题
  7. 【渝粤题库】国家开放大学2021春2518旅游法规答案
  8. php中n12br,PHP常见字符串操作函数与用法总结
  9. Verilog二选一数据选择器
  10. android 获取对象,在Android中获取LayoutInflater对象的方法