Android-GPU平台的CUDA加速研究毕业论文
2021-07-13 00:52:38
摘 要
CUDA: Compute Unified Device Architecture(统一计算架构设备),它是著名的显卡厂商英伟达NVIDIA公司推出的一个运算平台,是一种通用并行计算架构,并包含了CUDA的指令集架构(ISA)和位于GPU内部的并行计算引擎。运用CUDA加速技术可以帮助GPU解决复杂的计算及算法问题,大大提高效率。
OpenCL(全称Open Computing Language,开放运算语言)是第一个面向异构系统通用目的并行编程的开放式、免费标准,也是一个统一的编程环境和一个为异构平台编写程序的框架。此平台可由CPU,CPU或者其他类型的处理器器组成,便于软件开发人员为高性能计算服务器、桌面计算系统、手持设备编写高效轻便的代码.而且它广泛适用于多核心处理器(CPU)、图形处理器(GPU)、Cell类型架构以及数字信号处理器 (DSP)等其他并行处理器。同时它在游戏、娱乐、科研、医疗等各种领域都有广阔的发展前景。
本文首先对CUDA以及OpenCL进行了系统的介绍,然后介绍了二者的差异与优缺点。经与导师讨论,论文题目使用OpenCL更简便,同时OpenCL较之CUDA更通用,所以最后设计部分选用OpenCL来完成。在之后的章节里,论文讨论了怎么用ANDROIDWORKS来构建Android系统的环境和基于ECLIPSE的Java编程,以及将OpenCL库中函数调用至Eclipse项目中,从而实现对Sobel算子滤波的优化加速。
关键词: CUDA;Android;OpenCL;Sobel
Abstract
CUDA: Compute Unified Device Architecture is a famous graphics chip maker NVIDIA NVIDIA launched a computing platform, is a kind of general parallel computing architecture, and contains the CUDA instruction set architecture (ISA) and is located within the GPU parallel computing engine. To use CUDA acceleration technology can help GPU solve complex computing and algorithm problems, greatly improve efficiency.
OpenCL: Open Computing Language is the first general purpose of heterogeneous systems for parallel programming open style, free standard, but also a unified programming environment and a framework for the preparation of heterogeneous platform .This platform can be composed of CPU, CPU, or other types of processors , and it is easy for software developers to high performance computing server, desktop computing systems, handheld devices to write efficient and portable code .And It is widely applied to many core processors (CPU), graphics processor (GPU), Cell type architecture and digital signal processor (DSP) and other parallel processors,At the same time, It has broad prospects for development in the game, entertainment, scientific research, medical treatment and so on.
In this paper, we first introduce the CUDA and OpenCL system, and then introduce the differences and advantages and disadvantages of the two. After discussion with the instructor, the topic of the paper is more simple and easy to use OpenCL, while OpenCL is more common than the CUDA, so the final design part of the selection of OpenCL to complete. In the following chapters, the thesis discusses how to use ANDROIDWORKS to build Android system environment and based on the eclipse Java programming, and OpenCL library function calls to the eclipse project, in order to achieve the optimization of Sobel filter accelerated..
Keyword: CUDA;Android;OpenCL;Sobel
目录
第一章 绪论 1
1.1研究意义与背景 1
1.2 国内外发展现状 2
1.2.1 OpenCL的发展现状 2
1.2.2 CUDA的发展现状 3
1.3 技术方案选取 3
1.4课题研究内容 4
1.5论文组织结构 5
第二章 GPU 6
2.1 GPU的研究现状 6
2.2 GPU硬件结构介绍 7
2.3 GPU的实际应用 10
第三章 Android平台 11
3.1 Android平台介绍 11
3.1.1 Android应用现状 11
3.1.2 Android系统结构 12
3.1.3 Android应用程序基本组件 13
3.2 Android-NDK动态库的调用 14
第四章 OpenCL平台 15
4.1 OpenCL介绍 15
4.2 OpenCL的模型介绍 15
第五章 设计方案的实现 18
5.1 Android开发环境的搭建 18
5.1.1Androidworks的安装 18
5.1.2 Eclipse(集成开发环境)的安装 19
5.1.3 将含有OpenCL函数库的OpenCV库导入项目中 20
5.1.4虚拟机的建立 21
5.2 设计思路及总体实现方案 24
5.2.1 设计总体思路 24
5.2.2 设计思路的具体实施 25
5.3 虚拟机仿真结果 28
第六章 总结与展望 30
参考文献 31
致谢 32
第一章 绪论
1.1研究意义与背景
CUDA: Compute Unified Device Architecture(统一计算架构设备),是著名的显卡厂商英伟达NVIDIA公司推出的一个运算平台,是一种通用并行计算架构,并包含了CUDA的指令集架构(ISA)和位于GPU内部的并行计算引擎[2]。如今计算机行业正从“中央处理”即只使用CPU平台逐步发展为“协同处理”即CPU与GPU共同运作。为了创造这一计算典范,英伟达公司发明创造了CUDA编程模型,其目的是在应用软件中结合利用CPU和GPU彼此的优点,加速算法的处理,减少运算时间,从而提高运算效率。