没有合适的资源?快使用搜索试试~ 我知道了~
MXNet框架中基于OpenCL核函数的多维线性数据处理.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 179 浏览量
2022-11-02
16:44:29
上传
评论
收藏 306KB DOCX 举报
温馨提示
试读
15页
MXNet框架中基于OpenCL核函数的多维线性数据处理.docx
资源推荐
资源详情
资源评论
引言
随着信息产业的快速发展,相关的数据分析需求也在逐渐增加。深度学习
作为数据分析的主流方式,承担了绝大部分场景的数据处理和模型训练的任务。
但是,随着产业化背景下对模型精 度要求的提高,相应的模 型规模也在增大,建
立模型所需要的学习数据也在急剧增加,最终导致深度学习方法对算力资源提
出了更高的要求
[1]
。
为了应对这一问题,并行计算方法被大规模应用到深度学习中,其中比较主
流的便是在 GPU 上采取异步并行的方式对数据流进行处理
[2]
。根据费林分类
法(Flynn’s Taxonomy),GPU 计算模型满足单一指令流多数据流的计算模型,非
常适合用作深度学习任务并行执行的负载以及对相关任务执行的加速
[3]
。
在实际运用中,由于 OpenGL 等图形编程语言的使用门槛较高,在很长一段
时间内,通用 GPU 编程是很难实现的,直到 2007 年 NVIDIA 推出了 CUDA
[4-5]
框
架才将这一问题解决。CUDA 是一种新的操作 GPU 进行计算的软件和硬件架
构,它将 GPU 视为数据并行计算的设备,从而无需将这些计算映射到图形 API
中
[6]
。
与此同时,更加通用的 OpenCL
[7]
(Open Computing Language,即开放式运
算语言),作为一种统一的开放式异步并行运算平台也被提出。不同于 CUDA
架构,OpenCL 框架的目的是为异构系统提供统一的并行计算开发平台。简而言
之 ,CUDA 是 针 对 NVIDIA 公 司 的 GPU 及 相 关 生 态 所 构 建 的 计 算 平 台 , 而
OpenCL 是 一 种 更 加 通 用 的 计 算 框 架 。 因 此 ,在 本 项 目 的 条 件 下 ,我 们 选 择
OpenCL 作为深度学习框架移植的目标并行运算平台。本文就多维数据处理任
务在并行计算平台间的迁移问题提出了分析和解决方案。
1 问题分析
1.1 并行计算平台运 行机制
1.1.1 CUDA 并行运算平台
在明确多维数据在并行计算框架上的运行逻辑之前,我们需要了解不同并
行运算平台的差异
[8]
。首先,我们需要了解 CUDA 并行运算框架的编程模型,明
确在 CUDA 架构下,多维数据的处理是如何进行的。
CUDA 并行程序架构分为两部分,即主机端(host)与设备端(device)。一般
而言,主机端指的是 CPU,设备端指的是 GPU。在 CUDA 并行架构中,主程序是
在 CPU 中执行,当遇到需要进行并行处理的任务时,主程序会将任务划分成设
备端能够执行的并行程序,并传送给 GPU,这个程序被称为 CUDA 的 kernel 程
序(kernel function)。CUDA 框架下用户能够自定义编码 kernel 程序,从而达到
自定义控制设备端任务并行逻辑的目的。此类函数被调用时,该函数将会由若
干不同的 CUDA 线程并行执行多次,而传统的 C 语言函数仅执行一次。CUDA
设备拥有多个独立的存储空间,CUDA 线程可在执行过程中访问多个存储器空
间的数据(如图 1 所示)。在 CUDA 程序中,主程序调用任何 GPU 内核之前,必须
对内核进行初始化操作,确定线程块数和每个线程块中的线程数以及共享内存
大小。
图 1
图 1 CUDA 架构下的存储模型
Fig.1 Storage model for CUDA architecture
1.1.2 OpenCL 并 行运算平台
在 OpenCL 并行运算模型中,应用程序通过主机端对 OpenCL 设备端上的
内核程序进行管理。在这个模型中,主机端上执行的管理程序和设备端执行的
并行处理的任务程序(kernel 程序)分别构成了模型的两个模块。
具体的执行步骤如图 2 所示,首先查询连接到主机端的 OpenCL 设备端,给
OpenCL 设备端构建一个上下文环境(context)。通过上下文在关联的 OpenCL
设备上创建可执行程序,这些可执行程序从程序池中选择需要执行的 kernel 程
序,之后在主机端和 OpenCL 设备端中分别开辟存储单元(Memory Object),
将主机端的数据复制到 OpenCL 设备端的存储单元中,最后通过 OpenCL 设备
端执行 kernel 程序并将执行结果从 OpenCL 设备端中传输回主机端进行整合。
图 2
图 2 OpenCL 的执行模型
Fig.2 Execution model of OpenCL
1.1.3 CUDA 与 OpenCL 对比
CUDA 和 OpenCL 框架下应用的开发模型基本一致,都是由主机端和设备
端上运行的程序组成。程序首先开始执行主机端程序,然后由主机端程序控制
设备端的 kernel 程序执行,从而完成一次任务的并行执行。但是两者还是存在
剩余14页未读,继续阅读
资源评论
罗伯特之技术屋
- 粉丝: 3541
- 资源: 1万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功