编辑程序让电脑执行的过程就叫编程 很多软件都可以编程 具有代表性的计算机语言有,BASIC C,C ,VB,VF,SQL,网页编程JSP,ASP,PHP ,软件是eclipse,,等等。Java是目前应用最广泛的编程语言之一,大学中则常常以C语言作为编程的入门语言, (初学者通用符号指令代码)的缩写,是国际上广泛使用的一种计算机高级语言。
并行编程模型是底层体系结构与上层应用程序之间的桥梁,向上隐藏并行处理器的细节,提供给程序员并行表达的方法;向下充分利用硬件资源、高效且正确地完成应用需求.任务划分、任务映射、数据分布、通信和同步是设计并行编程模型时需要考虑的 5 个关键要素.任务并行编程模型主要关注共享存储的平台,数据分为共享和私有两种存储属性,通过共享数据进行通信.因此,该编程模型的研究重点是任务划分、任务映射和同步这个关键要素.任务并行编程模型把任务作为并行的基本单位,提供任务划分和同步的编程接口,把任务划分和同步工作交给程序员完成,用户可以把应用程序划分出大量细粒度任务.然而,具体到每个任务到底是并行执行还是串行执行、在哪个物理核上执行以及如何实现任务之间的同步则由运行时系统完成.任务并行编程模型提倡嵌套的递归任务,并引入以任务窃取为核心的用户级线程调度,实现程序的高性能和动态的负载平衡 [1] .
任务并行编程模型提供显式的任务划分和同步编程接口以及隐式的任务映射机制.前者关注可编程性,后者关注执行效率.目前,任务并行编程模型支持非规则应用程序,把逻辑任务与物理线程分离,从而独立于处理器核数.但多核时代需要的是面向更广阔应用领域的、易编程、高产能的并行编程工具,该模型的编程接口(并行性表达和数据管理)和运行时支持(任务调度) [1] 面临如下挑战:
(1) 该模型的编程接口能支持的并行模式有限,需要丰富编程接口,表达多种多样的并行性.例如,spawnsync 能够实现嵌套并行控制结构,但不能高效实现循环级并行,于是,程序员需要把数据并行的应用程序转换成嵌套并行,才能用该模型编写并行程序.另外,无条件原子块结构和有条件原子块结构是重要的并行任务结构,如何表达以及如何高效支持都需要深入研究; [1]
(2) 该模型把数据分为共享和私有两种,通过共享数据进行通信.但有些数据是部分任务共享,或者一个线程内执行的所有任务共享,因此需要对数据进一步区分共享范围,需要研究如何高效实现不同级别的共享数据 [1] ;
(3) 该模型的运行时系统负责把逻辑任务映射到物理线程上去执行,其核心任务是提高执行效率.存在的问题有:(a) 运行时系统是一个软件层,与应用程序链接在一起,运行在用户空间上.用软件实现任务窃取是有代价的,问题是能否进一步降低运行时系统开销;(b) 任务窃取采用最早任务优先窃取策略,该策略的“深度优先执行”能够提高 cache 的利用率.但随机选择线程进行任务窃取,而没有考虑多核处理器的存储层次和处理器架构特点,对于局部性敏感的应用会产生影响.因此,任务调度时需要根据存储部件的层次、容量、访问延迟以及数据的访问局部性、重用度和层次性等因素进行局部性敏感的调度;(c) 集群系统和众核处理器都远比多核处理器要复杂,拥有更大量的计算资源,如何管理和使用硬件资源,充分利用体系结构的并行性和局部性来提高性能,也需要深入加以研究