硕士课程辅导
发布时间:2023-09-10 16:40
并行编程模型是硬件和内存架构的抽象。实际上,这些模型并不涉及特定的机器类型或内存架构;至少在理论上,它们可以在任何类型的机器上实现。与前一种区别相比,这些编程模型是在更高层次上创建的,代表了软件应如何实现并行计算。 每种模型都有自己访问内存和与其他处理器共享信息以分配工作的方式。
没有哪种编程模型绝对更好,最佳的实施模型在很大程度上取决于程序员需要解决的问题。最常用的并行编程模型有共享内存模型、多线程模式、消息传递模型、并行数据模型。
在这种模型中,任务共享一个共同的内存区域,对共享资源(读写数据)的访问是异步的。程序员可以通过锁和 Semaphores 等机制来控制对共享内存的访问。这种模式的优点是,程序员不必对任务间的通信作出明确规定。性能方面的一个主要缺点是很难理解和管理数据局部性。将数据保持在执行该数据的处理器本地,可以节省内存访问、缓存更新和总线流量,否则多个处理器使用相同数据时就会出现这些问题。
在这种模式下,一个进程可以有多个执行线程。例如,先创建一个顺序部分,然后创建一系列可并行执行的任务。这种模式通常用于共享内存架构。因此,管理在共享内存中运行的线程之间的同步非常重要,程序员必须确保多个线程不会同时更新同一位置。目前的处理器既有基于软件的多线程,也有基于硬件的多线程;Posix 线程是基于软件实现多线程的典型例子;英特尔的超线程技术允许两个线程在一个线程崩溃或等待 I/O 时进行切换。该模型通过在硬件中实现多线程,当一个线程停滞或等待 I/O 时,在两个线程之间进行切换。有了这种模型,即使数据放置是非线性的,也能实现并行性。
当每个处理器都有自己的内存(分布式内存系统)时,通常会使用消息传递模型。多个任务可能存在于同一台物理机器上,也可能存在于任意数量的机器上。程序员负责定义并行性和通过消息进行的数据交换。实现这种模式的并行编程需要在代码中使用(特别的)软件库。尽管自 20 世纪 80 年代以来,已经有许多消息传递模型的实现方法,也有一些实例,但直到 20 世纪 90 年代中期才创建了一个标准化模型,并以消息传递接口(MPI)的名称成为事实上的标准。MPI 模型显然是为分布式内存而设计的,但与并行编程模型一样,它也可以在具有共享内存的机器上使用。
在这种模式下,我们有多个任务处理相同的数据结构,但每个任务处理数据的不同部分。在共享内存架构中,所有任务都通过共享内存架构访问数据,而在分布式内存架构中,数据结构是分布式的,位于每个任务的本地内存中。要实现这种模式,开发人员必须开发一个应用程序来决定数据的分配和对齐。目前新一代的 GPU 在对齐数据的情况下可连续高速运行。
海马课堂专业课程辅导,2300+严选硕博学霸师资,针对学生的薄弱科目和学校教学进度,匹配背景相符的导师,根据学生情况进行1V1专属备课,上课时间灵活安排,中英双语详细讲解课程中的考点、 难点问题,并提供多方位的课后辅导,辅助学生掌握全部课程知识,补足短板。如果你对此还有疑问,或者有更多关于学业辅导方面需求的话,可以添加微信号:hmkt131联系海马课堂的Joye老师哦。
相关热词搜索: