Month: March 2013

CUDA 5: Enabling Dynamic Parallelism

Posted on Updated on

I finally got a GPU capable of dynamic parallelism, so I finally decided to mess around with CUDA 5.  But I discovered a couple of configuration options that are required if you want to enable dynamic parallelism.  You’ll know you haven’t configured things correctly if you attempt to call a kernel from the device and you get the following error message:

ptxas : fatal error : Unresolved extern function ‘cudaGetParameterBuffer’

Note: this assume you have already selected the appropriate CUDA 5 build customizations for your project

Open the project project properties

  1. Make sure to set “Generate Relocatable Device Code” to “Yes (-rdc=true)”yes
  2. Set “code generation” to compute_35,sm_3″compute
  3. Finally add “cudadevrt.lib” to the CUDA Linker’s “Additional Dependencies”cudadevrt

Hybrid Computational Voxelization Using the Graphics Pipeline

Posted on Updated on

dragonForward

Got a paper published in the Journal of Computer Graphics Techniques, see it here

This paper presents an efficient computational voxelization approach that utilizes the graphics pipeline. Our approach is hybrid in that it performs a precise gap-free computational voxelization, employs fixed-function components of the GPU, and utilizes the stages of the graphics pipeline to improve parallelism. This approach makes use of the latest features of OpenGL and fully supports both conservative and thin-surface voxelization. In contrast to other computational voxelization approaches, our approach is implemented entirely in OpenGL and achieves both triangle and fragment parallelism through its use of geometry and fragment shaders. By exploiting features of the existing graphics pipeline, we are able to rapidly compute accurate scene voxelizations in a manner that integrates well with existing OpenGL applications, is robust across many different models, and eschews the need for complex work/load-balancing schemes.