安装成功后,需要手动启动mdce的service,配置jobmanager和worker

如果不愿英文帮助的话

simwe里这篇文章是很好的入门

Matlab的Distributed Computing Toolbox初探

我的实验室有五台双核Pentium D 925计算机,这正适合用来做分布式或并行式计算。我打

算只调用那些计算机中的一个核参与计算,留下一个核可以让其他人正常地使用该计算机。

我们在这里将会介绍Matlab中Distributed Computing Toolbox的基本使用方法,目标是实

现简单的分布式计算。

Distributed Computing Toolbox就是分布式计算工具箱,简称DCT,其可以在多台计算机组

成的Cluster中实现分布式或并行式计算。简单来说,我们是把一个很繁重的工作,分解成

许多小任务,然后分给不同的计算机去处理,最后把计算结果汇总,以达到提高计算效率的

目的。

Matlab的做法是这样的:在每台参与计算的计算机中启动一个叫Matlab Distributed

Computing Engine的服务,该服务能启动参与计算的worker的Matlab session和管理各台计

算机workers的job manager。Job manager对workers进行管理,给workers分配计算任务,

接收workers计算后的结果。而你本人就是client,你要把你的工作分解为多个任务,然后

把任务给job manager。job manager就会根据workers的多少和空闲情况,适当地把任务分

配给workers去做。workers完成任务后,会把结果返回给job manager。当所有workers都完

成任务后,你,即是client,便可以从job manager里取回结果。

具体的概念可以参考Matlab的帮助,我们也不能说得很准确。我们在这里只想给出使用

Matlab实现分布式计算的简单步骤,以便初学者快速入门。

1、首先第一步要做的,就是令每台要参与计算的计算机组成局域网。比如我有三台计算机

,其IP地址分别为192.168.1.101-192.168.1.103,以下简称计算机名为101,102和103。

2、在三台计算机中安装Matlab Distributed Computing Engine(mdce)服务。安装方法

为:如Matlab的安装地址为C:\Program

Files\MATLAB\R2006b,则Start->Run->cmd到命令

行窗口,进入C:\Program

Files\MATLAB\R2006b\toolbox\distcomp\bin目录,运行mdce

install命令安装mdce服务。接着去控制台->管理工具->服务,查看Matlab

Distributed

Computing Engine的属性。进入登录页,选择“此帐户”,输入NT

AUTHORITY\NetworkService,删除下面的密码,让该服务以NetworkService的形式登入,以

便该服务存取共享的映射网络驱动器中的原程序文件。接着便可以启动该服务了。注意以后

重新开机,该服务都会启动,当然你可以设置让它手动启动。

3、启动job manager。任一台计算机都可以启动job manager,只要mdce服务启动了即可。

比如使用计算机101,在C:\Program

Files\MATLAB\R2006b\toolbox\distcomp\bin目录下,

运行以下命令:

CODE:

startjobmanager -name frenseljobm

该命令启动jobmanager,其名字叫frenseljobm,启动地点为计算机101。

4、启动workers。任一台计算机都可以启动workers,只要mdce服务启动了即可。比如使用

计算机101,在C:\Program

Files\MATLAB\R2006b\toolbox\distcomp\bin目录下,运行以下

命令:

CODE:

startworker -jobmanagerhost 192.168.1.101 -jobmanager frenseljobm

-name worker1

此命令指明在计算机192.168.1.101中,启动名为worker1的worker,而该worker受名为

frenseljobm的jobmanager管理。就是说来自乡下101的可怜工人worker1,成为万恶的监工

frenseljobm的“马仔”了。接着,监工frenseljobm要在不同村102和103中雇用更多的工人

worker2、worker3。运行如下的命令:

CODE:

startworker -jobmanagerhost 192.168.1.101 -jobmanager frenseljobm

-name worker2

-remotehost 192.168.1.102

即可在102计算机中启动一个新的,名为worker2的worker,如此类推启动103计算机的

worker3。使用nodestatus命令可以查看节点的状态,加上-remotehost可以查看其他节点的

状态。

5、如令计算机101为client,即我们的程序在这里编写的。设程序文件位于

D:\Matlab_code\testDCT中。共享出文件夹Matlab_code,在文件夹中按工具->映射网络驱

动器->令盘符为Z:->文件夹里填\\192.168.1.101\Matlab_code。于是Z:\testDCT便成为放

置你程序的地方了。以同样的方法,让计算机102和103都建立映射网络驱动器,令盘符为

Z:,文件夹里填\\192.168.1.101\Matlab_code。这时三台机都可以通过Z:\testDCT访问原

程序文件。

6、现在便可以进行计算了。这里给出测试的代码。首先写一个函数,模拟我们实际的工作

CODE:

% hp.m

function f = hp(m, n)

H1 = zeros(n);

H2 = zeros(n);

for i = 1 : m

H = H1 + H2;

end

f = H;

end

将此程序hp.m放在D:\Matlab_code\testDCT中。此函数计算n维随机矩阵的加法m次。接着建

立另一个m文件,做具体的分布式计算。

CODE:

% runDCT.m

tic

% 寻找资源,比如jobmanager在什么地方,叫什么名字。

jm = findResource('scheduler', 'type', 'jobmanager',

'name',...

'frenseljobm', 'LookupURL', '192.168.1.101');

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

job = createJob(jm);

% 设置该工作的文件关联,让所有workers都可以找到原程序文件。

set(job, 'PathDependencies', {'Z:\testDCT'})

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

% set(job, 'FileDependencies', {'hp.m'})

N = 100;

M = 1000000;

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

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

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

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

% 提交工作给jobmanager。

submit(job)

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

waitForState(job, 'finished')

% 取出计算结果。

results = getAllOutputArguments(job);

toc

同样地,该程序runDCT.m也是放在D:\Matlab_code\testDCT中。该程序计算了三次100维矩

阵的加法1000000次,即算了100维矩阵的加法3000000次。如果在单机上运行:

CODE:

>> tic, a = hp(3000000, 100);

toc

Elapsed time is 63.096369 seconds.

而使用三台机作分布式计算时:

CODE:

>> runDCT

Elapsed time is 24.323556 seconds.

效率有明显的提升。但注意到,当第一次进行分布式计算时,其他几台机要从Z:\testDCT中

读取原程序文件,会使得计算速度降低。

总结来说,Matlab的Distributed Computing Toolbox为我们提供了一种简便的分布式或并

行式计算的实现方法。以上所写的是为了对DCT具体做法的整个过程做一次简单的介绍,我

也是初学使用这个工具箱,文章可能很粗糙和存在许多谬误,敬请指正。

matlab engine是什么,MATLAB Distributed Computing Engine相关推荐

  1. JointDNN: An Effificient Training and Inference Engine for Intelligent Mobile Cloud Computing Servic

    题目:JointDNN: An Effificient Training and Inference Engine for Intelligent Mobile Cloud Computing Ser ...

  2. 怎么把dll库写成MATLAB接口,如何在Matlab中应用动态连接库接口技术

    1 引言 Matlab是当前应用最为广泛的数学软件,具有强大的数值计算.数据分析处理.系统 分析.图形显示甚至符号运算等功能.利用这一完整的数学平台,用户可以快速实现十分 复杂的功能,极大地提高工程分 ...

  3. python调用matlab环境配置、非常详细!!!_[python][matlab]使用python调用matlab程序

    问题引入 在做实验的时候,需要用到python和matlab工具来进行不同的处理,比如在run神经网络的时候,需要使用pytorch框架得到网络的各个参数,在得到参数后需要使用matlab进行聚类规划 ...

  4. matlab的矩阵编译器,MATLAB引擎方式实现VC与MATLAB混合编程

    VS2008是当前主流的应用程序开发环境之一,开发环境强大,开发的程序执行速度快.但在科学计算方面函数库显得不够丰富.读取.显示数据图形不方便.Matlab是一款将数值分析.矩阵计算.信号处理和图形显 ...

  5. c matlab 引擎调用,【MATLAB与C的混合编程】之【C程序调用Matlab计算引擎】(1)

    先贴本人调试通过的代码: #pragma comment(lib, "libmx.lib") //#pragma comment(lib, "libmat.lib&quo ...

  6. matlab com组件 发布,matlab生成com组件

    (中国科学院声学研究所北京100084) 摘要:介绍了采用MaflabCOMBuilder制作COM组件的方法,通过支持COM方式的编译工具调用生成的COM组件,能简 单方便地实现Matlab利其他. ...

  7. float gpu 加速_(总结篇)使用 MATLAB GPU 加速计算|MATLAB 并行计算与分布式服务器|MATLAB技术论坛...

    本帖最后由 蓝云风翼 于 2013-12-18 17:28 编辑 注: 利用gpu加速有一下工具 1.JACKET 可从帖子中寻找 2.MATLAB a.并行计算工具箱 gpuArray,查看支持gp ...

  8. matlab并行加路径,matlab parfor_matlab 添加到路径_matlab 分布式计算

    Windows下MATLAB分布式并行计算服务器配置和使用方 法 1 MATLAB分布式并行计算服务器介绍 MATLAB Distributed Computing Server可以使并行计算工具箱应 ...

  9. matlab的mcr问题,matlab compiler runtime(MCR)

    MCR之前是 matlab component runtime的缩写,后更名为 matlab compiler runtime.MCR实际上是一组独立的共享库,也即是常说的动态连接库,所起的作用是使得 ...

最新文章

  1. 用一篇文章说清楚如何写作
  2. MYSQL数据库从A表把数据插入B表
  3. STL中的list详解
  4. python sanic 向别的服务器发送post请求_Sanic框架请求与响应实例分析
  5. [转]oracle临时表相关知识
  6. 《机器学习实战》chapter 07利用AdaBoosting元算法提高分类性能
  7. 《MySQL 8.0.22执行器源码分析(3.1)关于RowIterator》
  8. python越学越糊涂_你越努力,编程水平越差!这样学 Python ,更容易成为高手!...
  9. python os 常用方法
  10. 【MySQL】OPTIMIZE TABLE 的碎片整理功能
  11. Win-MASM64汇编语言-通用寄存器AX/BX/CX/DX/SI/DI/BP
  12. sklearn 学习实践之——基于自带数据集(波士顿房价、鸢尾花、糖尿病等)构建分类、回归模型
  13. 阶段5 3.微服务项目【学成在线】_day01 搭建环境 CMS服务端开发_17-页面查询接口定义-定义模型-需求分析和模型类...
  14. 资源白朴收藏:图片、 视频、音频、字体、PPT模板类、动态图、壁纸、图标
  15. C++模板的概念 定义和使用
  16. 【网络实验】10G网络下的真实带宽——CPU负载与网卡TSO、GSO
  17. The Triple-A Supply Chain by Hau L. Lee
  18. PIXHAWK飞控固件及代码基础介绍
  19. python微信加人_python实现微信自动回复及批量添加好友功能
  20. Android手机拍照功能的实现

热门文章

  1. 谈一谈DDD面向领域编程
  2. 护士站之sqlite
  3. 1001 Motivational Quotes for Success by Thomas J. Vilord
  4. 这么帅的 Linux 隧道网络形象大使,VXLAN 太厉害了!
  5. zzuli OJ 1104: 求因子和(函数专题)
  6. 看好自由行 淘寶旅行與台灣民宿合作
  7. Python基础 day08--函数基本使用
  8. 盘点游戏中那些“欺骗玩家眼睛的技巧”
  9. 网络工程、软件工程、计算机科学与技术、物联网专业,主要都学习什么内容?
  10. 【uniapp】给图片添加水印