MatLab并行计算工具箱:为同一任务使用更多内核

问题描述 投票:0回答:1

我有一台具有4个physical内核的笔记本电脑和MatLab并行计算工具箱。我需要执行两个独立的任务(非常昂贵,可以说要计算密集,大矩阵的最大特征值)。

所以,我想通过以下方式将任务分配到我的核心:

  • 第一个任务的2个核心
  • 第二个任务的2个核心

但是我真的不明白/找不到如何在MatLab代码中进行设置。

经过大量搜索后,我已经看到我应该使用spmd,但是我在文档中找不到合适的示例,允许我使用2个内核完成同一任务

非常感谢MatLab中的任何最小工作示例!

丹尼尔评论后编辑:创建一个由4个工人组成的并行池后,我可以执行以下操作:

 spmd
     if labindex == 1 
        %first worker, do something             
     elseif labindex == 2
         %second worker, do sometihng
     end   
 end

EDIT(2)

我可以设置NumThreads=2,因此每个工作人员将执行两项任务(对吗?)。现在的问题是:我是否必须使用4个工作程序创建一个Parpool,所以每个工作程序都有2个线程?更明确地:

parpool(4); %set NumThreads = 2 via Parallel computing toolbox %define matrix A1, A2 of size 1000x1000 parfor i=1:2 x(i) = max(abs(eigs(A(i)))); end

我现在希望前两个内核在x(1)上工作,而另外两个在x(2)上工作

matlab parallel-processing distributed-computing spmd
1个回答
0
投票

根据各种注释,如果您设置cluster object's NumThreads属性,则您启动的每个工作程序将使用该数量的计算线程。您可以通过Cluster Profile Manager或以编程方式执行此操作。

© www.soinside.com 2019 - 2024. All rights reserved.