1.并行计算
以下对并行计算的个人理解受到较多质疑,删除之。
~~1、并行计算是指将计算任务分成几块,分别让多个 CPU 同时跑,这样运行时间就能缩短若干倍。在一个多核的电脑上,要想看计算是不是并行的,只需看 CPU 占用是不是 100%。如果两个 CPU ,串行的任务至多占用 50%的 CPU。~~
~~2、如果并行计算用到的 CPU 属于不同的服务器时,有另一个称呼——分布式计算。~~
~~3、要让多线程并行计算效率更高,电脑的 CPU 必须在物理上是多核的,单核 CPU 搞多线程,只不过在线程之间跳来跳去,不会算得更快(单核的多线程技术只要是让用户体验更好)。~~
~~4、如果任务可以分为独立的几块,将任务并行化和分布式化都是不难的。但如果任务块之间存在数据交换,那么将任务并行化需要很多干预,因为有些任务计算地快、有些计算慢,这样任务之间需要互相等待对方的数据。~~通信复杂性理论的起源之一就是从并行计算任务之间调度数据的优化。
2.Matlab 自动使用多核 CPU
从 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)。
3.什么函数和操作会自动使用多线程
1、任务可以被分解为若干可同时计算的任务块,