MATLAB 有强大的 Parallel Computing Toolbox,可以使用 MATLAB 来用 CPU 和 GPU 跑并行运算。
更重要的是,他方便啊!!!比起 C/C++ 还要调库、学更多的东西,MATLAB 有些跑多线程的方法简直就是一键启动多线程,方便的不要不要的。
# parfor
最简单的一种,就是把 for
改为 parfor
。如下代码:
for i = 1:testCases
AverageWaitTime = AverageWaitTime + QueueStimulator(serviceTime, comeTime) / testCases;
end
如需要并行运算,只需:
parfor i = 1:testCases
AverageWaitTime = AverageWaitTime + QueueStimulator(serviceTime, comeTime) / testCases;
end
如果出现不能并行运算的语法,MATLAB 会报错。
并行计算需要数十秒,用于初始化 Parallel Pool,所以请注意,如果本身单线程只需要几秒就能跑完的程序,是没有必要并行运算的。除掉初始化的时间,并行运算会比普通的快的多(12核心下:4.2s -> 0.6s)。
另外,CPU 12 核心的 Parallel Pool 占用内存达到了 8GB 额,16GB 内存可能会有点吃紧。建议加内存条。
# GPU 并行运算
目前 MATLAB R2019b 的 GPU 运算只适用于运行 NVIDIA CUDA 的 GPU。