traytracer.tex - sphere - GPU-based 3D discrete element method algorithm with optional fluid coupling
HTML git clone git://src.adamsgaard.dk/sphere
DIR Log
DIR Files
DIR Refs
DIR LICENSE
---
traytracer.tex (22003B)
---
1 \documentclass[journal]{IEEEtran}
2
3
4 \ifCLASSINFOpdf
5 \usepackage[pdftex]{graphicx}
6 \else
7 \usepackage[dvips]{graphicx}
8 \fi
9
10 \usepackage{color}
11
12 \usepackage{url}
13 %\usepackage{showkeys}
14 \usepackage{siunitx}
15
16 % correct bad hyphenation here
17 \hyphenation{op-tical net-works semi-conduc-tor}
18
19 \definecolor{DarkGreen}{rgb}{0,0.45,0.08}
20 \usepackage{listings}
21 \lstset{language=C++,breaklines=true,breakatwhitespace=true,basicstyle=\small,prebreak = \raisebox{0ex}[0ex][0ex]{\ensuremath{\hookleftarrow}}, commentstyle=\color{DarkGreen}, tabsize=4}
22
23
24 \begin{document}
25 \title{CUDA raytracing algorithm for visualizing\\ discrete element model output}
26
27 \author{Anders Damsgaard Christensen,~\IEEEmembership{20062213}
28 \thanks{Contact: {anders.damsgaard@geo.au.dk}}%
29 \thanks{Webpage: {http://users-cs.au.dk/adc}}%
30 \thanks{Manuscript, last revision: \today.}}
31
32 % The paper headers
33 \markboth{Data Parallel Computing 2011}{Christensen: CUDA raytracing algorithm for visualizing DEM output}
34
35 % make the title area
36 \maketitle
37
38
39 \begin{abstract}
40 %\boldmath
41 A raytracing algorithm is constructed using the CUDA API for visualizing output from a CUDA discrete element model, which outputs spatial information in dynamic particle systems.
42 The raytracing algorithm is optimized with constant memory and compilation flags, and performance is measured as a function of the number of particles and the number of pixels. The execution time is compared to equivalent CPU code, and the speedup under a variety of conditions is found to have a mean value of 55.6 times.
43 \end{abstract}
44 \begin{IEEEkeywords}
45 CUDA, discrete element method, raytracing
46 \end{IEEEkeywords}
47
48
49 \IEEEpeerreviewmaketitle
50
51
52 \section{Introduction}
53 \IEEEPARstart{V}{isualizing} systems containing many spheres using traditional object-order graphics rendering can often result in very high computational requirements, as the usual automated approach is to construct a meshed surface with a specified resolution for each sphere. The memory requirements are thus quite high, as each surface will consist of many vertices. Raytracing \cite{Whitted:1980} is a viable alternative, where spheric entities are saved as data structures with a centre coordinate and a radius. The rendering is performed on the base of these values, which results in a perfectly smooth surfaced sphere. To accelerate the rendering, the algorithm is constructed utilizing the CUDA API \cite{Nvidia-1:2010}, where the problem is divided into $n\times m$ threads, corresponding to the desired output image resolution. Each thread iterates through all particles and applies a simple shading model to determine the final RGB values of the pixel.
54
55 Previous studies of GPU or CUDA implementations of ray tracing algorithms reported major speedups, compared to corresponding CPU applications (e.g. \cite{Horn:2007,Shih:2009,Popov:2007,Luebke:2008}). None of the software was however found to be open-source and GPL licensed, so a simple raytracer was constructed, customized to render particles, where the data was stored in a specific data format.
56
57 \subsection{Discrete Element Method}
58 The input particle data to the raytracer is the output of a custom CUDA-based Discrete Element Method (DEM) application currently in development. The DEM model is used to numerically simulate the response of a drained, soft, granular sediment bed upon normal stresses and shearing velocities similar to subglacial environments under ice streams \cite{Evans:2006}. In contrast to laboratory experiments on granular material, the discrete element method \cite{Cundall:1979} approach allows close monitoring of the progressive deformation, where all involved physical parameters of the particles and spatial boundaries are readily available for continuous inspection.
59
mx1.adamsgaard.dk:70 /src/sphere/file/doc/raytracer/raytracer.tex.gph:69: line too long