将Raspberry Pi 4的群集用作数字处理的群集吗?

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

因此,我目前正在MATLAB中开发一种算法,该算法虽然计算量大,但对并行处理友好。鉴于此,我一直在使用并行处理库,但仍未达到我的计算时间目标。

我目前正在Intel i7 8086k CPU(6核,12逻辑,@ 4.00GHz,turbo为5GHz)上运行我的算法

这是我的问题:

  1. [如果要购买,可以说10个树莓派4 SBC(4核@ 1.5GHz),我可以将主台式机用作主机,将PI用作客户端吗? (让我们假设我将算法迁移到C ++并立即在Ubuntu中运行)。

1a。如果我要完成第1个问题的构建,花费约$ 500的计算是否会得到重大升级?

1b。如果我不能将台式机用作主机(我相信这不应该成为问题),那么我需要多少个树莓派PI来等于当前的CPU,或者需要多少个树莓派PI才能使其在PC上工作更有利。 PI群集与我的计算机?

  1. 是否有可能在主机计算机上运行Windows,而在客户机(Pis)上运行linux,以便我继续使用MATLAB?

感谢您的帮助,欢迎提供其他建议和建议

matlab parallel-processing raspberry-pi cluster-computing cpu-architecture
1个回答
1
投票

您的算法是否会限制原始FMA / FLOPS吞吐量?如果是这样,那么弱的ARM内核集群将带来更大的麻烦。我希望如果可以便宜地找到二手Zen2机器,或者Haswell或Broadwell,可能会很好。 (您必须查看核心计数,时钟和FLOPS / $。以及是否仍不会在内存带宽较小的旧系统上出现内存瓶颈问题。)

[如果您是瓶颈,而不是内存带宽或延迟造成的高速缓存未命中(例如,高速缓存不友好的数据布局),那么,即使每个高速缓存较小,CPU越弱,每个CPU都有自己的内存控制器和高速缓存,可能会有所帮助。比您的英特尔。

Matlab是否完全使用您的GPU(例如通过OpenCL)?您当前的IA内核CPU的峰值double(FP64)吞吐量为96 GFLOPS,但其集成GPU为capable of 115.2 GFLOPS。或对于单精度,x86内核中的460.8 GFLOPS GPU与192 GFLOPS。同样,理论上最大的吞吐量,在CPU上每个内核每个时钟周期运行2个256位SIMD FMA指令。

升级到功能强大的GPU可能比RPi4集群更有效。] https://en.wikipedia.org/wiki/FLOPS#Hardware_costs显示,2017年每单精度GFLOP的成本约为5美分,这将大型GPU添加到了便宜的CPU中。或每双精度GFLOP为79美分。

如果您的问题是GPU友好的,但Matlab尚未使用您的GPU,请进行调查。也许Matlab有选项,或者您可以从C ++使用OpenCL。

花费约$ 500,在计算上是否会有重大升级?

RPi4模型B has a Broadcom BCM2711 SoC。 CPU为Cortex-A72

它们的高速缓存层次结构为每个内核32 KB数据+ 48 KB指令L1高速缓存。 1MB共享二级缓存。这要比您的4GHz i7弱,后者具有每内核32k L1d + 256k L2私有和共享的12MiB L3缓存。但是更快的内核会在等待缓存未命中的相同绝对时间内浪费更多的周期,ARM芯片以具有竞争力的DDR4-2400运行其DRAM。

RPi CPU并不是FP的强国。

原始数量之间有很大的差距,但是如果有足够的数量,吞吐量的确会增加。

[https://en.wikipedia.org/wiki/FLOPS#FLOPs_per_cycle_for_various_processors显示Cortex-A72的峰值FPU吞吐量为每个内核每个周期2doubleFLOPS,而自Haswell以来,英特尔为16,而Zen2之后则为AMD。

下降到单精度float将x86的系数提高了2倍,将A72的系数提高了4倍。显然,它们的SIMD单元的FP64指令吞吐量较低,每个SIMD向量的工作量只有一半。 (其他一些ARM内核的速度不是两倍,而是预期的2:1,例如Cortex-A57和A76。)]

但是所有这些都是峰值FLOPS吞吐量;只有使用经过良好调整的代码并具有良好的计算强度(每次将数据加载到缓存和/或寄存器中时需要进行大量工作),才能接近真实代码。例如一个密集的矩阵乘法就是一个典型的例子:O(n ^ 3)FPU对O(n ^ 2)数据起作用,从而使得缓存块成为可能。或Prime95是另一个示例。

仍然是对信封计算的粗略估算,非常慷慨,并且为Coffee Lake假定了持续的非涡轮时钟。

(所有6个内核每个时钟都在忙于运行2x 256位FMA指令,因此会产生lot] >实际上就是Prime95的功能,因此,如果您的代码效率很高,那么可以期望达到这样的功耗水平。)
  • 6 * 4GHz * 4个元素/ vec * 2 vec /周期= 48G FMA /秒= 96 GFLOP /秒
  • 4 * 1.5GHz * 2 DP触发器/时钟= 12 GFLOP /秒/ RPi。]

使用5x RPi系统,将60 GFLOPS添加到现有的96 GFLOP中。

管理少于5个RPi系统而不是现有的FP总吞吐量听起来不值得。但是同样,如果您的问题具有正确的并行度,GPU可以更有效地运行它。相对于高端(2017年)视频卡每60 GFLOP约50 $而言,60 GFLOPS的价格为500 $并不划算。

[RPi中的GPU可能具有一定的计算能力,但如果您的代码对CPU友好,那么与将500 $的离散GPU放入现有计算机中相比,几乎可以肯定,它不值得。

或者您的问题可能不会随着理论上的最大FLOPS而扩大,而是可能随着缓存带宽或其他因素而扩大。

是否有可能在主机计算机上运行Windows,而在客户机(Pis)上运行linux,以便我继续使用MATLAB?

零线索;我仅考虑在这些CPU上运行高效机器代码的理论上最好的情况。

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