大数据时代的到来,不只是数据量的骤增,就连单个数据的尺寸也变大了很多,从行业应用来讲,一味的通过升级计算机硬件来提高计算速度的方式并不可取,这不仅会增加成本,而硬件资源不充分的利用也会造成资源的浪费,因此,通过软件系统充分调用CPU,GPU的计算性能,实现高性能计算,于是,并行计算应运而生。
  高性能计算不仅仅是指并行计算,但目前我也没接触到其他的,所以,在本文中,就默认高性能计算与并行计算是等价的了并行计算理论上是在并行计算机上进行计算,通俗来讲,就是一伙人共同干一件事,通过合理的分工,提高计算效率,毕竟众人拾柴火焰高的道理还是懂得的,这就像是工业生产线上,每一道工序都有n(n > 1)个工作人员,才能保证整条生产线的产量。
  其实,对我而言,用并行计算也是无奈之举,但最先引起我兴趣的并不是并行计算这个名词,而是,多线程编译,这是在VS中的一个配置,这个还得从工作说起,公司给配的机器CPU是i5-4210U,性能确实很low,尤其是对于编程工作,但作为公司财产,我也不好意思要求太高,在编译程序时,我监控了下CPU的运行频率,24%,这就是我监控到的数据,显然,其工作部分连一半都不到,如果能充分的调用CPU的多核心计算能力,那i5也能达到i7的工作效率吧,至少也能达到桌面级的能力吧,于是,我更改了下设置,速度的提升还是很明显的,由起初的4m30s锐减到1m30s左右,于是,这也引起了我对并行计算的兴趣。
  从个人认知中,并行计算需要具备两个条件:其一为硬件支持:这个应该是完全满足的,现在的CPU都是采用的多核多线程的设计,至少CPU层次是完全满足的,至于GPU就需要根据实际情况而定了,谈到GPU,首先想到的应该是CUDA吧,因为英伟达的发力,CUDA可谓是无人不知无人不晓,其应用范围也相当广泛;其二为软件支持:这里所说的是程序逻辑上支持,即你的任务或者数据是可以进行并行处理的,可以将每一块任务或数据单独分配给某几个线程一块完成。
  现在常用的并行工具有:CUDA(英伟达显卡专属),OpenCL,OpenMP, TBB等。
PS:并行计算博大精深,在这里不做过多累述,本文重点是讲解下上述几个并行工具的使用,对,仅仅是使用,至于具体的逻辑,还需要自己慢慢探讨......


琼筵醉月
12 声望11 粉丝