本周文件交换精选

我们最好的用户提交

在并行工作器上创建持久资源

肖恩他本周的选择是WorkerObjWrapperMathWorks的并行计算的团队

背景

MATLAB的并行计算工具箱为你提供了打开MATLAB工作者池的能力,你可以用高级命令分配工作,比如parfor

当与此池中的工作人员通信时,在数据通信中总是会有开销。我们传输给工人的数据越少,我们看到的速度提高就越快。这在处理大型数组时很困难,实际上可能导致并行计算比串行计算慢。WorkerObjWrapper提供了一种方便的方法使数据持久存在于工作者上;这可能是大型数组,连接到数据库或其他我们需要在每次迭代parfor循环。

让我们看看它在行动中

我们将从雅虎的连接数据处理工具箱

我有一个证券的列表和相应的领域,我想从他们:

证券和期望的领域。证券= {“3”,“PG”,“微软”,“山姆”,...“厂商”,“yahoo”,“发生”,“光芒四射”};字段= {“高”, {“低”,“高”},“高”,“高”,...“低”,“高”},“低”, {“低”,“体积”},“低”};

我首先要确保有一个开放的平行池(parpool)来分配计算。我有一台双核笔记本电脑,所以我将通过选择桌面左下角的图标打开两个本地工人。

我写了三个等价的函数来从Yahoo!

  • fetchFOR-使用一个常规的for循环来获取价格
  • fetchPARFOR-使用并行for循环
  • fetchWOWPARFOR-使用一个并行的for循环和WorkerObjWrapper在所有worker上建立连接。

首先,进行一个健全检查,以确保它们都做同样的事情:

ff = fetchFOR(证券、字段);fp = fetchPARFOR(证券、字段);弗兰克-威廉姆斯= fetchWOWPARFOR(证券、字段);断言(isequal (ff、fp fw));%错误,如果它们不相等

由于传递了断言,这意味着函数返回相同的结果,所以现在可以进行计时了。我将使用时间

t = 0 (3,1);%测量时间时间t (1) = (@ () fetchFOR(证券、字段),1);时间t (2) = (@ () fetchPARFOR(证券、字段),1);时间t (3) = (@ () fetchWOWPARFOR(证券、字段),1);%显示结果流(' %。3.fs %s\n't (1),“对”t (2),“parfor”t (3),“与WorkerObjWrapper parfor”
WorkerObjWrapper的8.631s for 5.991s parfor 4.255s parfor

因此,我们可以看到,在并行池中的每个工作线程上创建一次连接,然后使用parfor给出了最好的计算时间。

评论

您是否需要处理大量数据或多次重复并行计算可能会有帮助的过程?我很想听听你的经历和你所面临的挑战。

试一试,让我们知道你的想法在这里或者离开评论为我们的并行计算团队。




已发布与MATLAB®R2013b

|
  • 打印
  • 发送电子邮件

コメント

コメントを残すには,ここをクリックしてMathWorksアカウントにサインインするか新しいMathWorksアカウントを作成します。