常见异构程序设计语言

目录

一、OpenMP

二、MPI

三、CUDA/HIP

四、OpenACC

五、Athread

六、OpenCL

七、oneAPI


        20世纪80年代,异构计算技术就已经诞生了。异构就是CPU、DSP、GPU、ASIC、协处理器、FPGA等各种计算单元、使用不同的类型指令集、不同的体系架构的计算单元,组成一个混合的系统,执行计算的特殊方式,这种计算方式叫做“异构计算”。不同异构计算单元有各自的体系架构,如何利用异构计算单元的算力资源,需要通过对应体系架构的编程来实现。针对目前主流异构计算体系,相应的编程语言有OpenMP、MPI、CUDA/HIP、OpenACC、OpenCL等。下面对代表性异构编程语言进行简单介绍。

一、OpenMP

        OpenMP是共享内存型计算架构的多线程并行编程语言,主要由编译制导语句、运行时库函数和环境变量等组成,可提供一个可移植、可扩展的共享内存应用编程模型。OpenMP支持Fortran和C/C++。

共享内存访问模型

        OpenMP共享内存并行编程模型中,所有处理器都可以用访问共享内存并使用多个线程进行计算。OpenMP使用Fork-Join模型来实现并行,主要机制是使用一个线程作为主线程启动程序,主线程进入并行区域,派生多个从线程,与主线程组成一个工作组,共同执行并行代码。离开并行区域后,从线程将被置于睡眠状态,直到程序抵达下一个并行区域。

执行机制

        OpenMP使用编译制导语句提供一套对并行算法更高层次的抽象实现,包括指定并行区域、指定循环区域、指定临界区、设置同步等各种指令。OpenMP以#pragma omp作为编译制导语句的标识符,由编译器自动对程序实现并行化,降低并行编程的难度。但是OpenMP不适合处理复杂同步和互斥操作的场景。

二、MPI

        目前成规模的计算组织方式以集群形式为主,采用多节点的分布式存储结构,这种结构可扩展计算节点,节点之间并行操作时需要通过通信来完成,主流的方式是消息传递。在这种形式的计算集群中,并行编程主要采用消息传递接口(Message Passing Interface,MPI)。MPI是消息传递库的标准规范,提供了大量消息传递例程,MPI进程可以在分布式环境中实现跨节点数据通信。MPI最大的优点就是可移植性和易用,基于MPI实现的并行程序组件,允许应用程序、软件库和其他工具在不同机器之间方便快速的移植。

执行机制

        MPI-1协议中提供了多种点对点通信和集体通信的例程。点对点通信包括阻塞和非阻塞两种形式,根据数据管理及发送方、接收方之间的同步方式,可分为标准、就绪、缓冲、同步四种通信模式。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猿核试Bug愁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值