1.并行计算
以下对并行计算的个人理解受到较多质疑,删除之。
1、并行计算是指将计算任务分成几块,分别让多个CPU同时跑,这样运行时间就能缩短若干倍。在一个多核的电脑上,要想看计算是不是并行的,只需看CPU占用是不是100%。如果两个CPU,串行的任务至多占用50%的CPU。
2、如果并行计算用到的CPU属于不同的服务器时,有另一个称呼——分布式计算。
3、要让多线程并行计算效率更高,电脑的CPU必须在物理上是多核的,单核CPU搞多线程,只不过在线程之间跳来跳去,不会算得更快(单核的多线程技术只要是让用户体验更好)。
4、如果任务可以分为独立的几块,将任务并行化和分布式化都是不难的。但如果任务块之间存在数据交换,那么将任务并行化需要很多干预,因为有些任务计算地快、有些计算慢,这样任务之间需要互相等待对方的数据。通信复杂性理论的起源之一就是从并行计算任务之间调度数据的优化。
2.Matlab自动使用多核CPU
根据Is it possible for one session of MATLAB to take advantage of multiple processors/cores?里的描述:
从MATLAB 7.3 (R2006b)开始,不需要用户干涉,Matlab的某些矩阵操作会自动使用多个CPU,主要是Matlab所采用的BLAS (Basic Linear Algebra Subroutines)开始支持多线程。BLAS里的操作包括矩阵乘法、求特征根等。
从MATLAB 7.4 (R2007a)开始,Matlab开始提供对某些操作的多线性支持,主要是element-wise的数值计算,比如sin(A)、A.*log(A)。</