书签 分享 收藏 举报 版权申诉 / 8

一种基于CUDA的梯形填充方法.pdf

  • 上传人:zhu****_FC
  • 文档编号:4642062
  • 上传时间:2018-10-23
  • 格式:PDF
  • 页数:8
  • 大小:530.47KB
  • 摘要
    申请专利号:

    CN201110432064.5

    申请日:

    2011.12.21

    公开号:

    CN102521789A

    公开日:

    2012.06.27

    当前法律状态:

    授权

    有效性:

    有权

    法律详情:

    专利权的保全 IPC(主分类):G06T 1/00申请日:20111221授权公告日:20140625登记生效日:20170524|||专利权保全的解除 IPC(主分类):G06T 1/00申请日:20111221授权公告日:20140625解除日:20170524|||专利权保全的解除IPC(主分类):G06T 1/00申请日:20111221授权公告日:20140625解除日:20161124|||专利权的保全IPC(主分类):G06T 1/00申请日:20111221授权公告日:20140625登记生效日:20161124|||专利权的保全IPC(主分类):G06T 1/00申请日:20111221授权公告日:20140625登记生效日:20151124|||授权|||公开

    IPC分类号:

    G06T1/00

    主分类号:

    G06T1/00

    申请人:

    合肥芯硕半导体有限公司

    发明人:

    赵美云; 蒋兴华

    地址:

    230601 安徽省合肥市经济技术开发区锦绣大道68号

    优先权:

    专利代理机构:

    安徽合肥华信知识产权代理有限公司 34112

    代理人:

    余成俊

    PDF完整版下载: PDF下载
    内容摘要

    本发明公开了一种基于CUDA的梯形填充方法,涉及多线程并行开发、计算机图形学、数据结构开发、数字图像处理等领域,本发明采用CUDA多线程并行填充梯形方法,从而避免了利用GDI填充方法不能对大量图形数据有效处理,且由于CPU串行运行的限制而不能并行处理的问题,因而本发明能够有效地提升填充效率,满足大量图形数据处理的需求。

    权利要求书

    1: 一种基于 CUDA 的梯形填充方法, 涉及光刻技术, 其特征在于包括以下步骤 : ①、 在 Host 端准备需要填充的位图图形, 设置位深、 颜色表, 分配并初始化内存单元 ; ②、 在 Host 端准备好需要的梯形顶点数据, 并保存在梯形点集里 ; ③、 把当前处理任务分配给一个 Grid, 根据位图图形的数量确定 Block 数量, 根据梯形 的数量确定 Thread 数量 ; ④、 通过 CUDA 提供接口函数, 在 Device 端的 Global Memory 分别分配位图图形和梯形 顶点数据所需的空间 ; ⑤、 将 Host 端的数据拷贝到 Device 端的内存中 ; ⑥、 启动 CUDA 多线程并行填充梯形 ; ⑦、 待处理完之后, 将 Device 端填充之后的数据, 拷贝到 Host 端, 即完成填充。
    2: 根据权利要求 1 所述的一种基于 CUDA 的梯形填充方法, 其特征在于 : 在步骤③中也 可把任务分配给多个 Grid 处理。
    3: 根据权利要求 1 所述的一种基于 CUDA 的梯形填充方法, 其特征在于 : 所述 Grid 由 数个执行相同程序的 Block 组成, 所述 Block 由数个 Thread 组成。

    说明书


    一种基于 CUDA 的梯形填充方法

        技术领域 本发明涉及多线程并行开发、 计算机图形学、 数据结构开发、 数字图像处理等领 域, 具体为一种利用 CUDA 通用并行计算架构, 使 GPU( 图形处理器 ) 能够解决复杂计算和大 量数据处理问题的梯形填充方法。
         背景技术
         光刻技术是在衬底表面上印刷具有特征的构图的技术, 本发明所涉及的无掩膜光 刻技术使用数字微镜系统生成图像, 通过光学投影元件, 图像以一定的倍率投影到光敏感 的衬底上, 产生特征的构图。
         在光刻过程中, 需要进行大量的、 快速的数据处理与发送, 而将 GDSII 文件解析之 后, 得到的只是一系列的梯形顶点坐标, 然后需要利用绘图工具进行填充处理, 以得到需要 的图像。
         现有填充技术中多采用 CUDA 进行填充, CUDA 是 NVIDIA 的 GPGPU 模型, 也就是通 用计算图形处理器, 它使用为大多数编程人员所知晓的 C 语言编程, 编写的程序直接在显 示芯片上执行, 从而避免学习像汇编这样底层开发语言或指令。
         在 CUDA 的架构下, 一个应用程序被分为两个部分执行, 一部分被分配在 CPU 上执 行, 也就是所谓的 Host 端 ; 另一部分被分配在 GPU 上运行, 也就是所谓的 Device 端, 又被称 为 Kernel。 而通常是在 Host 端准备好数据, 然后复制到 Device 端的全局存储器、 常数存储 器或纹理存储器中, 再由 GPU 执行 Device 端程序, 执行完的结果, 再拷贝到 Host 端的内存 中。
         在 CUDA 架构下, 一个 GPU 中含有数十个 TPC(Texture Processing Clusters), 每 个 TPC 中含有多个 SM (Streaming Multiprocessor) , 每个 SM 中有 8 个以上的 SP(Streaming Processor), 而 SP 就是最基本的处理单元。并且这些 SP 可以同时进行运算。
         在 CUDA 架 构 下, 显 示 芯 片 执 行 的 最 小 单 位 是 Thread, 数 个 Thread 组 成 一 个 Block, 一个 Block 中的 Thread 能存取同一块共享内存, 而且可以快速的进行同步动作。 执 行相同程序的 Block, 可以组成 Grid。
         采用传统的图形设备接口 GDI+ 绘图, 即使 GDI+ 可以让程序对图形界面的操作和 硬件设备隔绝开来, 但依然不能构造庞大的 GDI+ 内容, 在 gdi32.inc 文件中函数总量达到 300 多个, 与 GDI+ 相关的数据结构数量也十分庞大, 而且 CPU 即使采用了很好的作业调用 算法和中断抢断机制, 但其终究是基于时间片, 相对于某个时刻来说, 也只有一个作业在执 行。随着 GDSII 图像越来越复杂, 客户对曝光速度的要求越来越快, 采用传统的填充方法已 满足不了光刻系统的需求。本发明使用一种通用并行处理架构 (CUDA), 从而能够快速处理 图形图像, 以满足光刻机在光刻过程中对图像和速度的要求。 发明内容
         本发明的目的是提供一种基于 CUDA 的梯形填充方法, 以解决现有技术中采用 GDI绘图不能满足大量图形数据处理, 且使用时效率低下, 不够便捷的问题。
         为达到上述目的, 本发明采用的技术方案为 : 一种基于 CUDA 的梯形填充方法, 其特征在于包括以下步骤 : ①、 在 Host 端准备需要填充的位图图形, 设置位深、 颜色表, 分配并初始化内存单元 ; ②、 在 Host 端准备好需要的梯形顶点数据, 并保存在梯形点集里 ; ③、 把当前处理任务分配给一个 Grid, 根据位图图形的数量确定 Block 数量, 根据梯形 的数量确定 Thread 数量 ; ④、 通过 CUDA 提供接口函数, 在 Device 端的 Global Memory 分别分配位图图形和梯形 顶点数据所需的空间 ; ⑤、 将 Host 端的数据拷贝到 Device 端的内存中 ; ⑥、 启动 CUDA 多线程并行填充梯形 ; ⑦、 待处理完之后, 将 Device 端填充之后的数据, 拷贝到 Host 端, 即完成填充。
         所述的一种基于 CUDA 的梯形填充方法, 其特征在于 : 在步骤③中也可把任务分配 给多个 Grid 处理。
         所述的一种基于 CUDA 的梯形填充方法, 其特征在于 : 所述 Grid 由数个执行相同程 序的 Block 组成, 所述 Block 由数个 Thread 组成。
         本发明的有益效果为 : 本发明采用 CUDA 多线程并行填充梯形方法, 从而避免了利用 GDI 填充方法不能对大量 图形数据有效处理, 且由于 CPU 串行运行的限制而不能并行处理的问题, 因而本发明能够 有效地提升填充效率, 满足大量图形数据处理的需求。 附图说明 图 1 为本发明中 GPU 内部构造与 CPU 数据交互方式的示意图。
         图 2 为本发明中未填充之前 Block 内每个 Thread 分配的梯形及梯形最小外接矩 形的范围示意图。
         图 3 为每个 Block 内梯形完成填充后的状态示意图。
         具体实施方式
         如图 1、 图 2、 图 3 所示, 本发明包括以下步骤 : ①、 准备位图图形数据 : 根据需要, 可以选择单色、 8 位、 24 位或 32 位等位图, 对非 单色图, 设置其填充的初始灰度值。本实施例选择 8 位图, 填充的灰度值为一固定值。
         ②、 准备梯形顶点数据 : 对于每一张位图图形, 其需要填充的梯形可能不同, 将这 些梯形顶点坐标放在一个梯形顶点的结构体数组里, 为不同位图图形的梯形组分配不同大 小的内存空间, 并保存这些梯形顶点。
         ③、 分配 Block 和 Thread 数量 : 因为位图图形之间可以并行填充, 这样不会产生冲 突, 所以把每一个 Block 分配一个位图图形, 然后把这个位图图形需要填充的梯形分配给 该 Block 下的 Thread 进行处理。
         ④、 Device 端分配内存 : 利用 CUDA 提供的接口函数, 对 Device 端分配内存, 其大 小为 Host 端需要分配的内存大小。⑤、 将数据拷贝至 Device 端 : 利用 CUDA 提供的接口函数, 对步骤①和②分配的数 据进行拷贝, 使得这些数据复制到 GPU 的内存里。该内存可以是全局存储器, 也可以是常数 存储器。对于位图图形数据, 一般比较大, 放在全局存储区。
         ⑥、 启动 CUDA 核心函数进行填充 : 先把每一张位图图形所属的梯形顶点集拷贝到 共享存储区 ( 即图 1 中 Shared Memory), 然后使得每个线程分配一张位图图形 ( 如图 2), 比如说 : Thread0 填充 bmp0, Thread1 填充 bmp1, Thread2 填充 bmp2。准备就绪, 使得所有 线程都在同一起点, 也就是某个 Block 把其梯形顶点拷贝到其自己的共享存储区最晚结束 的时间, 然后开始启动填充, 每一个 Thread 都会先计算自己的四条边的斜率, 然后得到自 己的四条直线。根据四个顶点计算到一个最小外接矩形, 然后比较这个外接矩形内的坐标 点是否在梯形范围内, 如果在, 设置其灰度值。
         ⑦、 将数据拷贝到 Host 端 : 利用 CUDA 提供的接口函数, 拷贝 Device 填充好的数据 至 Host 端已经分配好的内存区。
         对于步骤①, 如果是单色图, 或者初始灰度值为 0 的图形, 则不需要将位图图形数 据在步骤⑤中拷贝至 GPU 内存中, 直接在 GPU 分配需要的同等大小的内存即可。
         对于步骤⑥, 把梯形顶点放在共享存储区 ( 即图 1 中 Shared Memory), 其目的是为 了在进行步骤⑥中的点与梯形边比较的频繁使用, 而共享存储区的特点是比较小, 存储速 度快。这样可以提高填充速度。 其中如果梯形顶点只有三个, 也可以填充 ; 包括梯形顶点有可能超出图形外围内 ( 如图 2 中梯形 4), 或为负值, 或大于位图宽高, 亦可以填充。对于相互重叠的梯形或梯形 最小外接矩形, 在填充时, 不需要考虑重叠部分, 只需要在其原有灰度的基础上, 添加需要 设置的灰度即可。
         在 CUDA 梯形填充处理中, 需要考虑位图图形和梯形数据的有效性和合理性, 对填 充过程, 合理化安排每个 Block 和 Thread 可使性能提升。
        

    关 键  词:
    一种 基于 CUDA 梯形 填充 方法
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:一种基于CUDA的梯形填充方法.pdf
    链接地址:https://www.zhuanlichaxun.net/p-4642062.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1