Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
内存使用查询的MATLAB并行算法_Matlab_Memory Management_Parallel Processing - Fatal编程技术网

内存使用查询的MATLAB并行算法

内存使用查询的MATLAB并行算法,matlab,memory-management,parallel-processing,Matlab,Memory Management,Parallel Processing,我是新来这里问问题的,虽然我以前在这里找到了许多问题的解决办法 这个特别的问题我似乎找不到答案,所以我想我会联合起来问 我正在使用并行计算工具箱一次运行多个模拟,我正在开发的代码将部署在单个内核上,因此不需要将算法转换为并行 每个模拟创建的数据结构都很大,一次运行8个模拟将使用我机器中所有可用的RAM(4GB) 我目前正在考虑减少每个模拟所使用的内存,并想知道是否有人知道如何从函数的每个实例中获取内存使用信息 到目前为止,我一直在打电话: parfor i=1:8 [IR(:, i) Da

我是新来这里问问题的,虽然我以前在这里找到了许多问题的解决办法

这个特别的问题我似乎找不到答案,所以我想我会联合起来问

我正在使用并行计算工具箱一次运行多个模拟,我正在开发的代码将部署在单个内核上,因此不需要将算法转换为并行

每个模拟创建的数据结构都很大,一次运行8个模拟将使用我机器中所有可用的RAM(4GB)

我目前正在考虑减少每个模拟所使用的内存,并想知道是否有人知道如何从函数的每个实例中获取内存使用信息

到目前为止,我一直在打电话:

parfor i=1:8
   [IR(:, i) Data(i)] =   feval(F, NX, NY(i), SR, NS, i);
end
内函数F

[usr, sys] = memory;
format short eng;
TEST.Mem = usr.MemUsedMATLAB;
但是可以理解的是,这返回了所有8个F实例所使用的内存

我想从F的每个实例中获得信息

注意:数据结构测试作为数据返回给顶级函数


提前感谢您的帮助。

您可以使用matlab profiler获得内存使用的提示:

% start profiler
profile -memory on;

% start your simulation
my_sim();


% look at profiler results
profile viewer

我不明白“F的所有8个实例使用的内存”和“F的每个实例的信息”之间的区别-您的PARFOR循环在结果的一个单独元素中捕获F的每个返回,即“每个实例”。嗨,当F运行时,它会创建几个大矩阵,这取决于调用时的输入参数,然后使用这些参数获得返回的结果,**这些矩阵随后被销毁,但我想知道的是函数运行时使用的内存我仍然感到困惑-“数据(I)”包含关于F第I次运行的内存信息,对吗?如果是,您还想知道什么?是的,数据(i)包含由
usr.MemUsedMATLAB
返回的信息,但无论矩阵(其中3个)是1000点还是1000000点,这都是相同的。因此,我得出的结论是,调用返回的是MATLAB总共使用的内存,这是F的所有实例,因为它们是并行运行的。