一、并行计算
目的:提高运算速度
原则:将大的问题划分为很多可以同时解决的小问题
要求:硬件方面(计算机架构支持并行执行多进程或多线程)、软件方面(充分利用硬件并行执行)
1. 并行编程与串行编程
编程时我们会很自然的把问题划分为很多运算块,块之间依次执行——串行。如果有并行执行的运算块则为并行。有些块可以并行,有些块则必循串行执行,视情况而定。比如数据相关发生时,就会限制程序的并行性。
2. 并行性
并行存在两种:任务并行、数据并行。任务并行:任务或函数可以独立地并行执行,重点在于利用多核系统对任务进行分配。数据并行:同时处理许多数据,重点在于利用多核系统对数据进行分配。
数据并行是指当大量的数据进行相同的运算操作时,可以通过同时在多个计算单元上运行相同的指令,分别处理不同的数据,最终共同完成这些数据的运算。数据并行第一步就要对数据进行划分,划分的方式有两种,块划分和周期划分。
块划分:每个线程作用于一部分数据,通常数据具有相同大小。
周期划分:每个线程作用于数据的多部份。
3.计算机架构
弗林分类:SISD、SIMD(单指令多数据