CUDA并行计算平台上数据可视化探究.docVIP

  • 1
  • 0
  • 约2.76千字
  • 约 5页
  • 2021-09-06 发布于山东
  • 举报
CUDA并行计算平台上数据可视化探究 CUDA并行计算平台上数据可视化探究 CUDA并行计算平台上数据可视化探究 CUDA并行计算平台上数据可视化研究 纲要:近几年计算机图形学的发展使得三维表现技术得 以形成,三维表现技术使我们能够再现三维世界中的物体, 能够用三维形体来表示复杂的信息,可视化技术给予人们一 种仿真的、三维的并且拥有及时交互的能力,可是将数据转 换为图形的办理技术计算时间较长,而 CUDA 是一种由 NVIDIA 推出的通用并行计算架构, 该架构使 GPU 能够解决复 杂的计算问题,明显提升计算速度,文章对 CUDA和实现数据可视化做了研究。 【重点词】 CUDA OpenGL 可视化 可视化技术令人们能够在三维图形世界顶用从前不行 想象的手段来获守信息或发挥自己创建性的思想,人们对计算机可视化技术的研究已经历了一个很长的历程,并且形成 了很多可视化工具, 此中 SGI企业推出的 GL三维图形库表现 突出,易于使用并且功能强盛, OpenGL 经过 20 年的时间, 作为一个久负盛名的跨平台的计算机图形应用程序接口规范,它已被宽泛应用于游戏、影视、军事、地理、医学、机械设计,以及各种科学数据可视化的领域,它几乎支持全部主流操作系统平台,它应该是全世界最为宽泛学习和使用的图形开发 API 接口,我们几乎能够在全世界任何一台计算机安 装的软件中找到它的身影,但调用它开发拥有必定的难度。 科学计算可视化应用宽泛,此中面绘制方法由传统的计算机图形学绘制曲面,体绘制方法是直接由三维数据生成屏幕上二维图像的技术,体绘制技术最大的长处是能够研究物 体的内部构造, 能够描绘特别定形的物体, 如肌肉,烟云等,而面绘制在这些方面比较弱。但它的弊端是数据储存量大, 计算时间较长, NVIDIA 推出的通用并行计算架构挣脱了复杂的图形 API,作为数据并行的软硬件系统, CUDA 编程模型能够解决这类复杂的计算问题。 本文的主要目的是研究怎样进行数据的可视化,为认识 决运算速度的问题商讨怎样搭建并行计算平台,使用 CUDA 编程技术来提升运算速度,并对三维数据可视化。 1 CUDA 平台 CUDA是一种由 NVIDIA 推出的通用并行计算架构,该架构使 GPU 能够解决复杂的计算问题。 它包括了 CUDA指令集架构以及 GPU内部的并行计算引擎。 开发人员此刻能够使用 C 语言来为 CUDA 架构编写程序,所编写出的程序能够在支 持 CUDA 的办理器上以超高性能运转。鉴于建模时跟着网格数目的增添,会使计算量成幂函数的增添,影响画面衬着的速度,又要有精度又要有速度,那么应用先进的并行计算架构显得尤其重要。 能够说计算行业正在从只使用CPU的“中央办理”向 CPU与 GPU并用的 “共同办理” 发展。,英伟达发了然 CUDA Compute Unified Device Architecture ,一致计算设施架构) 这一编程模型,是想在应用程序中充足利用 CPU和 GPU 各 自的长处。经过 CUDA,GPUs能够很方便地被用来进行通用 计算。在没有 CUDA从前,GPUs一般只用来进行图形衬着 (如 经过 OpenGL, DirectX)。CUDA进行了编程语言扩展, CUDA C/C++能够看作一个新的编程语言, CUDA工作的的对象就是 GPU及 GPU 上的内存,且充足利用了 GPU 多核的优势及降 低了并行编程的难度。一般经过 C 语言把数据从外界读入,再分派数据给 CUDA,以便在 GPU上计算,而后再把计算结果返回给 C 语言,以便进一步工作,如进一步办理及显示, 或重复此过程。 此中将 CPU及系统的内存称为主机, 将 GPU 及 GPU 自己的显示内存称为设施,其线程,线程块,线程格 的三层构造合适于并行计算, 线程一般经过 GPU 的一个核进行办理,线程块由多个线程构成,它是并行履行的,之间无 法通讯,也没有履行次序,线程格是由多个线程块构成,而在 GPU 上履行的函数往常称为核函数,一般经过表记符 __global__修饰,用于说明内核函数中的线程数目, 以及线程 是怎样组织的,一般以线程格( Grid)的形式组织,每个线 程格由若干个线程块( block)构成,而每个线程块又由若干 个线程(  thread )构成,在编程时,一定先为  kernel  函数中 用到的数组或变量分派好足够的空间,再调用  kernel  函数进 行工作。这样的一种硬件平台,加上 CUDA编程模型已经取 得了好多的的成就,它的搭建为数据可视化确立了基础。 三维数据可视化 2.1 CUDA 和 OpenGL 互操作 OpenGL 是图形硬件的软件接口, 它不是一种编程语言, 而是一种 API (应用程序编程接口)

文档评论(0)

1亿VIP精品文档

相关文档