【问题标题】:Can I measure the speedup from parallelization in matlab?我可以在matlab中测量并行化的加速吗?
【发布时间】:2014-08-14 22:23:38
【问题描述】:

如果我假设一个问题是并行化的候选者,例如矩阵乘法或其他一些问题,我使用 Intel i7 haswell 双核,有什么方法可以将并行执行与同一程序的顺序版本进行比较,或者 matlab 会根据我的架构优化程序(双核、四核 ..)?我想知道从一个好的基准并行程序中添加更多处理器的加速。

【问题讨论】:

    标签: matlab parallel-processing intel multicore


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      或者简单地将一些 tictoc 分别放在代码的开头和结尾。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2013-12-12
          • 2017-01-01
          • 2017-01-09
          • 2014-01-29
          • 2014-07-21
          • 2011-11-30
          • 1970-01-01
          • 2012-03-28
          • 2015-02-28
          相关资源
          最近更新 更多