CN102110283B - 并行且矢量化的gilbert-johnson-keerthi图形处理 - Google Patents
并行且矢量化的gilbert-johnson-keerthi图形处理 Download PDFInfo
- Publication number
- CN102110283B CN102110283B CN201010618118.2A CN201010618118A CN102110283B CN 102110283 B CN102110283 B CN 102110283B CN 201010618118 A CN201010618118 A CN 201010618118A CN 102110283 B CN102110283 B CN 102110283B
- Authority
- CN
- China
- Prior art keywords
- data
- single instruction
- algorithm
- processor
- summit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 claims description 30
- 238000013139 quantization Methods 0.000 claims description 17
- 238000013507 mapping Methods 0.000 claims description 9
- 230000004087 circulation Effects 0.000 claims description 3
- 239000011159 matrix material Substances 0.000 claims 2
- 230000006870 function Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Processing (AREA)
- Image Generation (AREA)
- Multi Processors (AREA)
Abstract
可以在应用Gilbert-Johnson-Keerthi算法的单指令多数据处理器中使用并行且矢量化的数据结构。因此,在一些情形中可以增强多核处理器进行图形处理的性能。
Description
技术领域
本发明一般地涉及图形处理。
背景技术
图形处理是为了将电子数据显示在诸如计算机监视器或电视之类的显示屏上而对电子数据所作的处理。
Gilbert-Johnson-Keerthi(GJK)算法是由Elmer G.Gilbert、Daniel W.Johnson、和S.Sathiya Keerthi在1988年发明的。参见Gilbert,E.G.等人的“用于计算三维空间中复杂对象之间的距离的快速过程(A Fast Procedure forComputing the Distance Between Complex Objects in Three DimensionalSpace)”,IEEE机器人学及自动化期刊,1988年4月,第4卷第2期,199-203页。
GJK算法确定两个凸集之间的最小距离。凸集本质上是对对象的描绘。GJK算法使用这两个凸形的Minkowski和。平滑算法改进获得两个凸集A和B的最近的一对点。
附图说明
图1是对本发明的一个实施例的示意性描绘。
图2是对根据一个实施例使用的数据格式的描绘。
图3是对两个对象以及向这些对象应用GJK算法的描绘。
图4是本发明的一个实施例的流程图;以及
图5是一个实施例的系统描绘。
具体实施方式
参照图1,图形处理器核30可包括U管线32和V管线38。U管线32被耦合至矢量处理单元(VPU)34和算术逻辑单元(ALU)36。矢量处理单元34被耦合至通用寄存器(GPR)42(例如,16个通用寄存器乘以4个线程)和矢量寄存器(VXX)40(例如,32个矢量寄存器乘以4个线程)。在一些实施例中,硬件寄存器无需大到足以捕捉整个数据结构。
V管线38被耦合至算术逻辑单元36和16个通用寄存器42的32个矢量寄存器40。U管线32和V管线38的输入来自数据高速缓存47和对指令取出及挑选单元44进行馈给的指令高速缓存45。
数据高速缓存47接收来自各种处理单元34和36的输出,并在双向总线上向2级或即L2高速缓存48提供数据。L2高速缓存48通过环形总线46耦合至主存储器。时钟(CLX)单元49向数据高速缓存与L2高速缓存之间的总线以及L2高速缓存与环形总线之间的总线提供时钟信号。
图1中所示的处理器核30是单指令多数据(SIMD)处理器。它使用SIMD加载/存储指令。由于该操作是基于512位或即16个元素的SIMD宽度,所以它在如果数据被矢量化或对准以使得数据结构的起始地址在作为SIMD宽度的倍数的地址开始的情况下运行最为高效。因此,在上述具有32个矢量寄存器的示例中,SIMD宽度是16个元素或即512位。由此希望数据结构的地址以4、16、以及最优地以64的倍数开始。
有利地,SIMD处理器核30用矢量化或经对准数据来工作。在一些实施例中,该处理器通过高效地利用SIMD硬件以开发利用数据级并行性来改善性能。因此,“经对准的、矢量化的”数据是指对于并行SIMD架构而言高效的数据结构,因为它们的起始地址是执行SIMD处理器的宽度的倍数。在一个实施例中,这些寄存器是512位宽的SIMD寄存器。
参照图2,描绘了在SIMD宽度为16个元素的一个实施例中使用的数据结构。当然,可以利用其他宽度,但可使用类似原理来使数据与SIMD宽度对准。图2中所示的数据存储结构包含用于支持映射函数、局部坐标系的位置和旋转的初始分开的轴、凸集中的点数、以及每个点的位置。然而,本发明并不限于被表示为顶点集的凸包的凸形。
图2中所示的数据结构试图以经对准的、矢量化的方式来布局必要信息。第一行中的N是指每一列中的对象A和B中的顶点数目,而X、Y、和Z是三维空间中表示对象A和B的顶点坐标元组。第2、3、和4行中的X1-X16、Y1-Y16、和Z1-Z16变量代表分开的轴,它们构成关于局部坐标系的方向矢量。自第5行往后涉及16个对象的顶点。每个顶点使用其X、Y和Z坐标值来表示。X、Y和Z元组的数目与对象中顶点的数目相同。在SIMD宽度为16的情况下,这些数据结构在此实施例中为16个元素宽。
参照图3,描绘了记为A和B的两个对象。这些对象包围凸集(未示出),该凸集可以是定义起来比实为围绕凸集的有效限界框的对象更复杂的结构。在图中指出了对象A与对象B之间的最小距离。
“凸”是指由图3中的对象A和B所描绘的边界以内的物体的实际形状。每个顶点的由X、Y、和Z坐标构成的点集包围该凸对象。
根据一些实施例,GJK算法被适配成对适用于诸如图1中所描绘的多核并行处理器的经对准的、矢量化的数据进行操作。就这点而言,数据是关于此类处理器的SIMD宽度来矢量化或对准的。
图4中示出了根据一个实施例的用于应用GJK算法的序列。序列139可在软件、硬件、或固件中实现。在软件实现的实施例中,该序列可由存储在诸如磁、光学、或半导体存储设备之类的计算机可读介质中的指令实现。这些指令可由合适的处理器、控制器或计算机执行,包括图1中所示类型的图形处理器核、或包括使用单指令多数据架构并行地对多个线程进行操作的能力的通用处理器。
因此,如在框10处所示,最初,制备经对准的、矢量化的数据。接着,使用迭代的矢量化GJK算法处理该数据以计算这两个对象A与B之间的最小距离。该矢量化支持映射是在完全矢量化的GJK实现的上下文中实现的。这些指令使得能够通过被掩操作的帮助来实现分支避免。在一个实施例中,任何“if-else”语句都能使用被掩操作被表达为线性代码。
在一个实施例中,矢量化GJK算法仅包含两个循环。在框12所指示的第一循环支持映射函数。此循环处理给定集合中所有的点。在框14中指示的第二循环重复该算法直至算法中的最优点(即,对象之间的最短距离)被标识出来。
该算法的伪代码使用对象A和B的A和B集合的Minkowski和。因此,这两个对象的和得到它们的组合。即,A+B={a+b:对于A中的a,B中的b}。A和B集合的Minkowski差是新集合:A-B={a-b:对于A中的a,B中的b}=A+(-B)。CH(S)标示S个顶点的凸包。
该算法的输入是集合A和B的Minkowski差的凸包,即M。首先,从M中选取任意的单形体Q。然后,计算Q顶点的凸包中离原点最近的点P。若P就是该原点,则退出。在这样的情形中,返回零。
否则,Q被约化至Q的使得P落在Q′顶点的凸包中的最小子集Q′。然后V等于对沿给定的-P方向上最远的顶点的支持映射计算(Sc),该最远顶点就是方向-P上的支持点。如果V在方向-P上不再比P自身更极端,则可退出并返回||P||。接着,将V添加到Q并随后返回以计算Q顶点的凸包中离原点最近的点P。
在一些实施例中,此矢量化办法使得能够采用SIMD单元并同时使用多线程处理器能力来处理集合对。在一些实施例中,可在多核处理器中实现显著的性能提高。通过处理具有相同点数的集合可以实现最大的性能提升。在此情形中,存储器利用率最为有效。对于游戏,这是最有可能的估计,因为即使是复杂体也不过有几十个顶点。
图5中所示的计算机系统130可包括由总线104耦合到芯片组核心逻辑110的硬盘驱动器134和可移动介质136。键盘和鼠标120、或其他常规组件可经由总线108耦合至该芯片组核心逻辑。在一个实施例中,该核心逻辑可以经由总线105耦合到图形处理器112,并且耦合到主处理器或主机处理器100。图形处理器112还可以通过总线106耦合到帧缓冲器114。帧缓冲器114可通过总线107耦合至显示屏118。在一个实施例中,图形处理器112可以是使用SIMD架构的多线程多核并行处理器。
在软件实现的情况下,有关代码可以存储在任何合适的半导体、磁性或光学存储器中,包括主存储器132或图形处理器内的任何可用存储器。因此,在一个实施例中,用于执行图4的序列139的代码可被存储在诸如存储器132或图形处理器112之类的机器或计算机可读介质中,并且在一个实施例中可由处理器100或图形处理器112执行。在一个实施例中,核心30是图形处理器112的部分。
本文描述的技术适用于包括两维、三维、和更高维表面的任何凸对象。尽管在上述实施例中使用线性时间算法来计算支持映射,但也可使用其他算法。
此处所描述的图形处理技术可以在各种硬件架构中实现。例如,图形功能可以集成在芯片组中。另选地,可以使用分立的图形处理器。作为另一实施例,图形功能可以由通用处理器、包括多核处理器来实现。
在本说明书通篇中对“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构或特性包括在本发明内所涵盖的至少一个实现中。因此,短语“一个实施例”或“在实施例中”的出现不一定引用相同实施例。此外,这些特定特征、结构、或特性可以不同于所解说的特定实施例的其他合适形式来施行,并且所有这样的形式都可被涵盖在本申请的权利要求之内。
尽管本发明参照有限的几个实施例予以描述,但是本领域的技术人员将会从其中意识到许多改变和变型。所附权利要求旨在覆盖所有此类改变和变型,只要其落于本发明的实质精神和范围内。
Claims (7)
1.一种用于图形处理的方法,包括:
制备经对准的、矢量化的数据;
使用迭代的矢量化Gilbert-Johnson-Keerthi算法处理所述数据以确定三维空间中的两个对象之间的最小距离,所述处理所述数据仅包含两个循环,其中第一循环支持映射函数且处理给定集合中所有的点,而第二循环重复所述算法直至所述两个对象之间的最小距离被标识出来;
使用单指令多数据处理器;
将所述数据与单指令多数据处理器的单指令多数据宽度对准;以及
将所述数据布局成矩阵,其中第一行包括顶点数目,第二、第三和第四行指示分开的轴,并且其余的行指示等于所述单指令多数据宽度的数目个对象的顶点。
2.如权利要求1所述的方法,其特征在于,包括执行第一循环以支持映射函数。
3.如权利要求1所述的方法,其特征在于,包括重复应用所述算法直至找到最优点。
4.如权利要求1所述的方法,其特征在于,包括在多核并行处理器上运行所述算法。
5.一种用于图形处理的设备,包括:
用于制备经对准的、矢量化的数据的装置;
用于使用迭代的矢量化Gilbert-Johnson-Keerthi算法处理所述数据以确定三维空间中的两个对象之间的最小距离的装置,所述用于处理所述数据的装置包含用于执行仅仅两个循环的装置,其中第一循环支持映射函数且处理给定集合中所有的点,而第二循环重复所述算法直至所述两个对象之间的最小距离被
标识出来;
用于使用单指令多数据处理器的装置用于使用单指令多数据处理器的装置;
用于将所述数据与所述单指令多数据处理器的单指令多数据处理器宽度对准的装置;以及
用于将所述数据布局成矩阵的装置,其中第一行包括顶点数目,第二、第三和第四行包括分开的轴,并且其余的行指示等于所述单指令多数据宽度的数目个对象的顶点。
6.如权利要求5所述的设备,其特征在于,还包括用于执行第一循环以支持映射函数的装置。
7.如权利要求5所述的设备,其特征在于,还包括用于重复应用所述算法直至找到最优点的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/645,892 | 2009-12-23 | ||
US12/645,892 US8564601B2 (en) | 2009-12-23 | 2009-12-23 | Parallel and vectored Gilbert-Johnson-Keerthi graphics processing |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102110283A CN102110283A (zh) | 2011-06-29 |
CN102110283B true CN102110283B (zh) | 2014-12-10 |
Family
ID=43531607
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010618118.2A Expired - Fee Related CN102110283B (zh) | 2009-12-23 | 2010-12-22 | 并行且矢量化的gilbert-johnson-keerthi图形处理 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8564601B2 (zh) |
KR (1) | KR20110073361A (zh) |
CN (1) | CN102110283B (zh) |
DE (1) | DE102010053559A1 (zh) |
GB (1) | GB2476550B (zh) |
TW (1) | TWI508023B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104137052A (zh) * | 2011-12-23 | 2014-11-05 | 英特尔公司 | 用于选择向量计算的元素的装置和方法 |
EP2701090A1 (en) * | 2012-08-22 | 2014-02-26 | Aahlstö OÜ | Method and system for enforcing 3D restricted rights in a rapid manufacturing and prototyping environment |
US10423693B2 (en) * | 2014-09-15 | 2019-09-24 | Autodesk, Inc. | Parallel processing using a bottom up approach |
JP6563358B2 (ja) * | 2016-03-25 | 2019-08-21 | 日立オートモティブシステムズ株式会社 | 画像処理装置及び画像処理方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5933650A (en) * | 1997-10-09 | 1999-08-03 | Mips Technologies, Inc. | Alignment and ordering of vector elements for single instruction multiple data processing |
CN1326566A (zh) * | 1998-11-20 | 2001-12-12 | Arm有限公司 | 对多个带符号的数据值执行算术运算的数据处理系统和方法 |
US7129951B2 (en) * | 2004-05-06 | 2006-10-31 | Valve Corporation | Method and system for performing speculative collisions for a video game |
CN101572693A (zh) * | 2008-04-29 | 2009-11-04 | 国际商业机器公司 | 用于并行模式匹配的设备和方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5596686A (en) * | 1994-04-21 | 1997-01-21 | Silicon Engines, Inc. | Method and apparatus for simultaneous parallel query graphics rendering Z-coordinate buffer |
US7197625B1 (en) | 1997-10-09 | 2007-03-27 | Mips Technologies, Inc. | Alignment and ordering of vector elements for single instruction multiple data processing |
US7961194B2 (en) * | 2003-11-19 | 2011-06-14 | Lucid Information Technology, Ltd. | Method of controlling in real time the switching of modes of parallel operation of a multi-mode parallel graphics processing subsystem embodied within a host computing system |
US7475392B2 (en) | 2004-06-07 | 2009-01-06 | International Business Machines Corporation | SIMD code generation for loops with mixed data lengths |
US7788071B2 (en) * | 2004-12-03 | 2010-08-31 | Telekinesys Research Limited | Physics simulation apparatus and method |
JP4192976B2 (ja) * | 2006-08-02 | 2008-12-10 | ソニー株式会社 | 接触形状算出装置及び接触形状算出方法、並びにコンピュータ・プログラム |
US7856627B2 (en) | 2006-08-08 | 2010-12-21 | International Business Machines Corporation | Method of SIMD-ization through data reshaping, padding, and alignment |
-
2009
- 2009-12-23 US US12/645,892 patent/US8564601B2/en not_active Expired - Fee Related
-
2010
- 2010-12-03 TW TW099142114A patent/TWI508023B/zh not_active IP Right Cessation
- 2010-12-06 DE DE102010053559A patent/DE102010053559A1/de not_active Withdrawn
- 2010-12-07 GB GB1020736.3A patent/GB2476550B/en not_active Expired - Fee Related
- 2010-12-22 CN CN201010618118.2A patent/CN102110283B/zh not_active Expired - Fee Related
- 2010-12-22 KR KR1020100132748A patent/KR20110073361A/ko active Search and Examination
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5933650A (en) * | 1997-10-09 | 1999-08-03 | Mips Technologies, Inc. | Alignment and ordering of vector elements for single instruction multiple data processing |
CN1326566A (zh) * | 1998-11-20 | 2001-12-12 | Arm有限公司 | 对多个带符号的数据值执行算术运算的数据处理系统和方法 |
US7129951B2 (en) * | 2004-05-06 | 2006-10-31 | Valve Corporation | Method and system for performing speculative collisions for a video game |
CN101572693A (zh) * | 2008-04-29 | 2009-11-04 | 国际商业机器公司 | 用于并行模式匹配的设备和方法 |
Also Published As
Publication number | Publication date |
---|---|
US8564601B2 (en) | 2013-10-22 |
GB2476550A (en) | 2011-06-29 |
KR20110073361A (ko) | 2011-06-29 |
CN102110283A (zh) | 2011-06-29 |
TWI508023B (zh) | 2015-11-11 |
DE102010053559A1 (de) | 2012-03-15 |
GB201020736D0 (en) | 2011-01-19 |
GB2476550B (en) | 2013-10-30 |
TW201135665A (en) | 2011-10-16 |
US20110153996A1 (en) | 2011-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11074717B2 (en) | Detecting and estimating the pose of an object using a neural network model | |
US10467763B1 (en) | System and method for optical flow estimation | |
US20220270319A1 (en) | Apparatus and method for reduced precision bounding volume hierarchy construction | |
EP3561738A1 (en) | Machine learning accelerator architecture | |
US20220067513A1 (en) | Efficient softmax computation | |
CN113383310A (zh) | 矩阵加速器架构内的脉动分解 | |
CN108874744A (zh) | 矩阵乘积累加运算的广义加速 | |
Banz et al. | Real-time semi-global matching disparity estimation on the GPU | |
US20140123147A1 (en) | System, method, and computer program product for parallel reconstruction of a sampled suffix array | |
Wang et al. | Workload analysis and efficient OpenCL-based implementation of SIFT algorithm on a smartphone | |
De La AsuncióN et al. | An MPI-CUDA implementation of an improved Roe method for two-layer shallow water systems | |
CN101398753A (zh) | 用于执行扫描运算的系统、方法及计算机程序产品 | |
CN112446815A (zh) | 稀疏矩阵乘法加速机制 | |
EP3678037A1 (en) | Neural network generator | |
Wynters | Parallel processing on NVIDIA graphics processing units using CUDA | |
US11010963B2 (en) | Realism of scenes involving water surfaces during rendering | |
US10706609B1 (en) | Efficient data path for ray triangle intersection | |
CN102110283B (zh) | 并行且矢量化的gilbert-johnson-keerthi图形处理 | |
CN113892116A (zh) | 用于噪声图像超分辨的自适应深度学习模型 | |
CN103914804A (zh) | 用于分块式延期着色的系统、方法和计算机程序产品 | |
Li et al. | Efficient parallel optimizations of a high-performance SIFT on GPUs | |
CN111798555A (zh) | 用于降低精度的包围体层次构造的设备和方法 | |
WO2018044437A1 (en) | Mechanism to increase thread parallelism in a graphics processor | |
Avril et al. | Collision detection: Broad phase adaptation from multi-core to multi-GPU architecture | |
KR20210058649A (ko) | 내적 곱셈기 메커니즘 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20141210 Termination date: 20181222 |
|
CF01 | Termination of patent right due to non-payment of annual fee |