我可以在matlab中通过并行化来测量加速吗?

时间:2014-08-14 22:23:38

标签: matlab parallel-processing intel multicore

如果我认为问题是平行化的候选者,例如矩阵乘法或其他一些问题,我使用的是英特尔i7 haswell双核,有什么方法可以比较并行执行到同一程序的顺序版本,还是matlab优化程序到我的架构(双核,四核...)?我想知道从一个好的基准平行程序添加更多处理器的速度。

3 个答案:

答案 0 :(得分:8)

不幸的是,没有基准并行程序这样的东西。如果您测量基准算法的加速比并不意味着所有算法都将从并行化中受益

由于您的目标架构只有2个内核,因此最好避免并行化,让Matlab和操作系统优化执行。无论如何,这是我遵循的步骤。

  • 通过计算理论加速来确定您的问题是否适合并行化。对矩阵乘法或高斯消除等问题进行了深入研究。由于我认为您的问题比这更复杂,因此尝试将算法分解为简单的块,并逐块确定并行化的优势。
  • 如果您发现算法的多个部分可以从并行化中获益,请分别研究部分
  • 获取顺序算法运行时的统计信息。也就是说,在类似条件(和类似输入)下运行程序X次并平均运行时间。
  • 获取并行算法运行时的统计信息。
  • 使用分析器进行测量。许多人建议使用tictoc等功能。分析器将为您提供更准确的运行时间图,以及每个功能的详细信息。有关如何使用分析器的详细信息,请参阅documentation
  • 不要错误地考虑到Matlab打开工作池所花费的时间(我假设您正在使用Parallel Computing Toolbox)。根据您的工作人员数量,游泳池需要更多/更少的时间,在某些情况下可能需要1分钟(2011b)!

答案 1 :(得分:5)

您可以在MATLAB上尝试"Run and time"功能。

或者只是将一些tictoc分别放在代码的第一行和结尾处。

答案 2 :(得分:2)

Matlab提供了许多计时功能来帮助您评估代码的性能:请阅读文档here并选择您认为最合适的功能!请特别注意tic toccputime函数之间的区别。