主要内容

FileStore

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

自从R2022a

描述

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(模型)%的FileStore目前的工作存储= getCurrentFileStore;i = 1:元素个数(模型)%计算随机矩阵的平均值和标准偏差=兰德(模型(i));M =意味着(A);S =性病(一个);%保存仿真结果在临时文件sourceTempFile = strcat (tempname (“C: \ myTempFolder”)、“.mat”);保存(sourceTempFile、“M”、“S”);%将文件复制到FileStore对象作为密钥文件对关键= strcat (“result_ num2str(我));copyFileToStore(存储、sourceTempFile键);结束结束

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

类型fileNewEntry
函数fileNewEntry(商店,键)目的地= strcat(键,“.mat”);流(“结果% s补充道。复制到本地文件系统:% s \ n”,关键,目的地);copyFileFromStore(存储、关键目标);结束

集群上运行一个批处理作业工人使用缺省概要文件。

模型=(4、8,32岁,20);c = parcluster;工作=批(c, @workerStatsCode 0}{模型);

检索FileStore对象在客户端工作仍在运行。显示工作的进展。

商店= job.FileStore;商店。KeyUpdatedFcn = @fileNewEntry;等待(工作);
结果result_1补充道。复制到本地文件系统:result_1。垫结果result_2补充道。复制到本地文件系统:result_2。垫结果result_3补充道。复制到本地文件系统:result_3。垫结果result_4补充道。复制到本地文件系统:result_4.mat

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

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

运行一个模拟并行的过程工人和检索文件存储在客户端。

以下仿真发现随机矩阵的平均值和标准偏差和商店中的结果FileStore对象。

类型workerStatsCode
函数workerStatsCode(模型)%的FileStore目前的工作存储= getCurrentFileStore;i = 1:元素个数(模型)%计算随机矩阵的平均值和标准偏差=兰德(模型(i));M =意味着(A);S =性病(一个);%保存仿真结果在临时文件sourceTempFile = strcat (tempname (“C: \ myTempFolder”)、“.mat”);保存(sourceTempFile、“M”、“S”);%将文件复制到FileStore对象作为密钥文件对关键= strcat (“result_ num2str(我));copyFileToStore(存储、sourceTempFile键);结束结束

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

类型fileNewEntry
函数fileNewEntry(商店,键)目的地= strcat(键,“.mat”);流(“结果% s补充道。复制到本地文件系统:% s \ n”,关键,目的地);copyFileFromStore(存储、关键目标);结束

开始一个平行的过程的工人。

池= parpool (“过程”);
开始平行池(parpool)使用过程的概要文件…连接到平行池6工人。

得到了FileStore这个池时,指定要执行的回调函数添加一个条目。

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

池的仿真运行。

模型=(4、8,32岁,20);未来= parfeval (@workerStatsCode 0模型);等待(未来);
结果result_1补充道。复制到本地文件系统:result_1。垫结果result_2补充道。复制到本地文件系统:result_2。垫结果result_3补充道。复制到本地文件系统:result_3。垫结果result_4补充道。复制到本地文件系统:result_4.mat

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

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

运行一个独立的工作任务。然后,检索数据和文件存储在客户端工作的。

以下仿真发现矢量的排列和组合,并存储结果ValueStoreFileStore对象。

类型taskFunction
函数taskFunction(数据集,keyname) %的ValueStore和FileStore目前的工作ValueStore = getCurrentValueStore;fileStore = getCurrentFileStore;%运行仿真发现排列组合[因此,日志文件]= runSimulation(数据集);%将结果存储在ValueStore释放系统内存ValueStore (keyname) =结果;%将文件复制到FileStore检索文件从文件系统共享copyFileToStore (keyname FileStore,日志文件);结束函数[因此,日志文件]= runSimulation(集)排列=烫发(数据集{1});组合= nchoosek(数据集数据集{1},{2});结果。N_perm =长度(排列);结果。N_comb = length(combinations); logFile = strcat(tempname("C:\myLogFolder"),".mat"); save(logFile,"permutations","combinations") end

创建一个使用默认集群工作概要。

c = parcluster;工作= createJob (c);

创建独立的任务。每个任务运行仿真与给定的输入。

set_1 ={(12, 34岁,54),2};set_2 ={(45岁,33),1};set_3 ={[14] 12 12日,12日,13日,3};任务= createTask(工作,@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”
类属性名称大小字节组合3 x2 48双排列x3 144双
——文件“analysis_2.mat”
类属性名称大小字节组合2 x1 16双排列2 x2 32双

限制

  • 当使用parallel.cluster.Generic集群“HasSharedFileSystem”设置为,修改的可见性FileStore虽然工作取决于您的特定实现。没有额外的MATLAB之间的同步客户机和工人JobStorageLocation,可能只有可见的变化,一旦工作已经完成。

版本历史

介绍了R2022a