KD-tree比赛题目CUDA

  • 格式:doc
  • 大小:35.00 KB
  • 文档页数:1

2011年CUDA校园程序设计大赛命题2
基于CUDA的K-D树构建与遍历
K-D树是一种典型的数据结构,用来作为数据组织的一种方式,在计算机图形学中多用来组织几何场景数据,即对场景中的三角形进行重新组织,以帮助加速全局光照明算法的计算,也可用来加速碰撞检测算法,粒子邻居搜索等。

在图像上,也有用K-D树结构来对像素进行压缩存储。

该数据结构在去年的CUDA校园程序设计大赛中已经有部分同学开始使用来加速光线求解计算,并取得不错的成绩。

今年重点展示KD树本身的构建与遍历的加速特性。

由于原始的KD树构建是一个递归过程,在GPU上需要将该递归算法转化为非递归的过程。

本题要求:
借助CUDA完成KD树在GPU上的表达,构建,遍历等操作。

并给出KD树的应用实例,比如光线跟踪,或者粒子搜索。

由于KD树本身是一种通用的数据结构,希望参赛同学能够设计一种GPU上通用的KD树的数据结构,而且最好能支持动态的KD树创建与维护,即场景发生改变或者粒子位置出现变化后,KD树需要相应的改变。

测试:数据可以是二维点,也可以是三维点,或者是三角形,需要程序同时支持,即要求在程序上提供一定的灵活性。

如果需要提供统一的性能评估比较,那么就采用随机点来进行评估,由于KD树本身的原因,有可能不同的人构造出来的树不一样,这时如何评判是一个问题。

目前暂时可通过整体应用的情况来评判KD树的效率,即针对某种具体的应用,统计KD 树的构造和遍历时间,相对于CPU同样的构建方法的加速比。

参考文献:
Kun Zhou, Qiming Hou, Rui Wang, Baining Guo.Real-Time KD-Tree Construction on Graphics Hardware. ACM Transactions on Graphics (SIGGRAPH Asia 2008),
Daniel Horn, Jeremy Sugerman, Mike Houston, Pat Hanrahan. Interactive k-D Tree GPU Raytracing, I3D 2007
/wiki/Kd-tree。