主要内容

FileStore

共享的文件存储MATLAB客户和工人

描述

FileStore存储特定作业拥有的文件的对象。对象的每个条目都由一个文件及其对应的键组成。当删除所属的作业时,FileStore对象也会被删除。使用FileStore从MATLAB中存储文件®在作业执行期间(甚至在作业仍在运行时),可以由MATLAB客户机检索的工作者。

  • 任何MATLAB进程客户端或工作人员都可以向FileStore随时都可以。任何MATLAB进程客户端或工作人员都可以从FileStore随时都可以。但是,不能保证不同进程执行的操作的顺序。

  • FileStore可用于在集群中没有共享文件系统时返回文件,或用于运行不关心任何共享文件系统位置的代码。

  • FileStore不在系统内存中,因此可以用来存储较大的结果。

创建

FileStore对象在创建时自动创建:

您可以访问FileStore对象上的getCurrentFileStore函数。然后可以检索FileStore对象在客户机上使用FileStore与作业或并行池关联的属性。例如,参见运行批处理作业并从工作者检索文件

属性

全部展开

项添加或替换时执行的回调,指定为函数处理.函数句柄必须接受两个表示FileStore对象及其键时添加或替换项。

项被删除时执行的回调,指定为函数处理.函数句柄必须接受两个表示FileStore对象及其键。

对象的功能

isKey 确定ValueStoreFileStore对象包含键
返回的所有键ValueStoreFileStore对象
copyFileToStore 将文件从本地文件系统复制到FileStore对象
copyFileFromStore FileStore对象添加到本地文件系统
删除 删除条目ValueStoreFileStore对象

例子

全部折叠

在工作者上运行模拟,并在客户机上检索作业的文件存储。文件存储为FileStore对象的键文件项。

下面的模拟计算随机矩阵的平均值和标准差,并将结果存储在FileStore对象。

类型workerStatsCode
函数workerStatsCode(models) %获取当前作业存储的文件存储= getCurrentFileStore;计算随机矩阵A = rand(models(i))的平均值和标准差;M =均值(A);S = std(A);%将模拟结果保存在临时文件sourceTempFile = strcat(tempname("C:\myTempFolder"),".mat");保存(sourceTempFile、“M”、“S”);将文件复制到FileStore对象作为键-文件对key = strcat("result_",num2str(i));copyFileToStore(存储、sourceTempFile键);结束结束

文件复制到。时执行以下回调函数FileStore对象。

类型fileNewEntry
函数fileNewEntry(store,key) destination = strcat(key,".mat");fprintf("添加结果%s。复制到本地文件系统:%s\n",键,目标);copyFileFromStore(存储、关键目标);结束

使用默认的集群概要在工作者上运行批处理作业。

模型= [4,8,32,20];C = parcluster;job = batch(c,@workerStatsCode,0,{models});

检索FileStore对象,而作业仍在运行。显示工作的进展。

store = job.FileStore;商店。KeyUpdatedFcn = @fileNewEntry;等待(工作);
添加结果result_1。正在复制到本地文件系统:result_1。mat添加结果result_2。正在复制到本地文件系统:result_2。mat添加结果result_3。正在复制到本地文件系统:result_3。mat添加结果result_4。复制到本地文件系统:result_4.mat

显示文件中存储的变量的所有信息“result_3.mat”

——文件“result_3.mat”
名称大小字节类属性M 1x32 256 double S 1x32 256 double

在进程工作者的并行池上运行模拟,并在客户机上检索文件存储。

下面的模拟计算随机矩阵的平均值和标准差,并将结果存储在FileStore对象。

类型workerStatsCode
函数workerStatsCode(models) %获取当前作业存储的文件存储= getCurrentFileStore;计算随机矩阵A = rand(models(i))的平均值和标准差;M =均值(A);S = std(A);%将模拟结果保存在临时文件sourceTempFile = strcat(tempname("C:\myTempFolder"),".mat");保存(sourceTempFile、“M”、“S”);将文件复制到FileStore对象作为键-文件对key = strcat("result_",num2str(i));copyFileToStore(存储、sourceTempFile键);结束结束

文件复制到。时执行以下回调函数FileStore对象。

类型fileNewEntry
函数fileNewEntry(store,key) destination = strcat(key,".mat");fprintf("添加结果%s。复制到本地文件系统:%s\n",键,目标);copyFileFromStore(存储、关键目标);结束

启动流程工作者的并行池。

泳池= parpool“本地”);
使用“本地”配置文件启动并行池(parpool)…连接到并行池(工作人员数量:6)。

得到了FileStore,并在添加条目时指定要执行的回调函数。

store = pool.FileStore;商店。KeyUpdatedFcn = @fileNewEntry;

在池上运行模拟。

模型= [4,8,32,20];future = parfeval(@workerStatsCode,0,models);等待(未来);
添加结果result_1。正在复制到本地文件系统:result_1。mat添加结果result_2。正在复制到本地文件系统:result_2。mat添加结果result_3。正在复制到本地文件系统:result_3。mat添加结果result_4。复制到本地文件系统:result_4.mat

显示存储在本地文件中的变量result_3.mat

——文件“result_3.mat”
名称大小字节类属性M 1x32 256 double S 1x32 256 double

运行独立任务的作业。然后,在客户机上检索作业的数据和文件存储。

下面的模拟查找向量的排列和组合,并将结果存储在ValueStore而且FileStore对象。

类型taskFunction
获取当前作业的ValueStore和FileStore;fileStore = getCurrentFileStore;%运行模拟查找排列和组合[result,logFile] = runSimulation(dataset);%将结果存储在ValueStore中以释放系统内存复制文件到文件存储,从非共享文件系统copyFileToStore检索文件(FileStore,logFile,keyname);end function [result,logFile] = runSimulation(数据集)排列= perms(数据集{1});组合= nchoosek(数据集{1},数据集{2});结果。N_perm =长度(排列);结果。N_comb = length(combinations); logFile = strcat(tempname("C:\myLogFolder"),".mat"); save(logFile,"permutations","combinations") end

使用默认集群配置文件创建作业。

C = parcluster;job = createJob(c);

为工作创建独立的任务。每个任务使用给定的输入运行模拟。

Set_1 = {[12,34,54],2};Set_2 = {[45,33],1};Set_3 = {[12,12,13,14],3};task = createTask(job,@taskFunction,0,{{set_1,“sim_1”}, {set_2,“sim_2”}, {set_3,“sim_3”}});

运行该作业并等待它完成。

提交(工作);等待(工作);

检索作业的数据和文件存储。

valueStore = job.ValueStore;fileStore = job.FileStore;

对象中存储的第三个任务的结果ValueStore对象。

result_3 = valueStore(“sim_3”
result_3 =带有字段的结构:N_perm: 120 N_comb: 10

从相应键指定的文件存储中复制文件“sim_1”而且“sim_2”到本地文件“analysis_1.mat”而且“analysis_2.mat”

copyFileFromStore (fileStore [“sim_1”“sim_2”]、[“analysis_1.mat”“analysis_2.mat”]);

显示关于存储在本地文件中的变量的所有信息。

——文件“analysis_1.mat”
名称大小字节类属性组合3x2 48双排列6x3 144双
——文件“analysis_2.mat”
名称大小字节类属性组合2x1 16 double排列2x2 32 double

限制

  • 当使用parallel.cluster.Generic集群“HasSharedFileSystem”设置为,所作修改的可见性FileStore作业的运行时间取决于您的具体实现。无需在MATLAB客户端和工作程序之间进行额外的同步JobStorageLocation,更改可能只有在作业完成后才可见。

版本历史

在R2022a中引入

Baidu
map