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

Nik*_*ntz 5 parallel-processing matlab multicore intel

如果我认为问题是并行化的候选者,例如矩阵乘法或其他一些问题而且我使用的是英特尔i7 haswell双核,我是否可以通过某种方式将并行执行与同一程序的顺序版本进行比较,或者将matlab优化为程序到我的架构(dualcore,quadcore ..)?我想知道从一个好的基准平行程序添加更多处理器的速度.

gir*_*ire 8

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

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

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


Nem*_*ehi 5

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

或者干脆把一些tictoc在第一和结束你的代码,分别.