并行度有哪些不同级别?
有不同级别的并行性,如下所示-
指令级别-在指令级别,一个粒度由少于20条指令组成,称为细粒度。这个级别的细粒度并行度可能从2000不等,具体取决于单个程序单指令流并行度大于2,但指令级别的平均并行度在普通程序中很少超过7。
对于科学应用程序,在理想化环境中并发执行的Fortran语句的平均并行范围为500到300条。
LoopLevel-它包含迭代循环操作。一个循环可能包含少于500条指令。一些循环独立操作可以被向量化以用于SIMD机器的流水线执行或查找步骤执行。
循环级并行是在并行或向量计算机上实现的最优化的程序生成。但是递归循环与并行化不同。向量处理主要通过向量化编译器在循环级别进行利用。
程序级别-它在任务、程序、子程序级别与中等粒度进行通信。这个级别的Grain指令少于2000条。在此级别检测并行度比细粒度级别要困难得多。
与MIMD执行模型相比,通信义务要少得多。但是这里程序员需要付出很大的努力才能在这个级别重新组织程序。
子程序级别-子程序级别与作业步骤和相关子程序进行通信。这里的粒度大小不到1000条指令。工作步骤可以在不同的工作中重叠。单处理器或多处理器的多道程序设计就是在这个级别进行的。
作业级别-它对应于并行计算机上独立任务的并行执行。这里的粒度可以是数万条指令。它由程序加载器和操作框架管理。分时和共享空间的多处理器分析了这种级别的并行性。