并行处理readtable函数

10视图(30天)
ps = parallel.Settings;
ps.Pool。AutoCreate = false;%不autocreate parpool当遇到| parfor |
ps.Pool。IdleTimeout =正;%不关闭后parpool正空闲时间
parforj = 1:10
tCOD {j:} = readtable (full_file_name (j:)“文件类型”,“文本”,
“headerlines”end_of_header_line (j),“readvariablenames”,0);
tCOD {j:} = [];
结束
当使用10大小约100 mb的文件,只有几秒的差异和parfor之间观察到的。有毛病parfor上面的步骤。有没有更方便的并行处理方法,可以应用?
如果多个“full_file_name (j:)”可以同时读取(使用多个核心),而不是按顺序,readtable可以显著增加的速度。

接受的答案

Edric埃利斯
Edric埃利斯 2021年8月19日
你手动禁用 AutoCreate 平行池——我猜你手动创建与另一个池 parpool 声明。
是否 parfor 可以比一个串行更快 循环取决于你对这种情况下的底层硬件。它可能仅仅是限制因素是你的磁盘驱动器,并多次试图读取它同时不允许任何加速。
你可以尝试手动运行的多个副本MATLAB和调用 readtable 从每个人同时看看他们慢下来当争夺磁盘访问。即在MATLAB的多个副本运行这样的:
真正的
t =抽搐();
readtable (args . .);
toc (t)
结束
我猜想,你会发现当你开始更多的MATLAB的副本, toc 时间将会增加。
1评论
沃尔特·罗伯森
沃尔特·罗伯森 2021年8月19日
泛化:如果你不使用server-quality硬件组件,那么最优utilzation通常两个过程 每个控制器 。不是每 开车 。和你通常填充内存控制器和其他硬件之间的通道。
如果你只有一个驱动/控制器,那么最佳利用率通常两个过程。控制器通常可以移动驱动头位置为下一个阅读同时被转移之前的数据,所以你想要从多个进程命令排队……但是没有太多的过程。
SSD的考虑是明显不同的。

登录置评。

更多的答案(0)

类别

找到更多的在并行计算原理帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!