双核cpu用matlab并行计算的时候为什么实际上是单核双线程计算,Matlab的并行计算概述...

本文探讨了并行计算的概念,指出多线程在单核CPU上的局限性。MATLAB从7.3版开始自动利用多核CPU,特别是通过BLAS支持矩阵运算的并行化。某些特定的元素级函数和线性代数函数在满足条件时也会使用多线程。尽管如此,用户代码默认为串行,需借助Parallel Computing Toolbox实现并行化,但parfor循环有其适用条件。
摘要由CSDN通过智能技术生成

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)。</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值