关于Matlab多线程计算和多核心计算
1.关于多线程计算
Matlab是基于单线程单核心的一款软件,在近几年多核心,多线程处理器大规模部署后,其程序设计师才逐步改善matlab内核,让某些常用函数逐步支持多线程运算。
在matlab6.5-matlab 2007b这些版本中,fft, fft2, fftn, ifft, ifft2, ifftn是默认支持多线程运算的,即只要调用这些函数,系统在运算时会开启多线程(计算机硬件须支持)
在matlab 2008a-matlab 2009a这些版本中,增加了prod, sum, max, min这几个函数的多线程运算功能,但是matlab内核版本不同会导致这些函数在多线程执行时效率不同。
按照其官方文档的说法,在支持多线程计算的matlab版本中,同样的fft运算可以提速50%。
但是多线程运算有一个缺点:在函数体或程序内部需要调用其他非多线程运算的函数时,执行效率会比较低,基本和不开启多线程运算差不多,也就是说,使用这些支持多线程的函数时,最好不要进行嵌套。
结论:matlab中多线程计算受限于版本以及特定的函数,在运算指定函数时效率较高,建议拥有多核心处理器的机器开启。
开启多线程方法:在命令行下输入:maxNumCompThreads(),括号内为需要开启的线程个数
2.关于多核心计算(并行计算和分布式计算)
2.1并行计算功能(Parallel Computing Toolbox)
Parallel Computing Toolbox是matlab 2008 a开始拥有的新功能,之前的版
本仅拥有Distributed Computing Toolbox。
并行计算工具箱里面包含了parfor,spmd,pmode,下面一一介绍(这些功能