在部署的应用程序中使用 Parallel Computing Toolbox
使用 Parallel Computing Toolbox™ 的应用程序可以使用 MATLAB® 预设项文件夹中的集群配置文件。要找到该文件夹,请使用 prefdir。
例如,当您创建一个独立的应用程序时,集群配置文件管理器中可用的所有配置文件都将在该应用程序中可用。
您的应用程序还可以使用外部文件中给出的集群配置文件。为了使您的应用程序能够使用此文件,您可以:
在代码内链接到文件。
在运行时传递文件的位置。
导出集群配置文件
要将集群配置文件导出到外部文件:
在主页选项卡的环境部分中,选择并行 > 创建和管理集群。
在集群配置文件管理器对话框中,选择一个配置文件,然后在管理部分中点击导出。
在您的代码中链接到 Parallel Computing Toolbox 配置文件
为了使您的应用程序能够使用外部文件中给出的集群配置文件,您可以从代码链接到该文件。在此示例中,您将使用绝对路径、相对路径和 MATLAB 搜索路径链接到集群配置文件。请注意,由于每个链接都是在编译之前指定的,因此必须确保每个链接都不会改变。
要为您的应用程序设置集群配置文件,您可以使用 setmcruserdata 函数。
由于您的 MATLAB 预设项文件夹与您的应用程序捆绑在一起,因此文件夹内文件的任何相对链接将始终有效。在您的应用程序代码中,您可以使用 MATLAB 预设项文件夹中的 myClusterProfile.mlsettings 文件。
mpSettingsPath = fullfile(prefdir, 'myClusterProfile.mlsettings'); setmcruserdata('ParallelProfile', mpSettingsPath);
fullfile 给出外部文件的绝对路径。mpSettingsPath 给出的参量必须是绝对路径。如果您的应用程序的用户在其文件系统上有一个集群配置文件,并且该配置文件的绝对路径不会改变,请直接链接到它:mpSettingsPath = '/path/to/myClusterProfile.mlsettings'; setmcruserdata('ParallelProfile', mpSettingsPath);
mpSettingsPath = fullfile(pwd, '../rel/path/to/myClusterProfile.mlsettings'); setmcruserdata('ParallelProfile', mpSettingsPath);
which 来获取集群配置文件的绝对路径。然后,链接到它。mpSettingsPath = which('myClusterProfile.mlsettings'); setmcruserdata('ParallelProfile', mpSettingsPath);
mcc -a /path/to/myClusterProfile.mlsettings -m myApp.m;
/path/to/ 添加到您的 MATLAB 搜索路径。在运行时传递 Parallel Computing Toolbox 配置文件
如果您的应用程序 myApp 的用户具有在运行时选择的集群配置文件,则您可以在命令行中指定它。
myApp -mcruserdata ParallelProfile:/path/to/myClusterProfile.mlsettings |
请注意,当您在代码中使用 setmcruserdata 函数时,您将覆盖 -mcruserdata 标志的使用。
在已部署的应用程序中切换集群配置文件
当您使用 setmcruserdata 函数时,您将无法使用集群配置文件管理器中可用的任何配置文件。要重新启用集群配置文件管理器中的配置文件,请使用 parallel.mlSettings 文件。
mpSettingsPath = '/path/to/myClusterProfile.mlsettings'; setmcruserdata('ParallelProfile', mpSettingsPath); % SOME APPLICATION CODE origSettingsPath = fullfile(prefdir, 'parallel.mlsettings'); setmcruserdata('ParallelProfile', origSettingsPath); % MORE APPLICATION CODE
加载集群配置文件的 C 代码示例
您可以在使用 MATLAB Compiler SDK™ 构建的 C 和 C++ 应用程序中本地调用 mcruserdata 函数。
mxArray *key = mxCreateString("ParallelProfile");
mxArray *value = mxCreateString("/path/to/myClusterProfile.mlsettings");
if (!setmcruserdata(key, value))
{
fprintf(stderr,
"Could not set MCR user data: \n %s ",
mclGetLastErrorMessage());
return -1;
} |
另请参阅
setmcruserdata | getmcruserdata
主题
- 使用 MATLAB Runtime 用户数据接口
- 在 .NET 应用程序中指定 Parallel Computing Toolbox 配置文件 (MATLAB Compiler SDK)
- 在 Java 应用程序中指定 Parallel Computing Toolbox 配置文件 (MATLAB Compiler SDK)