创作理由:前面不是提到过OpenCL,它专精的是并行计算,那有的朋友就要问了,并行计算是啥呢?今天就跟各位讨论讨论这个问题。
官方定义:
并行计算是指同时使用多个计算资源来解决一个计算问题,从而加速计算过程。它的核心思想是将一个大任务分解为多个小任务,并将这些小任务同时分配给多个处理器或计算单元来并行执行。并行计算主要用于处理大规模的计算问题,如科学计算、图像处理、大数据分析等。
我的疑问:
①多个计算资源来解决一个计算问题何意?
计算资源无非就是CPU、GPU、FPGA等等,就是用调动这些有的进行协调合作来解决一个问题罢了。
②为啥要多个计算资源呢?
每个计算资源都有自己的缺点嘛,即使是性能强大的处理器,处理大规模数据的时间仍然可能很长。还有就是有多核CPU,但是你没有使用这个资源嘛。
③并行计算到底是啥呢?
简单的说就是:【任务分解】大事化小,小事化了,【并行计算】【分配任务】因才分配,【通讯】
举例说明:矩阵乘法(单个资源和多个资源运算的对比)
- 单个资源处理:如果只有一个CPU核心在工作,那么这个核心需要逐行逐列地计算矩阵C的每个元素。每个元素的计算都依赖于矩阵A的一整行和矩阵B的一整列。就会很慢,效率很低。
- 多个资源处理:
- 多核CPU:如果计算机有多个CPU核心,可以将矩阵C的每一行(或列)分配给不同的CPU核心。例如,如果有四个核心,每个核心可以分别来计算C中的四个不同的行。(大事化小,小事化了、因才分配)
- 并行计算:四个核心可以同时工作,每个核心独立地计算其负责的行,这样可以显著加快矩阵乘法的计算速度。(并行计算)
- 整合结果:经过各方通讯将结果正好在一起来。(通讯)