主要内容

MATLAB运行时用户数据接口

这个特性允许数据在MATLAB®运行时实例,MATLAB代码在其上运行MATLAB运行时实例,以及创建MATLAB运行时实例。通过电话联系MATLAB运行时用户数据接口API,您访问MATLAB运行时的每个实例关联数组mxArray,包含从字符串键到mxArray值。这样做的原因包括但不限于:

  • 你需要提供MATLAB运行时将配置文件信息发送到运行由Parallel Computing Toolbox™软件创建的应用程序的客户端。概要文件可以在每次执行的基础上提供(和更改)。例如,同一个应用程序的两个实例可以同时使用不同的概要文件运行。

  • 你想要初始化MATLAB运行时使用所有MATLAB应用程序都可以访问的常数值。

  • 你想要建立一个全局的工作空间-一个全局变量或变量,MATLAB和你的客户端可以访问。

  • 您希望存储任何变量或变量组的状态。

MATLAB编译器SDK™软件支持per-万博1manbetxMATLAB运行时通过面向对象的API访问实例状态。对每个实例状态的访问是可选的。您可以通过添加setmcruserdata.mgetmcruserdata.m,或者在命令行上指定它们。或者,您可以使用助手函数来调用这些方法,如为并行计算工具箱应用程序提供集群配置文件

有关更多信息,请参见使用MATLAB运行时用户数据接口

提供群集配置文件并行计算工具箱应用程序

下面是一个完整的例子,告诉你如何使用MATLAB运行时用户数据接口作为一种机制,用于为并行计算工具箱应用程序指定集群配置文件。

第一步:写你的并行计算工具箱代码

  1. 编译sample_pct.m在MATLAB。

    此示例代码使用默认配置文件中定义的集群。

    输出假设默认配置文件为当地的

    函数加速= sample_pct (n)警告所有;抽搐如果(ischar (n)) n = str2double (n);结束Ii = 1:n (cov(sin(magic(n))+rand(n,n))));结束time1 = toc;parpool;抽搐parforIi = 1:n (cov(sin(magic(n))+rand(n,n))));结束time2 = toc;disp ([正常循环时间:num2str (time1)...',并行循环时间:'num2str (time2)]);disp ([的并行加速:num2str (1 / (time2 / time1))...“比平时快很多倍”]);删除(gcp);disp (“完成”);加速= (time1 / time2);
  2. 将默认配置文件更改为之后,运行如下代码当地的,如果必要的。

    = sample_pct (200)

  3. 验证您是否得到以下结果:

    使用“local”配置文件启动并行池(parpool)…连接到4个工人。正常循环时间:0.7587,并行循环时间:2.9988,并行加速:0.253倍的速度比正常使用'local'配置文件正在关闭的并行池。完成a = 0.2530

步骤2:设置并行计算工具箱配置文件

为了将MATLAB代码编译成一个。net组件,并利用并行计算工具箱mcruserdata必须直接从MATLAB设置。没有。net API可用来访问MCRUserdata就像C和c++应用程序一样MATLAB编译器SDK

设置mcruserdata从MATLAB,创建一个初始化函数。net类中的函数。这是一个单独的MATLAB函数使用setmcruserdata设置并行计算工具箱配置文件一次。然后调用其他函数来利用并行计算工具箱函数。

创建以下初始化功能:

function init_sample_pct %设置并行配置文件:if(isdeployed) [Profile] = uigetfile('*.settings');%让用户选择文件setmcruserdata('ParallelProfile', [profile]);结束

步骤3:编译函数

你可以在命令行输入以下命令来编译你的函数:

mcc -W 'dotnet:netPctComp,NetPctClass' init_sample_pct. exe '。m sample_pct。m - t链接:自由

另外,你可以使用Library Compiler应用程序如下:

  1. 按照下面的步骤操作生成。net程序集和构建。net应用程序编译您的应用程序。编译完成后,将创建一个新文件夹(与项目名称相同)。这个文件夹包含两个子文件夹:distribsrc

    库名称 netPctComp
    类名 NetPctClass
    文件编制 sample_pct.minit_sample_pct.m

    请注意

    如果使用“并行计算工具箱”的GPU特性,需要手动添加PTX和CU文件。

    如果您正在使用Library Compiler应用程序,请单击添加文件/目录构建选项卡。

    如果你正在使用世纪挑战集团命令,可以使用——一个选择。

  2. 要部署已编译的应用程序,请复制for_redistribution_files_only文件夹,其中包含以下内容,发送给最终用户。

    请注意

    最终用户的目标计算机必须具有对集群的访问权限。

步骤4:编写。net驱动程序应用程序

将引用添加到组件和MWArray在你的微软®Visual Studio®项目,编写如下的. net驱动程序应用程序来使用该组件,如下所示。看到将简单的MATLAB函数集成到。net应用程序中为更多的信息。

请注意

这个示例代码是使用微软Visual Studio2008.

使用系统;使用MathWorks.MATLAB.NET.Utility;使用MathWorks.MATLAB.NET.Arrays;使用netPctComp;命名空间PctNet{类程序{static void Main(string[] args) {try {NetPctClass A = new NetPctClass();//初始化PCT设置A.init_sample_pct();Double var = 300;MWNumericArray着干活;MWNumericArray in1 = new MWNumericArray(300);着干活= (MWNumericArray) A.sample_pct (in); Console.WriteLine("The speedup is {0}", out1); Console.ReadLine(); // Wait for user to exit application } catch (Exception exception) { Console.WriteLine("Error: {0}", exception); } } } }

输出如下: