我必须在 MATLAB 上运行无法优化的代码,因此我必须提高计算能力。该代码已经使用并行处理。 我已经在 AWS 上的 ubuntu 和 Windows 上安装了 MATLAB,并且同时在我的 Mac 上进行测试。无论我在 AWS 上增加多少 vCPU 数量,性能(即代码执行时间)都不会发生有意义的变化。 2 个 vCPU 和 36 个 vCPU 之间存在差异,但 EC2 和我的配备 Apple M2 芯片(可能是 8 核)的 mac 之间没有太大区别。
所以我的问题是
我在 16 核的 Mac 上尝试过,计算时间减少了,但对于我来说,这些信息不足以计算我需要的设备/服务器的规格。 在 AWS 上,我尝试了 c4.8xlarge (ubuntu) 和 c6a.48xlarge (windows)。对于 ubuntu,我从终端运行 MATLAB,没有显示。
我正在使用 HCTSA 工具箱,并且根据他们在教程中提供的示例数据集进行计时,可以访问此处
TS_Init('INP_Bonn_EEG.mat'); %prepares the input for the main function
TS_Compute(true, 1:10);
第一个问题:
“为什么我没有从 AWS 上的那么多核心获得更高的性能?”
因为处理性能的任何和所有变化(无论是增加还是减少)主要取决于:
(a) 是 - 增加资源(添加 vCPU,在非共享形式的真实进程专用 CPU 中效果更好)
(b) 但还增加了(目前为止尚未出现)开销(无论是一项新工作,还是将部分工作“交付”给“新”资源 - 例如 IPC 的 SER / DES - 以及相同的情况)从“远程”资源收集结果的“返回”方式会降低缓存命中/未命中统计数据的效率,降低从存储中检索数据的速度(缓存中的数据会被“其他”更快地逐出) ” 核心,在 (a) 之前不工作,将“它们的”数据块放入共享缓存中,因此您的“第一个”CPU 核心必须再次从 RAM 中重新获取一次预取的数据块(支付 10 倍~比从(现已被驱逐的)核心/CPU 存储位置缓存中获取数据的时间多 100 倍)
Q2 :
“如何估算减少计算时间所需的计算能力?”
修订后的阿姆达尔定律给出了定量精确的公式。您将获得添加更多资源对最终计算时间的确切影响 - 详细信息在这里,应用程序(甚至使用阿姆达尔论证的交互式图形模拟器)在这里。