并行计算和CPU的使用

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

我有一个概念性问题。我有一个用于模拟光束传播(光学)的 MATLAB 代码,其中有很多 for 循环,但循环中的每次迭代都取决于前一次迭代(第 n+1 次迭代取决于第 n 次迭代的值)。据我了解,这意味着循环不适合并行计算,即我不能使用 parfor 代替 for。这是否意味着当我使用批处理将作业发送到集群的节点时,我在该节点中只使用 1 个核心吗?

我尝试分别请求 28 核和 56 核发送相同的代码,并且运行时间没有时间差异。 ChatGPT 告诉我,这是因为我的代码不支持并行计算,而且我只使用一个核心。

如果我无法使用它,除了并行计算之外还有更快的方法吗?

matlab parallel-processing cpu-usage
1个回答
0
投票

并行计算有不同类型。就您而言,您正在做的事情听起来像是一个典型的“ODE 式”问题,您正在及时传播系统。一般来说,这些很难并行化。也许您最好的选择是尝试使用数据并行性来更快地运行每个时间步,而不是尝试在时间步上进行并行。

只有当每个时间步公开大量可能并行的计算时,这种方法才真正有效。如果您正在使用基于 FFT 的光传播,您也许可以使用

distributed
阵列来实现数据并行方法。像这样的 CPU 上的数据并行性很难获得良好的加速。使用
gpuArray
(如果可能)可能更合适。

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