创作理由:前面不是提到过OpenCL,它专精的是并行计算,那有的朋友就要问了,并行计算是啥呢?今天就跟各位讨论讨论这个问题。


官方定义

并行计算是指同时使用多个计算资源来解决一个计算问题,从而加速计算过程。它的核心思想是将一个大任务分解为多个小任务,并将这些小任务同时分配给多个处理器或计算单元来并行执行。并行计算主要用于处理大规模的计算问题,如科学计算、图像处理、大数据分析等。


我的疑问

多个计算资源来解决一个计算问题何意?

   计算资源无非就是CPU、GPU、FPGA等等,就是用调动这些有的进行协调合作来解决一个问题罢了。


为啥要多个计算资源呢?

   每个计算资源都有自己的缺点嘛,即使是性能强大的处理器,处理大规模数据的时间仍然可能很长。还有就是有多核CPU,但是你没有使用这个资源嘛。


并行计算到底是啥呢?

   简单的说就是:【任务分解】大事化小,小事化了,【并行计算】分配任务】因才分配,【通讯


举例说明:矩阵乘法(单个资源和多个资源运算的对比)


  • 单个资源处理:如果只有一个CPU核心在工作,那么这个核心需要逐行逐列地计算矩阵C的每个元素。每个元素的计算都依赖于矩阵A的一整行和矩阵B的一整列。就会很慢,效率很低。


  • 多个资源处理
  • 多核CPU:如果计算机有多个CPU核心,可以将矩阵C的每一行(或列)分配给不同的CPU核心。例如,如果有四个核心,每个核心可以分别来计算C中的四个不同的行。(大事化小,小事化了、因才分配
  • 并行计算:四个核心可以同时工作,每个核心独立地计算其负责的行,这样可以显著加快矩阵乘法的计算速度。(并行计算
  • 整合结果:经过各方通讯将结果正好在一起来。通讯